《大數(shù)據(jù)運(yùn)營》數(shù)據(jù)采集、存儲以及處理技術(shù)_第1頁
《大數(shù)據(jù)運(yùn)營》數(shù)據(jù)采集、存儲以及處理技術(shù)_第2頁
《大數(shù)據(jù)運(yùn)營》數(shù)據(jù)采集、存儲以及處理技術(shù)_第3頁
《大數(shù)據(jù)運(yùn)營》數(shù)據(jù)采集、存儲以及處理技術(shù)_第4頁
《大數(shù)據(jù)運(yùn)營》數(shù)據(jù)采集、存儲以及處理技術(shù)_第5頁
已閱讀5頁,還剩99頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

數(shù)據(jù)采集、存儲以及處理技術(shù)本章知識點(diǎn)(1)Flume數(shù)據(jù)采集軟件的安裝與基本使用。(2)Hive數(shù)據(jù)倉庫的安裝以及Hive數(shù)據(jù)類型和常用表操作。(3)Hadoop集群的安裝與分布式文件系統(tǒng)HDFS的基本原理、常用命令。01Flume數(shù)據(jù)采集技術(shù)02HDFS數(shù)據(jù)存儲技術(shù)03Hive數(shù)據(jù)倉庫技術(shù)04大數(shù)據(jù)處理技術(shù)應(yīng)用PART01Flume數(shù)據(jù)采集技術(shù)Flume安裝Flume下載地址:/dist/flume/1.8.0/1.上傳安裝包本次我們安裝的是FlumeNg1.8版本的Flume。首先,需要將Flume的安裝包上傳到node1節(jié)點(diǎn)上的/usr/local/src目錄中Flume安裝2.解壓安裝包將Flume安裝包解壓到node1節(jié)點(diǎn)的/usr/local目錄下,代碼如下。[root@node1~]#cd/usr/local/src/[root@node1src]#tarzxfapache-flume-1.8.0-bin.tar.gz-C/usr/local/[root@node1src]#cd/usr/local/[root@node1local]#ls-ltotal0drwxr-xr-x7rootroot187Jun1022:39apache-flume-1.8.0-bindrwxr-xr-x.2rootroot6Nov52016bindrwxr-xr-x.2rootroot6Nov52016etcdrwxr-xr-x.2rootroot6Nov52016gamesdrwxr-xr-x1220415101183Jun800:38hadoop-2.7.4drwxr-xr-x.2rootroot6Nov52016includedrwxr-xr-x810143255Jul222017jdk1.8drwxr-xr-x.2rootroot6Nov52016libdrwxr-xr-x.2rootroot6Nov52016lib64drwxr-xr-x.2rootroot6Nov52016libexecdrwxr-xr-x.2rootroot6Nov52016sbindrwxr-xr-x.5rootroot49Apr92020sharedrwxr-xr-x.2rootroot104Jun1022:35src[root@node1local]#然后,修改Flume目錄的名稱,以方便與我們接下來的操作,代碼如下。[root@node1local]#mvapache-flume-1.8.0-bin/flume1.8[root@node1local]#ls-ltotal0drwxr-xr-x.2rootroot6Nov52016bindrwxr-xr-x.2rootroot6Nov52016etcdrwxr-xr-x7rootroot187Jun1022:39flume1.8drwxr-xr-x.2rootroot6Nov52016gamesdrwxr-xr-x1220415101183Jun800:38hadoop-2.7.4drwxr-xr-x.2rootroot6Nov52016includedrwxr-xr-x810143255Jul222017jdk1.8drwxr-xr-x.2rootroot6Nov52016libdrwxr-xr-x.2rootroot6Nov52016lib64drwxr-xr-x.2rootroot6Nov52016libexecdrwxr-xr-x.2rootroot6Nov52016sbindrwxr-xr-x.5rootroot49Apr92020sharedrwxr-xr-x.2rootroot104Jun1022:35src[root@node1local]#Flume安裝3.修改Flume配置文件Flume安裝只需要修改conf/flume-env.sh文件即可,不過需要先對flume-env.sh文件進(jìn)行更名操作,代碼如下。修改文件名稱成功之后,對flume-env.sh文件進(jìn)行編輯,只需要修改文件中的JAVA_HOME地址(第22行)即可,代碼如下。[root@node1~]#cd/usr/local/flume1.8/conf/[root@node1conf]#mvflume-env.sh.templateflume-env.sh[root@node1conf]#root@node1conf]#viflume-env.sh…#Enviromentvariablescanbesethere.exportJAVA_HOME=/usr/local/jdk1.8…"flume-env.sh"34L,1558Cwritten[root@node1conf]#Flume安裝4.配置環(huán)境變量將Flume信息寫入環(huán)境變量文件/etc/profile中,并刷新環(huán)境變量,代碼如下。到這里,F(xiàn)lume就安裝成功了,可以通過“flume-ngversion”驗(yàn)證是否安裝成功,如圖所示。[root@node1~]#vi/etc/profile#/etc/profile…exportJAVA_HOME=/usr/local/jdk1.8exportPATH=$PATH:$JAVA_HOME/binexportCLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarexportHADOOP_HOME=/usr/local/hadoop-2.7.4exportPATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbinexportFLUME_HOME=/usr/local/flume1.8exportPATH=$PATH:$FLUME_HOME/bin"/etc/profile"83L,2097Cwritten[root@node1~]#source/etc/profile[root@node1~]#Flume數(shù)據(jù)采集Flume采集數(shù)據(jù)的核心角色是Agent,每一個Agent都是由Source、Channel、Sink組成??梢愿鶕?jù)不同的應(yīng)用場景,來選擇不同的Source、Channel和Sink,在Flume官網(wǎng)中,提供了不同Source、Channel和Sink的配置方式與詳細(xì)說明,如圖所示。官網(wǎng)說明地址:/releases/content/1.8.0/FlumeUserGuide.html每一個Source、Channel和Sink,都會有多條配置項(xiàng),可以根據(jù)實(shí)際業(yè)務(wù)需求,來配置不同的Agent,下面一起來了解一下常用Agent的配置方式。Flume數(shù)據(jù)采集服務(wù)器的某特定目錄下,會不斷產(chǎn)生新的文件,每當(dāng)有新文件出現(xiàn),就需要把文件采集到HDFS中去。此場景需要用到“spooldirSource”與“hdfsSink”,Channel選用的是“memoryChannel”。在node1節(jié)點(diǎn)/usr/local/flume1.8/conf目錄下新增配置文件spoolDirFile2HDFS.conf,并寫入Agent信息,代碼如下。1.采集目錄[root@node1~]#cd/usr/local/flume1.8/conf/[root@node1conf]#vispoolDirFile2HDFS.conf#定義agent名,source、channel、sink的名稱a1.sources=r1a1.channels=c1a1.sinks=k1#具體定義sourcea1.sources.r1.type=spooldira1.sources.r1.spoolDir=/root/flume/a1.sources.r1.fileHeader=true#具體定義channela1.channels.c1.type=memorya1.channels.c1.capacity=10000a1.channels.c1.transactionCapacity=100#具體定義sinka1.sinks.k1.type=hdfs#HDFS目錄a1.sinks.k1.hdfs.path=hdfs://node1:9000/flume#filePrefix:文件的前綴a1.sinks.k1.hdfs.filePrefix=ms-#定義文件的類型為:DataStream,也就是純文本a1.sinks.k1.hdfs.fileType=DataStream#數(shù)據(jù)暫存在內(nèi)存中,滿足任何一個條件就flush成一個小文件。#不按照條數(shù)生成文件a1.sinks.k1.hdfs.rollCount=0#HDFS上的文件達(dá)到32M時生成一個文件a1.sinks.k1.hdfs.rollSize=33554432#HDFS上的文件達(dá)到60秒生成一個文件a1.sinks.k1.hdfs.rollInterval=60#組裝source、channel、sinka1.sources.r1.channels=c1a1.sinks.k1.channel=c1"spoolDirFile2HDFS.conf"[New]34L,1004Cwritten[root@node1conf]#Flume數(shù)據(jù)采集Flume讀取到spoolDirFile2HDFS.conf文件之后,便會監(jiān)控node節(jié)點(diǎn)的“/root/flume”目錄,會將該目錄下的文件采集到HDFS上的Flume目錄中去,但是需要提前把數(shù)據(jù)采集的目錄創(chuàng)建好,否則在Agent啟動的時候會報錯,代碼如下。1.采集目錄[root@node1~]#mkdir-p/root/flume[root@node1~]#ls-ltotal0drwxr-xr-x2rootroot6Jun1301:52flume[root@node1~]#hdfsdfs-mkdir/flume[root@node1~]#hdfsdfs-ls/Found1itemsdrwxr-xr-x-rootsupergroup02021-06-1301:53/flume[root@node1~]#目錄創(chuàng)建完成之后,便可以啟動FlumeAgent了,啟動命令代碼如下[root@node1~]#flume-ngagent-na1-cconf-f$FLUME_HOME/conf/spoolDirFile2HDFS.conf-Dflume.root.logger=INFO,consoleFlume數(shù)據(jù)采集在啟動Agent之后,便會在控制臺打印FlumeAgent啟動信息,會說明Agent的啟動情況,出現(xiàn)如圖信息,說明Flume已經(jīng)啟動成功了。1.采集目錄Flume數(shù)據(jù)采集這時候,F(xiàn)lume已經(jīng)開始監(jiān)控“/root/flume”目錄了,會將該目錄下的文件都采集到HDFS上“/flume”目錄中去??梢孕麓蜷_一個node1會話終端,通過“echo”命令往“/root/flume”目錄中寫入幾個文件來驗(yàn)證下Flume是否可以成功將數(shù)據(jù)采集到HDFS,代碼如下,可以查看到文件已經(jīng)被采集到HDFS上了,被采集過的文件會在文件名之后追加“.COMPLETED”后綴,以為保證每個文件只會被采集一次。1.采集目錄[root@node1~]#echohelloflume>/root/flume/test.txt[root@node1~]#echonihao,flume>/root/flume/test2.txt[root@node1~]#ls-l/root/flume/total8-rw-r--r--1rootroot12Jun1302:08test2.txt.COMPLETED-rw-r--r--1rootroot12Jun1302:08test.txt.COMPLETED[root@node1~]#Agent控制臺,也會打印出采集數(shù)據(jù)的具體日志信息,如圖所示。Flume數(shù)據(jù)采集這時候,數(shù)據(jù)已經(jīng)采集完成了,可以到HDFS上驗(yàn)證一下采集的數(shù)據(jù),代碼如下,可以看到我們之前通過echo命令寫入的文件數(shù)據(jù)已經(jīng)被采集到HDFS上的“/flume/ms-.1623521303884”文件中了。1.采集目錄[root@node1~]#hdfsdfs-ls/flumeFound1items-rw-r--r--3rootsupergroup242021-06-1302:09/flume/ms-.1623521303884[root@node1~]#hdfsdfs-cat/flume/ms-.1623521303884helloflumenihao,flume[root@node1~]#Flume數(shù)據(jù)采集在某一個業(yè)務(wù)系統(tǒng)中,會使用log4j持續(xù)生成日志信息,日志內(nèi)容不斷增加,這時候就需要把追加到日志文件中的數(shù)據(jù)實(shí)時采集到HDFS。此場景需要用到“execSource”與“hdfsSink”,Channel選用的是“memoryChannel”。在node1節(jié)點(diǎn)/usr/local/flume1.8/conf目錄下新增配置文件tailFile2HDFS.conf,并寫入Agent信息,代碼如下。2.采集文件[root@node1~]#cd/usr/local/flume1.8/conf/[root@node1conf]#vitailFile2HDFS.conf#Namethecomponentsonthisagenta1.sources=r1a1.sinks=k1a1.channels=c1#Describe/configurethesourcea1.sources.r1.type=mand=tail-F/root/logs/test.loga1.sources.r1.channels=c1#Describethesinka1.sinks.k1.type=hdfsa1.sinks.k1.hdfs.path=hdfs://node1:9000/logs/tailout/%y-%m-%d/%H%M/a1.sinks.k1.hdfs.filePrefix=events-a1.sinks.k1.hdfs.round=truea1.sinks.k1.hdfs.roundValue=10a1.sinks.k1.hdfs.roundUnit=minutea1.sinks.k1.hdfs.rollInterval=3a1.sinks.k1.hdfs.rollSize=20a1.sinks.k1.hdfs.rollCount=5a1.sinks.k1.hdfs.batchSize=1a1.sinks.k1.hdfs.useLocalTimeStamp=true#生成的文件類型,默認(rèn)是Sequencefile,可用DataStream,則為普通文本a1.sinks.k1.hdfs.fileType=DataStream#Useachannelwhichbufferseventsinmemorya1.channels.c1.type=memorya1.channels.c1.capacity=1000a1.channels.c1.transactionCapacity=100#Bindthesourceandsinktothechannela1.sources.r1.channels=c1a1.sinks.k1.channel=c1"tailFile2HDFS.conf"[New]30L,1014Cwritten[root@node1conf]#Flume數(shù)據(jù)采集Flume讀取到tailFile2HDFS.conf文件之后,便會監(jiān)控node節(jié)點(diǎn)的“/root/logs/test.log”文件,會將該文件采集到HDFS上的/logs/tailout目錄中去,并且根據(jù)采集時間動態(tài)的生成文件夾,以方便管理。本次采集還是需要提前把數(shù)據(jù)采集的目錄與文件創(chuàng)建好,否則在Agent啟動的時候會報錯,代碼如下。2.采集文件[root@node1~]#mkdir-p/root/logs[root@node1~]#ls-ltotal0drwxr-xr-x4rootroot90Jun1302:40flumedrwxr-xr-x2rootroot6Jun1302:57logs[root@node1~]#hdfsdfs-mkdir-p/logs/tailout[root@node1~]#hdfsdfs-ls/logsFound1itemsdrwxr-xr-x-rootsupergroup02021-06-1302:59/logs/tailout[root@node1~]#目錄創(chuàng)建完成之后,便可以啟動FlumeAgent了,啟動命令代碼如下。[root@node1~]#flume-ngagent-na1-cconf-f$FLUME_HOME/conf/tailFile2HDFS.conf-Dflume.root.logger=INFO,consoleFlume數(shù)據(jù)采集啟動Agent成功,便可以往“/root/logs/test.log”文件中追加數(shù)據(jù)了,還是通過“echo”命令來寫入數(shù)據(jù),代碼如下。2.采集文件[root@node1~]#echohello,flume!>>/root/logs/test.log[root@node1~]#echohi,flume!>>/root/logs/test.log[root@node1~]#echohi,hadoop!>>/root/logs/test.log[root@node1~]#echohello,hdfs!>>/root/logs/test.log[root@node1~]#echohello,hbase!>>/root/logs/test.log[root@node1~]#在數(shù)據(jù)寫入的同時,Agent控制臺也打印出了數(shù)據(jù)采集的日志信息,如圖所示Flume數(shù)據(jù)采集可以通過HDFS提供的web頁面查看HDFS上的目錄和文件信息,如圖所示,可以看到在HDFS上,已經(jīng)創(chuàng)建了Flume采集數(shù)據(jù)對應(yīng)的時間目錄,并且數(shù)據(jù)文件已經(jīng)被采集到了對應(yīng)的目錄下。2.采集文件PART02HDFS數(shù)據(jù)存儲技術(shù)Hadoop分布式集群安裝在安裝Hadoop之前需要預(yù)先下載JDK與Hadoop包,本次安裝的2.7.4版本的Hadoop,是Hadoop2.x中一個較為穩(wěn)定的版本。Hadoop2.7.4版本依賴于不低于1.7版本的JDK,本次安裝使用的是JDK1.8。Hadoop下載地址:/dist/hadoop/common/hadoop-2.7.4/JDK下載地址:/cn/java/technologies/javase/javase-jdk8-downloads.html請下載Hadoop二進(jìn)制安裝包(不帶src的安裝包),勿下載源碼包;JDK請下載Linux64bit的安裝包;另外,本教材提供了Hadoop與JDK安裝包,需要的小伙伴可以直接拿來使用。次Hadoop分布式集群安裝,需要用到三臺Linux虛擬主機(jī)。集群規(guī)劃如表所示。1.Hadoop安裝準(zhǔn)備工作主機(jī)IP主機(jī)名主機(jī)系統(tǒng)安裝服務(wù)00node1CentOS7.4NameNode,ResourceManager,DataNode,Nodemanager01node2CentOS7.4SecondaryNameNode,DataNode,Nodemanager02node3CentOS7.4DataNode,NodemanagerHadoop分布式集群安裝下面我們來開始做集群安裝準(zhǔn)備工作,進(jìn)行操作的用戶均為root,準(zhǔn)備工作如下:1)修改主機(jī)名1.Hadoop安裝準(zhǔn)備工作[root@node1~]#hostnamectlset-hostnamenode1[root@node1~]#hostnamenode1[root@node1~]#[root@node2~]#hostnamectlset-hostnamenode2[root@node2~]#hostnameNode2[root@node2~]#[root@node3~]#hostnamectlset-hostnamenode3[root@node3~]#hostnameNode3[root@node3~]#Hadoop分布式集群安裝2)上傳安裝包將下載好的Hadoop安裝包與JDK安裝包上傳到node1節(jié)點(diǎn)上的/usr/local/src目錄下,如圖所示。1.Hadoop安裝準(zhǔn)備工作Hadoop分布式集群安裝3)修改hosts文件修改每個節(jié)點(diǎn)上的/etc/hosts文件,在文件尾部寫入主機(jī)名與節(jié)點(diǎn)IP信息,代碼如下。1.Hadoop安裝準(zhǔn)備工作[root@node1~]#cat/etc/hostslocalhostlocalhost.localdomainlocalhost4localhost4.localdomain4::1localhostlocalhost.localdomainlocalhost6localhost6.localdomain600node101node202node3下面讓我們來驗(yàn)證一下hosts文件是否修改成功,如圖所示。此操作需要在每臺節(jié)點(diǎn)上都執(zhí)行一次,以確保每臺節(jié)點(diǎn)都修改成功。Hadoop分布式集群安裝4)設(shè)置節(jié)點(diǎn)免密登錄為了保證Hadoop集群每個節(jié)點(diǎn)之間都能互相之間免密進(jìn)行文件傳輸,我們需要對每個節(jié)點(diǎn)的免密公鑰進(jìn)行互傳。首先,需要生成公鑰和私鑰,私鑰就是本機(jī)上放一個文件進(jìn)行解密的,公鑰通過網(wǎng)絡(luò)傳輸?shù)狡渌?jié)點(diǎn)上用來加密的,執(zhí)行命令之后需要敲擊四下回車鍵,以確保公鑰和私鑰生成成功,代碼如下。1.Hadoop安裝準(zhǔn)備工作[root@node1~]#ssh-keygen-trsaGeneratingpublic/privatersakeypair.Enterfileinwhichtosavethekey(/root/.ssh/id_rsa):Createddirectory'/root/.ssh'.Enterpassphrase(emptyfornopassphrase):Entersamepassphraseagain:Youridentificationhasbeensavedin/root/.ssh/id_rsa.Yourpublickeyhasbeensavedin/root/.ssh/id_rsa.pub.Thekeyfingerprintis:SHA256:knls+EJdUjaSCU58qJj2cCfHjWMuD6Ci+7zRSb6swicroot@node1Thekey'srandomartimageis:+---[RSA2048]----+|.oo.o+||oo++.||oo.+..||*+B*.o||o=.**.S||o++o.=||+.++..||oE+...||.+Boo|+----[SHA256]-----+[root@node1~]#Hadoop分布式集群安裝生成公鑰和私鑰之后,需要將公鑰發(fā)送到各個節(jié)點(diǎn)上,也包括本節(jié)點(diǎn),命令代碼如下,向?qū)?yīng)節(jié)點(diǎn)發(fā)送公鑰需要輸入對應(yīng)節(jié)點(diǎn)的用戶密碼(本次安裝為root用戶的密碼)。1.Hadoop安裝準(zhǔn)備工作[root@node1~]#ssh-copy-idnode1/usr/bin/ssh-copy-id:INFO:Sourceofkey(s)tobeinstalled:"/root/.ssh/id_rsa.pub"Theauthenticityofhost'node1(00)'can'tbeestablished.ECDSAkeyfingerprintisSHA256:AipKeOqOLMAMmWCIAJQcCe0+A/dR2XUknuz1u4BBJB0.ECDSAkeyfingerprintisMD5:be:7d:93:49:10:d2:1b:81:2c:89:03:01:d4:8c:ef:4a.Areyousureyouwanttocontinueconnecting(yes/no)?yes/usr/bin/ssh-copy-id:INFO:attemptingtologinwiththenewkey(s),tofilteroutanythatarealreadyinstalled/usr/bin/ssh-copy-id:INFO:1key(s)remaintobeinstalled--ifyouarepromptednowitistoinstallthenewkeysroot@node1'spassword:root@node1'spassword:Numberofkey(s)added:1Nowtryloggingintothemachine,with:"ssh'node1'"andchecktomakesurethatonlythekey(s)youwantedwereadded.[root@node1~]#ssh-copy-idnode2...[root@node1~]#ssh-copy-idnode3...[root@node1~]#注意:以上操作需要在每個節(jié)點(diǎn)上執(zhí)行一次。公鑰發(fā)送成功之后,需要進(jìn)行驗(yàn)證,以確保各個節(jié)點(diǎn)之間均可以通過免密進(jìn)行登錄,如圖所示。Hadoop分布式集群安裝5)關(guān)閉防火墻安裝Hadoop集群需要關(guān)閉系統(tǒng)防火墻,CentOS7默認(rèn)關(guān)閉iptables,我們只需關(guān)閉firewalld防火墻和selinux防火墻即可。關(guān)閉firewalld防火墻命令代碼如下,此操作需要在每臺節(jié)點(diǎn)上執(zhí)行一次。1.Hadoop安裝準(zhǔn)備工作[root@node1~]#systemctlstopfirewalld[root@node1~]#systemctldisablefirewalldRemovedsymlink/etc/systemd/system/multi-user.target.wants/firewalld.service.Removedsymlink/etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.[root@node1~]#systemctlstatusfirewalld●firewalld.service-firewalld-dynamicfirewalldaemonLoaded:loaded(/usr/lib/systemd/system/firewalld.service;disabled;vendorpreset:enabled)Active:inactive(dead)Docs:man:firewalld(1)...Hadoop分布式集群安裝關(guān)閉各節(jié)點(diǎn)firewalld防火墻之后,還需要關(guān)閉selinux防火墻,代碼如下,此操作需要在每個節(jié)點(diǎn)上執(zhí)行。1.Hadoop安裝準(zhǔn)備工作[root@node1~]#setenforce0執(zhí)行成功之后,selinux防火墻就已經(jīng)關(guān)閉了,但是在機(jī)器下次啟動的時候selinux防火墻還會進(jìn)行啟動,所以我們要把selinux防火墻的開機(jī)自啟關(guān)閉掉。想要關(guān)閉selinux防火墻開機(jī)自啟,需要修改/etc/sysconfig/selinux配置文件,把SELINUX配置項(xiàng)修改為disabled即可,如圖所示。Hadoop分布式集群安裝node1節(jié)點(diǎn)修改成功之后,我們只需要把/etc/sysconfig/selinux文件分發(fā)到其他節(jié)點(diǎn)即可,代碼如下。1.Hadoop安裝準(zhǔn)備工作[root@node1~]#scp/etc/sysconfig/selinuxnode2:/etc/sysconfig/selinux100%5461.2MB/s00:00[root@node1~]#scp/etc/sysconfig/selinuxnode3:/etc/sysconfig/selinux100%546417.3KB/s00:00[root@node1~]#Hadoop分布式集群安裝6)同步節(jié)點(diǎn)時間在Hadoop集群中,要保證每個節(jié)點(diǎn)之間的時間保持同步,一般在實(shí)際應(yīng)用場景中,會設(shè)置時間服務(wù)器,各個節(jié)點(diǎn)會定時同步時間。在這里我們沒有安裝ntp服務(wù),因此本次安裝將會同步網(wǎng)絡(luò)時間,不會進(jìn)行時間定時同步方法的講解,有興趣的同學(xué)可以自行學(xué)習(xí)。想要同步網(wǎng)絡(luò)時間,需要安裝ntpdate工具,安裝命令與同步方法代碼如下,需要在每個節(jié)點(diǎn)上執(zhí)行一次。1.Hadoop安裝準(zhǔn)備工作[root@node1~]#yuminstall-yntpdate...[root@node1~]#ntpdate0.7Jun01:04:57ntpdate[1879]:adjusttimeserver28offset0.087375secHadoop分布式集群安裝Hadoop中的每個節(jié)點(diǎn)的操作步驟都是一樣的,所以我們只在node1節(jié)點(diǎn)上進(jìn)行操作,操作完成后分發(fā)到node2和node3。1)安裝JDKJDK的安裝十分簡單,只需要將JDK安裝包解壓即可,代碼如下。2.Hadoop安裝[root@node1~]#tar-zxf/usr/local/src/jdk-8u144-linux-x64.tar.gz-C/usr/local/解壓完成后,將JDK目錄改個名稱,以方便我們接下來的操作,代碼如下。[root@node1~]#mv/usr/local/jdk1.8.0_144//usr/local/jdk1.8Hadoop分布式集群安裝驗(yàn)證JDK目錄修改成功如圖所示。2.Hadoop安裝將JDK信息寫入環(huán)境變量文件/etc/profile中,并刷新環(huán)境變量,代碼如下。[root@node1~]#vi/etc/profile…exportJAVA_HOME=/usr/local/jdk1.8exportPATH=$PATH:$JAVA_HOME/binexportCLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar"/etc/profile"79L,1929Cwritten[root@node1~]#source/etc/profile[root@node1~]#java-versionjavaversion"1.8.0_144"Java(TM)SERuntimeEnvironment(build1.8.0_144-b01)JavaHotSpot(TM)64-BitServerVM(build25.144-b01,mixedmode)[root@node1~]#Hadoop分布式集群安裝2)安裝Hadoop首先,需要解壓Hadoop安裝包,將Hadoop解壓到/usr/local目錄下,代碼如下。2.Hadoop安裝[root@node1~]#tarzxf/usr/local/src/hadoop-2.7.4.tar.gz-C/usr/local/[root@node1~]#ls-l/usr/local/total0drwxr-xr-x.2rootroot6Nov52016bindrwxr-xr-x.2rootroot6Nov52016etcdrwxr-xr-x.2rootroot6Nov52016gamesdrwxr-xr-x1020415101160Aug12017hadoop-2.7.4drwxr-xr-x.2rootroot6Nov52016includedrwxr-xr-x810143255Jul222017jdk1.8drwxr-xr-x.2rootroot6Nov52016libdrwxr-xr-x.2rootroot6Nov52016lib64drwxr-xr-x.2rootroot6Nov52016libexecdrwxr-xr-x.2rootroot6Nov52016sbindrwxr-xr-x.5rootroot49Apr92020sharedrwxr-xr-x.2rootroot67Jun623:23src[root@node1~]#Hadoop分布式集群安裝安裝Hadoop需要修改的配置文件有hadoop-env.sh、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml和slaves。2.Hadoop安裝[root@node1~]#cd/usr/local/hadoop-2.7.4/etc/hadoop/[root@node1hadoop]#vihadoop-env.sh…#setJAVA_HOMEinthisfile,sothatitiscorrectlydefinedon#remotenodes.#Thejavaimplementationtouse.exportJAVA_HOME=/usr/local/jdk1.8…"hadoop-env.sh"98L,4229Cwritten[root@node1hadoop]#step1:修改hadoop-env.sh文件,hadoop-env.sh是Hadoop集群的環(huán)境腳本文件,我們需要將JAVA_HOME寫入該文件中(文件第25行),代碼如下。Hadoop分布式集群安裝2.Hadoop安裝step2:修改core-site.xml文件,core-site.xml是Hadoop的核心配置文件,我們需要在此配置文件中寫入HDFSNameNode的地址與端口,還有Hadoop運(yùn)行時產(chǎn)生文件的存儲目錄,配置項(xiàng)需寫入<configuration>標(biāo)簽中,代碼如下。[root@node1hadoop]#vicore-site.xml…<!--Putsite-specificpropertyoverridesinthisfile.--><configuration><property><name>fs.defaultFS</name><value>hdfs://node1:9000</value></property><property><name>hadoop.tmp.dir</name><value>/usr/local/hadoop-2.7.4/tmp</value></property></configuration>"core-site.xml"28L,999Cwritten[root@node1hadoop]#Hadoop分布式集群安裝2.Hadoop安裝step3:修改hdfs-site.xml文件,hdfs-site.xml是HDFS的配置文件,我們需要在此配置文件中寫入HDFS的副本數(shù)量和SecondryNameNode的地址與端口,配置項(xiàng)需寫入<configuration>標(biāo)簽中,代碼如下。[root@node1hadoop]#vihdfs-site.xml…<!--Putsite-specificpropertyoverridesinthisfile.--><configuration><property><name>dfs.replication</name><value>3</value></property><property><name>node.secondary.http-address</name><value>node2:50090</value></property></configuration>"hdfs-site.xml"28L,969Cwritten[root@node1hadoop]#Hadoop分布式集群安裝2.Hadoop安裝step4:修改mapred-site.xml文件,mapred-site.xml文件是MapReduce程序的核心配置文件,我們需要在此文件中指定MapReduce程序的資源調(diào)度框架。首先需要對改配置文件改名,然后將配置項(xiàng)寫入mapred-site.xml文件的<configuration>標(biāo)簽中,代碼如下。[root@node1hadoop]#mvmapred-site.xml.templatemapred-site.xml[root@node1hadoop]#vimapred-site.xml…<!--Putsite-specificpropertyoverridesinthisfile.--><configuration><property><name></name><value>yarn</value></property></configuration>"mapred-site.xml"24L,861Cwritten[root@node1hadoop]#Hadoop分布式集群安裝2.Hadoop安裝step5:修改yarn-site.xml文件,yarn-site.xml文件是Yarn的核心配置文件,我們需要在此文件中指定ResourceManager的地址與端口,還有NodeManager的附屬服務(wù),配置項(xiàng)需寫入<configuration>標(biāo)簽中,代碼如下。[root@node1hadoop]#viyarn-site.xml…<configuration><!--SitespecificYARNconfigurationproperties--><property><name>yarn.resourcemanager.hostname</name><value>node1</value></property><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property></configuration>"yarn-site.xml"25L,908Cwritten[root@node1hadoop]#Hadoop分布式集群安裝2.Hadoop安裝step6:修改slaves文件,我們需要將計算節(jié)點(diǎn)node1,node2,node3寫入slaves文件中,代碼如下。[root@node1hadoop]#vislavesnode1node2node3"slaves"3L,18Cwritten[root@node1hadoop]#【注意事項(xiàng)】slaves文件中寫入的還是計算節(jié)點(diǎn)的IP地址或者主機(jī)名,如果某一個主機(jī)不作為計算節(jié)點(diǎn),只作為管理節(jié)點(diǎn),那邊不用將其信息寫入slaves。Hadoop分布式集群安裝3)配置Hadoop環(huán)境變量將Hadoop信息寫入環(huán)境變量文件/etc/profile中,并刷新環(huán)境變量,代碼如下。2.Hadoop安裝[root@node1~]#vi/etc/profile…exportJAVA_HOME=/usr/local/jdk1.8exportPATH=$PATH:$JAVA_HOME/binexportCLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarexportHADOOP_HOME=/usr/local/hadoop-2.7.4exportPATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin"/etc/profile"81L,2025Cwritten[root@node1~]#source/etc/profile[root@node1~]#hadoopversionHadoop2.7.4Subversionhttps://shv@/repos/asf/hadoop.git-rcd915e1e8d9d0131462a0b7301586c175728a282Compiledbykshvachkon2017-08-01T00:29ZCompiledwithprotoc2.5.0Fromsourcewithchecksum50b0468318b4ce9bd24dc467b7ce1148Thiscommandwasrunusing/usr/local/hadoop-2.7.4/share/hadoop/common/hadoop-common-2.7.4.jar[root@node1~]#Hadoop分布式集群安裝4)分發(fā)JDK、Hadoop、profile文件我們需要將修改好的JDK目錄、Hadoop目錄、profile文件分發(fā)到node2與node3節(jié)點(diǎn)上面,代碼如下。2.Hadoop安裝[root@node1~]#scp-r/usr/local/jdk1.8/node2:/usr/local/…[root@node1~]#scp-r/usr/local/hadoop-2.7.4/node2:/usr/local/…[root@node1~]#scp/etc/profilenode2:/etcprofile100%20251.5MB/s00:00[root@node1~]#scp-r/usr/local/jdk1.8/node3:/usr/local/…[root@node1~]#scp-r/usr/local/hadoop-2.7.4/node3:/usr/local/…[root@node1~]#scp/etc/profilenode3:/etcprofile100%20251.1MB/s00:00分發(fā)完成之后,需要刷新一下node2和node3節(jié)點(diǎn)的/etc/profile文件,代碼如下。[root@node2~]#source/etc/profile[root@node2~]#[root@node3~]#source/etc/profile[root@node3~]#Hadoop分布式集群安裝在初次啟動Hadoop集群之前,我們需要先在NameNode安裝節(jié)點(diǎn)上對NameNode進(jìn)行初始化操作,代碼如下。3.啟動Hadoop集群[root@node1~]#hdfsnamenode-format21/06/0809:34:21INFOnamenode.NameNode:STARTUP_MSG:/************************************************************STARTUP_MSG:StartingNameNode…21/06/0800:34:24INFOnamenode.NameNode:SHUTDOWN_MSG:/************************************************************SHUTDOWN_MSG:ShuttingdownNameNodeatnode1/00************************************************************/[root@node1~]#【注意事項(xiàng)】如果初始化NameNode失敗,想要再次初始化的時候,一定要刪除配置項(xiàng)“hadoop.tmp.dir”中所設(shè)置的目錄。Hadoop分布式集群安裝初始化NameNode成功之后,就可以啟動Hadoop集群了。我們依次來啟動HDFS和Yarn,由于我們之前已經(jīng)配置了Hadoop的環(huán)境變量,因此我們可以在任意目錄下執(zhí)行Hadoop提供的命令,啟動HDFS和Yarn的命令代碼如下。3.啟動Hadoop集群[root@node1~]#start-dfs.shStartingnamenodeson[node1]node1:startingnamenode,loggingto/usr/local/hadoop-2.7.4/logs/hadoop-root-namenode-node1.outnode2:startingdatanode,loggingto/usr/local/hadoop-2.7.4/logs/hadoop-root-datanode-node2.outnode3:startingdatanode,loggingto/usr/local/hadoop-2.7.4/logs/hadoop-root-datanode-node3.outnode1:startingdatanode,loggingto/usr/local/hadoop-2.7.4/logs/hadoop-root-datanode-node1.outStartingsecondarynamenodes[node2]node2:startingsecondarynamenode,loggingto/usr/local/hadoop-2.7.4/logs/hadoop-root-secondarynamenode-node2.out[root@node1~]#start-yarn.shstartingyarndaemonsstartingresourcemanager,loggingto/usr/local/hadoop-2.7.4/logs/yarn-root-resourcemanager-node1.outnode1:startingnodemanager,loggingto/usr/local/hadoop-2.7.4/logs/yarn-root-nodemanager-node1.outnode3:startingnodemanager,loggingto/usr/local/hadoop-2.7.4/logs/yarn-root-nodemanager-node3.outnode2:startingnodemanager,loggingto/usr/local/hadoop-2.7.4/logs/yarn-root-nodemanager-node2.out[root@node1~]#Hadoop分布式集群安裝啟動完成之后可以使用jps命令來查看Hadoop的進(jìn)程,我們查看一下每個節(jié)點(diǎn)上的進(jìn)程,是否與我們之前規(guī)劃的一致,如圖所示3.啟動Hadoop集群可以看到每個節(jié)點(diǎn)上的進(jìn)程與我們之前規(guī)劃的一致,接下來訪問一下HDFS和Yarn的web頁面,地址如下:HDFS頁面地址:00:9000Yarn頁面地址:00:8088HDFS讀寫數(shù)據(jù)原理HDFS集群分為兩大角色:NameNode、DataNode。NameNode負(fù)責(zé)管理整個文件系統(tǒng)的元數(shù)據(jù),DataNode負(fù)責(zé)管理用戶的文件數(shù)據(jù)塊,文件會按照固定的大?。╞locksize)切成若干塊后分布式存儲在若干臺DataNode上,每一個文件塊可以有多個副本,并存放在不同的DataNode上。Datanode會定期向Namenode匯報自身所保存的文件block信息,而namenode則會負(fù)責(zé)保持文件的副本數(shù)量,HDFS的內(nèi)部工作機(jī)制對客戶端保持透明,客戶端請求訪問HDFS都是通過向namenode申請來進(jìn)行。HDFS讀寫數(shù)據(jù)原理1.HDFS寫數(shù)據(jù)原理HDFS讀寫數(shù)據(jù)原理2.HDFS讀數(shù)據(jù)原理HDFS常用Shell命令想要操作HDFS上的文件,命令前綴必須為“hdfsdfs”,在后面加上想要執(zhí)行的操作命令即可,命令和Linux相似。1.目錄操作1)創(chuàng)建目錄2)查看目錄3)刪除目錄#創(chuàng)建目錄hdfsdfs-mkdir<path>#遞歸創(chuàng)建目錄hdfsdfs-mkdir-p<path>#顯示目錄結(jié)構(gòu)hdfsdfs-ls<path>#以人性化的方式遞歸顯示目錄結(jié)構(gòu)hdfsdfs-ls-R-h<path>#刪除空文件夾hdfsdfs-rmdir<path>#遞歸刪除目錄和文件hdfsdfs-rm-r<path>HDFS常用Shell命令2.文件操作1)上傳文件2)下載文件#上傳文件hdfsdfs-put[-f][-p]<localPath><hdfspath>#上傳文件hdfsdfs-copyFromLocal[-f][-p]<localPath><hdfspath>-f:當(dāng)文件存在時,進(jìn)行覆蓋-p:將權(quán)限、所屬組、時間戳、ACL以及XATTR等也進(jìn)行拷貝#將本地文件剪切到集群(執(zhí)行成功后本地文件將不存在)hdfsdfs-moveFromLocal<localPath><hdfspath>#下載文件hdfsdfs-get<hdfspath><localPath>#下載文件hdfsdfs–copyToLocal<hdfspath><localPath>#合并下載多個文件到本地Linuxhdfsdfs-getmerge[-nl]<hdfspath><localPath>-nl在每個文件的末尾添加換行符(LineFeed)-skip-empty-file跳過空文件HDFS常用Shell命令2.文件操作3)查看文件4)刪除文件#二選一執(zhí)行即可hdfsdfs-cat<path>#將HDFS中文件以文本形式輸出(包括zip包,jar包等形式)hdfsdfs-text<path>#查看文件尾部數(shù)據(jù)(默認(rèn)220行)hdfsdfs-tail<path>#和Unix中tail-f命令類似,當(dāng)文件內(nèi)容更新時,輸出將會改變,具有實(shí)時性hdfsdfs-tail-f<path>#刪除文件hdfsdfs-rm<path>HDFS常用Shell命令2.文件操作5)修改文件權(quán)限、組、擁有者6)統(tǒng)計文件信息#權(quán)限控制和Linux上使用方式一致#變更文件或目錄的所屬群組。操作用戶必須是文件的所有者或超級用戶。hdfsdfs-chgrp[-R]GROUPURI[URI...]#修改文件或目錄的訪問權(quán)限。操作用戶必須是文件的所有者或超級用戶。hdfsdfs-chmod[-R]<MODE[,MODE]...|OCTALMODE>URI[URI...]#修改文件的擁有者。操作用戶必須是超級用戶。hdfsdfs-chown[-R][OWNER][:[GROUP]]URI[URI]#統(tǒng)計目錄下各文件大小hdfsdfs-du[-s][-h]URI[URI...]-s:顯示所有文件大小總和-h:將以更友好的方式顯示文件大?。ɡ?4.0m而不是67108864)#統(tǒng)計文件系統(tǒng)的可用空間hdfsdfs-df-h/-h:將以更友好的方式顯示文件大?。ɡ?4.0m而不是67108864)HDFS常用Shell命令2.文件操作7)本地文件追加到HDFS文件中8)剪切與復(fù)制#往文件尾部追加內(nèi)容,集群文件不能隨機(jī)修改,只能追加。hdfsdfs-appendToFile<localFilePath><hdfsFilePath>#復(fù)制HDFS上的文件,該命令允許多個來源,但此時目標(biāo)必須是一個目錄hdfsdfs-cp[-f][-p]<hdfsSourcePath…><hdfsTargetPath>-f:當(dāng)文件存在時,進(jìn)行覆蓋-p:將權(quán)限、所屬組、時間戳、ACL以及XATTR等也進(jìn)行拷貝#剪切HDFS上的文件。命令允許多個來源,但此時目的地需要是一個目錄??缥募到y(tǒng)移動文件是不允許的hdfsdfs-mv<hdfsSourcePath…><hdfsTargetPath>HDFS常用Shell命令2.文件操作9)檢測文件hdfsdfs-test-[defsz]URI-d:如果路徑是目錄,返回0-e:如果路徑存在,則返回0-f:如果路徑是文件,則返回0-s:如果路徑不為空,則返回0-r:如果路徑存在且授予讀權(quán)限,則返回0-w:如果路徑存在且授予寫入權(quán)限,則返回0-z:如果文件長度為零,則返回0PART03Hive數(shù)據(jù)倉庫技術(shù)Hive安裝Hive需要一個數(shù)據(jù)庫來保存數(shù)據(jù)表的元數(shù)據(jù)信息。在Hive中,自帶了一個輕量級數(shù)據(jù)庫——Derby,但是在實(shí)際應(yīng)用場景中,為了便于管理,大多都是使用MySQL數(shù)據(jù)庫來管理Hive數(shù)據(jù)表的元數(shù)據(jù)。本次安裝不會講解MySQL的安裝方法,請同學(xué)們預(yù)先安裝好MySQL數(shù)據(jù)庫。本次安裝默認(rèn)在node1節(jié)點(diǎn)上安裝了MySQL5.6的版本,并在資料包中提供了MySQL5.6的安裝包與JDBC連接驅(qū)動包,本小節(jié)安裝的是Hive2.1.1版本,大家可以通過以下網(wǎng)址下載安裝包。Hive下載地址:/dist/hive/hive-2.1.1/Hive安裝首先,需要將Hive的安裝包上傳到node1節(jié)點(diǎn)上的/usr/local/src目錄中。同時,順便把JDBC的驅(qū)動包一并上傳,稍后安裝會用到,如圖所示。1.上傳安裝包Hive安裝將Hive安裝包解壓到node1節(jié)點(diǎn)的/usr/local目錄下,代碼如下。2.解壓安裝包[root@node1src]#tarzxfapache-hive-2.1.1-bin.tar.gz-C/usr/local/[root@node1src]#cd/usr/local/[root@node1local]#ls-ltotal0drwxr-xr-x9rootroot171Jun1100:06apache-hive-2.1.1-bindrwxr-xr-x.2rootroot6Nov52016bindrwxr-xr-x.2rootroot6Nov52016etcdrwxr-xr-x7rootroot187Jun1022:39flume1.8drwxr-xr-x.2rootroot6Nov52016gamesdrwxr-xr-x1220415101183Jun800:38hadoop-2.7.4drwxr-xr-x.2rootroot6Nov52016includedrwxr-xr-x810143255Jul222017jdk1.8drwxr-xr-x.2rootroot6Nov52016libdrwxr-xr-x.2rootroot6Nov52016lib64drwxr-xr-x.2rootroot6Nov52016libexecdrwxr-xr-x.2rootroot6Nov52016sbindrwxr-xr-x.5rootroot49Apr92020sharedrwxr-xr-x.2rootroot179Jun1023:58src[root@node1local]#Hive安裝然后,修改Hive目錄的名稱,以方便與我們接下來的操作,代碼如下。2.解壓安裝包[root@node1local]#mvapache-hive-2.1.1-bin/hive2.1.1[root@node1local]#ls-ltotal0drwxr-xr-x.2rootroot6Nov52016bindrwxr-xr-x.2rootroot6Nov52016etcdrwxr-xr-x7rootroot187Jun1022:39flume1.8drwxr-xr-x.2rootroot6Nov52016gamesdrwxr-xr-x1220415101183Jun800:38hadoop-2.7.4drwxr-xr-x9rootroot171Jun1100:06hive2.1.1drwxr-xr-x.2rootroot6Nov52016includedrwxr-xr-x810143255Jul222017jdk1.8drwxr-xr-x.2rootroot6Nov52016libdrwxr-xr-x.2rootroot6Nov52016lib64drwxr-xr-x.2rootroot6Nov52016libexecdrwxr-xr-x.2rootroot6Nov52016sbindrwxr-xr-x.5rootroot49Apr92020sharedrwxr-xr-x.2rootroot179Jun1023:58src[root@node1local]#Hive安裝Hive安裝只需要修改conf/hive-site.xml文件即可,不過需要先將hive-default.xml.template文件更名為hive-site.xml,代碼如下。3.修改Hive配置文件[root@node1conf]#cd/usr/local/hive2.1.1/conf[root@node1conf]#mvhive-default.xml.templatehive-site.xml[root@node1conf]#修改文件名稱成功之后,對hive-site.xml文件進(jìn)行編輯,需要修改文件中六項(xiàng)配置。Hive安裝修改hive-site.xml配置文件中的“javax.jdo.option.ConnectionURL”配置項(xiàng)(第500行),代碼如下。1)數(shù)據(jù)庫連接地址3.修改Hive配置文件[root@node1conf]#vihive-site.xml…<property><name>javax.jdo.option.ConnectionURL</name><value>jdbc:mysql://node1:3306/hive?createDatabaseIfNotExist=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false</value><description>JDBCconnectstringforaJDBCmetastore.TouseSSLtoencrypt/authenticatetheconnection,providedatabase-specificSSL

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論