版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
任務(wù)5.1Sqoop的安裝與應(yīng)用任務(wù)實施1.安裝與配置Sqoop(1)安裝與配置所需的軟件切換到安裝包的存儲目錄,執(zhí)行命令“tar-zxvfsqoop-1.4.7.bin_hadoop-2.6.0.tar.gz-C/usr/local”,解壓Sqoop安裝包到指定目錄中,操作命令如下。[root@master1opt]#tar-zxvf
sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz-C/usr/local將解壓后的sqoop包重命名為“sqoop”,操作命令如下。[root@master1local]#mvsqoop-1.4.7.bin__hadoop-2.6.0sqoop如果在普通用戶模式下,需要額外執(zhí)行命令“sudochown-Rhadoop:hadoopsqoop/”,修改“sqoop”目錄的權(quán)限。(2)配置sqoop-env.sh執(zhí)行命令“catsqoop-env-template.sh>>sqoop-env.sh”,復(fù)制/usr/local/sqoop/conf目錄中的配置文件sqoop-env-template.sh,并將其重命名為sqoop-env.sh,操作命令如下。[root@master1conf]#catsqoop-env-template.sh>>sqoop-env.sh編輯sqoop-env.sh文件,分別將Hadoop、HBase、Hive、ZooKeeper的安裝目錄添加到文件中,編輯內(nèi)容如下。(3)配置環(huán)境變量編輯“~/.bashrc”文件,將Sqoop的安裝路徑添加到環(huán)境變量中,操作內(nèi)容如下。exportSQOOP_HOME=/usr/local/sqoopPATH=$PATH:$SQOOP_HOME/bin修改完成后,按“Esc”鍵返回命令模式,通過輸入“:wq!”保存修改并退出,隨后執(zhí)行“source~/.bashrc”命令,使配置文件立即生效,操作命令如下。[root@masterlocal]$source~/.bashrc(4)配置MySQL連接執(zhí)行命令“cpmysql-connector-java-5.1.40-bin.jar/usr/local/sqoop/lib/”,將數(shù)據(jù)庫連接需要的jar包添加到“/usr/local/sqoop/lib/”下,操作命令如下。[root@master1mysql-connector-java-5.1.40]#cpmysql-connector-java-5.1.40-bin.jar/usr/local/sqoop/lib/(5)測試Sqoop與MySQL之間的連接執(zhí)行命令“servicemysqlstart”,啟動MySQL服務(wù),操作命令及結(jié)果如下。
[root@master1mysql-connector-java-5.1.40]#servicemysqlstartStartingMySQLSUCCESS!執(zhí)行命令“sqooplist-databases-connectjdbc:mysql://localhost:3306--usernameroot-password123456”,測試Sqoop與MySQL之間的連接是否成功,如果可以看到MySQL數(shù)據(jù)庫中的數(shù)據(jù)庫列表,則表示Sqoop安裝成功。若連接時提示SSL相關(guān),可以增加useSSL=false參數(shù),操作命令及結(jié)果如下。[root@master1bin]#./sqoop
list-databases--connectjdbc:mysql://localhost:3306/?useSSL=false--usernameroot--password12345623/03/0211:15:31INFOsqoop.Sqoop:RunningSqoopversion:1.4.723/03/0211:15:31WARNtool.BaseSqoopTool:Settingyourpasswordonthecommand-lineisinsecure.Considerusing-Pinstead.23/03/0211:15:31INFOmanager.MySQLManager:PreparingtouseaMySQLstreamingresultset.information_schemainfo_stationinformation_DBmyhivemysqlperformance_schemasys2.使用Sqoop完成MySQL和HDFS之間的數(shù)據(jù)互導(dǎo)(1)上傳準(zhǔn)備好的測試數(shù)據(jù)到MySQL中登錄MySQL,操作命令及結(jié)果如下。在測試數(shù)據(jù)庫test中創(chuàng)建表test1,用于存放本地測試數(shù)據(jù),操作命令及結(jié)果如下。mysql>createdatabasetest\->charactersetutf8;QueryOK,1rowaffected(0.00sec)mysql>usetestDatabasechangedmysql>createtabletest1(->ipvarchar(100)notnull,->timevarchar(100)notnull,->urlvarchar(255)notnull);QueryOK,0rowsaffected(0.01sec)將本地的測試數(shù)據(jù)text.txt文件上傳到test1表中,注意分隔符,此處分隔符是‘,’,以實際操作為準(zhǔn),操作命令及結(jié)果如下。mysql>loaddatalocalinfile'/opt/text.txt'intotabletest1fieldsterminatedby',';QueryOK,30rowsaffected,60warnings(0.00sec)Records:30Deleted:0Skipped:0Warnings:60上傳完成后,查看test1表中的前10條數(shù)據(jù),如圖所示。(2)上傳數(shù)據(jù)到HDFS中將test1中的數(shù)據(jù)上傳到HDFS中,操作命令如下。[root@master1bin]#./sqoopimport--connectjdbc:mysql://localhost:3306/test?useSSL=false--usernameroot--password123456--tabletest1-m1執(zhí)行完上述操作后,執(zhí)行命令“hadoopdfs-text/user/root/test1/part-m-00000”,在HDFS中查看導(dǎo)入的數(shù)據(jù),如圖所示。(3)將HDFS數(shù)據(jù)導(dǎo)入到MySQL中在導(dǎo)出前需要先創(chuàng)建導(dǎo)出表的結(jié)構(gòu),如果導(dǎo)出的表在數(shù)據(jù)表中不存在,則系統(tǒng)會報錯;若重復(fù)多次導(dǎo)出數(shù)據(jù),則表中的數(shù)據(jù)會重復(fù)。準(zhǔn)備數(shù)據(jù)表。在test數(shù)據(jù)庫中創(chuàng)建表test2,可以直接復(fù)制test1表的結(jié)構(gòu),操作命令及結(jié)果如下。mysql>createtabletest2asselect*fromtest1where1=2;QueryOK,0rowsaffected(0.00sec)Records:0Duplicates:0Warnings:0使用Sqoop將HDFS中的數(shù)據(jù)導(dǎo)入到MySQL的test2中,操作命令如下。[root@master1bin]#sqoopexport--connectjdbc:mysql://master1:3306/test--usernameroot--password123456--tabletest2--export-dirhdfs:///user/root/test1/part-m-00000-m1在MySQL中,執(zhí)行命令“select*fromtest2”查詢數(shù)據(jù),查看test2表中的數(shù)據(jù),驗證導(dǎo)入數(shù)據(jù)的正確性,查看結(jié)果如下。mysql>select*fromtest2......|63|2015/3/3017:38|/uc_server/avatar.php?uid=57232&size=middle||64|2015/3/3017:38|/uc_server/data/avatar/000/05/83/35_avatar_middle.jpg||60|2015/3/3017:38|/uc_server/data/avatar/000/01/54/22_avatar_middle.jpg|+----------------+-----------------+-------------------------------------------------------+30rowsinset(0.00sec)任務(wù)5.2
Pig的安裝和使用任務(wù)實施1.Pig的安裝和配置(1)安裝所需的軟件在master1中切換目錄到pig安裝包所在目錄,執(zhí)行命令“l(fā)l”查看目錄,過程如圖所示。執(zhí)行命令“tar-zxvfpig-0.17.0.tar.gz-C/usr/local”,解壓Pig安裝包到指定目錄中,操作命令如下。[root@master1opt]#tar-zxvf
pig-0.17.0.tar.gz-C/usr/local將解壓文件重命名為pig,操作命令如下。[root@master1local]#mvpig-0.17.0pig若是普通用戶,通過執(zhí)行命令“chown-Rhadoop:hadooppig”,為pig目錄修改權(quán)限,操作命令如下。[root@master1local]#chown-Rhadoop:hadooppig(2)編輯環(huán)境變量編輯“~/.bashrc”文件,將pig的安裝路徑添加到環(huán)境變量中,操作內(nèi)容如下。exportPIG_HOME=/usr/local/pigPATH=$PATH:$PIG_HOME/bin修改完成后,按“Esc”鍵返回命令模式,通過輸入“:wq!”保存修改并退出,隨后執(zhí)行“source~/.bashrc”命令,使配置文件立即生效,操作命令如下。[root@master1local]#source~/.bashrc(3)啟動測試通過執(zhí)行命令“pig-xlocal”進入本地模式,過程如圖所示,以便訪問本地文件系統(tǒng)測試或處理小規(guī)模數(shù)據(jù)集。通過執(zhí)行命令“pig-xmapreduce”進入MapReduce模式,過程如圖5-7所示,在MapReduce模式下,Pig可以訪問整個Hadoop集群,處理大規(guī)模數(shù)據(jù)集。2.Pig的應(yīng)用(1)計算多維度組合下的平均值假設(shè)有數(shù)據(jù)文件data1.txt(各數(shù)值之間是以“Tab”鍵分隔)?,F(xiàn)在要求在第2、3、4列的所有組合中,最后兩列的平均值分別是多少?[root@master1pig]#catdata1.txta1234.29.8a3053.52.1b799--a7992.66.2a1257.75.9a1231.40.2為了驗證計算結(jié)果,在此先人工計算一下需求結(jié)果。首先,第2、3、4列有一個組合為(1,2,3),即第一行和最后一行數(shù)據(jù)。對于這個維度組合來說,最后兩列的平均值分別為(4.2+1.4)/2=2.8(9.8+0.2)/2=5.0特別的,組合(7,9,9)有兩行記錄,即第3、4行,但是第3行數(shù)據(jù)的最后兩列沒有值,因此它不應(yīng)該被用于平均值的計算,也就是說,在計算平均值時,第3行的數(shù)據(jù)是無效數(shù)據(jù)。所以(7,9,9)組合的最后兩列的平均值為2.6和6.2。而對于第2、3、4列的其他維度組合來說,都分別只有一行數(shù)據(jù),因此最后兩列的平均值其實就是它們自身?,F(xiàn)在使用Pig來進行計算,并且輸出最終的結(jié)果。先進入本地調(diào)試模式(pig-xlocal),再依次輸入Pig代碼,操作命令及結(jié)果如下。grunt>A=LOAD'data1.txt'AS(col1:chararray,col2:int,col3:int,col4:int,col5:double,col6:double);grunt>B=GROUPABY(col2,col3,col4);grunt>C=FOREACHBGENERATEgroup,AVG(A.col5),AVG(A.col6);grunt>DUMPC;
((1,2,3),2.8,5.0)((1,2,5),7.7,5.9)((3,0,5),3.5,2.1)((7,9,9),2.6,6.2)由最終計算結(jié)果可以看出,人工計算結(jié)果和Pig計算結(jié)果完全一致。具體代碼分析如下。①加載data1.txt文件,并指定每一列的數(shù)據(jù)類型分別為chararray(字符串)、int、int、int、double、double。同時,分別給每一列定義一個別名,分別為col1,col2,…,col6。這個別名在后面的數(shù)據(jù)處理中會用到,如果不指定別名,則在后面的處理中只能使用索引($0,$1…)來標(biāo)示相應(yīng)的列,這樣可讀性會變差。將數(shù)據(jù)加載之后保存到變量A中,A的數(shù)據(jù)結(jié)構(gòu)如下。A:{col1:chararray,col2:
int,col3:
int,col4:
int,col5:
double,col6:
double}可見A是用大括號括起來的,是一個包。②按照A的第2、3、4列對A進行分組。Pig會找出第2、3、4列的所有組合,并按照升序進行排列,將它們與對應(yīng)的包A整合起來,得到數(shù)據(jù)結(jié)構(gòu)如下。B:{group:(col2:int,col3:int,col4:int),A:{col1:chararray,col2:int,col3:int,col4:int,col5:double,col6:double}}可見,A的第2、3、4列的組合被Pig賦予了一個別名(group),這很形象。同時,可以觀察到,B的每一行其實就是由一個group和若干個A組成的。實際的數(shù)據(jù)如下。((1,2,3),{(a,1,2,3,4.2,9.8),(a,1,2,3,1.4,0.2)})((1,2,5),{(a,1,2,5,7.7,5.9)})((3,0,5),{(a,3,0,5,3.5,2.1)})((7,9,9),{(b,7,9,9,,),(a,7,9,9,2.6,6.2)})可見,組合(1,2,3)對應(yīng)了兩行數(shù)據(jù),組合(7,9,9)也對應(yīng)了兩行數(shù)據(jù)。③計算每一種組合下的最后兩列的平均值。根據(jù)得到的B的數(shù)據(jù),可以把B想象為一行一行的數(shù)據(jù)(這些行不是對稱的),F(xiàn)OREACH的作用是對B的每一行數(shù)據(jù)進行遍歷,并進行計算。GENERATE可以理解為要生成什么樣的數(shù)據(jù),這里的group就是上一步操作中B的第一項數(shù)據(jù)(即Pig為A的第2、3、4列的組合賦予的別名),所以在數(shù)據(jù)集C的每一行中,第一項就是B中的group,類似于(1,2,3)的形式。而AVG(A.col5)的計算調(diào)用了Pig的一個求平均值的函數(shù)AVG,用于對A的名為col5的列(別名,col5就是倒數(shù)第二列)求平均值。在此操作中遍歷的是B,在B的數(shù)據(jù)結(jié)構(gòu)中,每一行數(shù)據(jù)中包含一個group,其對應(yīng)的是若干個A,因此這里的A.col5指的是B的每一行中的A,而不是包含全部數(shù)據(jù)的A。例如,((1,2,3),{(a,1,2,3,4.2,9.8),(a,1,2,3,1.4,0.2)}),遍歷到B的這一行時,要計算AVG(A.col5),Pig會找到(a,1,2,3,4.2,9.8)中的4.2及(a,1,2,3,1.4,0.2)中的1.4,將其加起來除以2,就得到了平均值。同理,可以清楚地知道AVG(A.col6)是怎樣計算出來的。但有一點需要注意,對于(7,9,9)組,它對應(yīng)的數(shù)據(jù)(b,7,9,9,,)中最后兩列是無值的,這是因為數(shù)據(jù)文件對應(yīng)位置上不是有效數(shù)字,而是兩個“-”,Pig在加載數(shù)據(jù)的時候自動將其置為空,而計算平均值的時候,也不會把這一組數(shù)據(jù)考慮在內(nèi)(相當(dāng)于忽略這組數(shù)據(jù)的存在)。C的數(shù)據(jù)結(jié)構(gòu)如下。C:{group:(col2:
int,col3:
int,col4:
int),double,double}④DUMPC就是將C中的數(shù)據(jù)輸出到控制臺上。如果要輸出到文件,則需要使用以下語句。STOREC
INTO
'output';這樣Pig就會在當(dāng)前目錄中新建一個output目錄(該目錄必須事先不存在),并把結(jié)果文件放到該目錄中。統(tǒng)計數(shù)據(jù)行數(shù)在SQL語句中,統(tǒng)計表中數(shù)據(jù)的行數(shù)非常簡單,使用以下語句即可。SELECT
COUNT(*)
FROM
table_name
WHERE
conditionPig中也有一個COUNT函數(shù),假設(shè)要計算數(shù)據(jù)文件data1.txt的行數(shù),可否進行如下操作呢?A=LOAD'data1.txt'USINGPigStorage('')AS(col1:chararray,col2:int,col3:int,col4:int,col5:double,col6:double);B=
COUNT(*);DUMPB;最終測試會報錯。Pig手冊中有信息如下。Note:Youcannotusethetupledesignator(*)withCOUNT;thatis,COUNT(*)willnotwork.而修改語句為B=
COUNT(A.col2);后,最終測試依然會報錯。要統(tǒng)計A中含col2字段的數(shù)據(jù)有多少行,正確的做法是使用以下語句。A=LOAD'data1.txt'USINGPigStorage('')AS(col1:chararray,col2:int,col3:int,col4:int,col5:double,col6:double);B=
GROUP
A
ALL;C=FOREACHBGENERATE
COUNT(A.col2);DUMPC;(6)在這個例子中,統(tǒng)計COUNT(A.col2)和COUNT(A)的結(jié)果是一樣的,但是如果col2列中含有空值,數(shù)據(jù)如下。[root@localhostpig]$
cat
test.txt
a1234.29.8a
053.52.1b799--a7992.66.2a1257.75.9a1231.40.2Pig程序的執(zhí)行結(jié)果如下。A=LOAD'data1.txt'USINGPigStorage('')AS(col1:chararray,col2:int,col3:int,col4:int,col5:double,col6:double);B=
GROUP
A
ALL;C=FOREACHBGENERATE
COUNT(A.col2);DUMPC;(5)可見,結(jié)果為5行。這是因為LOAD數(shù)據(jù)的時候指定了col2的數(shù)據(jù)類型為int,而test.txt的第2行數(shù)據(jù)是空的,因此數(shù)據(jù)加載到A中以后,有一個字段是空的。grunt>DUMPA;(a,1,2,3,4.2,9.8)(a,,0,5,3.5,2.1)(b,7,9,9,,)(a,7,9,9,2.6,6.2)(a,1,2,5,7.7,5.9)(a,1,2,3,1.4,0.2)在使用COUNT的時候,null的字段將不會被計入在內(nèi),所以結(jié)果是5。(3)FLATTEN操作符關(guān)于FLATTEN操作符的作用,這里仍然采用前面的data1.txt數(shù)據(jù)文件來說明,如果計算多維度組合下的最后兩列的平均值,則A=LOAD'data1.txt'USINGPigStorage('')AS(col1:chararray,col2:int,col3:int,col4:int,col5:double,col6:double);B=GROUPABY(col2,col3,col4);C=FOREACHBGENERATE
group,
AVG(A.col5),
AVG(A.col6);DUMPC;((1,2,3),2.8,5.0)((1,2,5),7.7,5.9)((3,0,5),3.5,2.1)((7,9,9),2.6,6.2)可見,在輸出結(jié)果中,每一行的第一項是一個tuple(元組)。下面來試試看FLATTEN的作用。結(jié)果顯示,被FLATTEN的group本來是一個元組,現(xiàn)在變?yōu)榱吮馄浇Y(jié)構(gòu)。按照Pig文檔的說法,F(xiàn)LATTEN用于對元組和包進行“解嵌套”。有時,不“解嵌套”的數(shù)據(jù)結(jié)構(gòu)是不利于觀察的,輸出這樣的數(shù)據(jù)可能不利于外圍程序的處理(例如,Pig將數(shù)據(jù)輸出到磁盤中后,如果需要使用其他程序做后續(xù)處理,則對于一個元組而言,其輸出的內(nèi)容中是含括號的,這就在處理流程上多了一道去括號的工序),因此,F(xiàn)LATTEN提供了一個在某些情況下可以清楚、方便地分析數(shù)據(jù)的機會。(4)把數(shù)據(jù)當(dāng)作“元組”來加載依然假設(shè)有data1.txt的數(shù)據(jù),如果按照以下方式來加載數(shù)據(jù)。A=LOAD'data1.txt'USINGPigStorage('')AS(col1:chararray,col2:int,col3:int,col4:int,col5:double,col6:double);則得到的A的數(shù)據(jù)結(jié)構(gòu)如下。DESCRIBEA;A:{col1:chararray,col2:int,col3:int,col4:int,col5:double,col6:double}如果把A當(dāng)作一個元組來加載,則A=LOAD'data1.txt'USINGPigStorage('')AS(T:tuple(col1:chararray,col2:int,col3:int,col4:int,col5:double,col6:double));即想要得到以下數(shù)據(jù)結(jié)構(gòu):DESCRIBEA;A:{T:(col1:chararray,col2:int,col3:int,col4:int,col5:double,col6:double)}但是,上面的方法將得到一個空的A。grunt>DUMPA;()()()()()()這是因為數(shù)據(jù)文件data1.txt的結(jié)構(gòu)不適用于加載為元組。如果有數(shù)據(jù)文件data2.txt:[root@localhostpig]$
cat
data2.txt:
(a,1,2,3,4.2,9.8)(a,3,0,5,3.5,2.1)(b,7,9,9,-,-)(a,7,9,9,2.6,6.2)(a,1,2,5,7.7,5.9)(a,1,2,3,1.4,0.2)則使用上面所說的加載方法進行加載后,其結(jié)果如下。可見,加載的數(shù)據(jù)的結(jié)構(gòu)確實被定義為了元組。(5)在多維度組合下,計算某個維度組合中的不重復(fù)記錄的條數(shù)以數(shù)據(jù)文件data3.txt為例,計算在第2、3、4列的所有維度組合下,最后一列不重復(fù)的記錄分別有多少條?[root@localhostpig]$
cat
data3.txt
a1234.29.8100a3053.52.1200b799--300a7992.66.2300a1257.75.9200a1231.40.2500由數(shù)據(jù)文件可見,第2、3、4列有一個維度組合是(1,2,3),在這個維度下,最后一列有兩種值——100和500,因此不重復(fù)的記錄數(shù)為2。同理,可求得其他不重復(fù)記錄的條數(shù)。Pig代碼及輸出結(jié)果如下。A=LOAD'data3.txt'USINGPigStorage('')AS(col1:chararray,col2:int,col3:int,col4:int,col5:double,col6:double,col7:int);B=GROUPABY(col2,col3,col4);C=FOREACHB{D=DISTINCTA.col7;GENERATEgroup,COUNT(D);};DUMPC;((1,2,3),2)((1,2,5),1)((3,0,5),1)((7,9,9),1)具體代碼分析如下。①LOAD就是加載數(shù)據(jù)。②GROUP的作用和前面表述的一樣。GROUP之后得到的數(shù)據(jù)如下。grunt>DUMPB;((1,2,3),{(a,1,2,3,4.2,9.8,100),(a,1,2,3,1.4,0.2,500)})((1,2,5),{(a,1,2,5,7.7,5.9,200)})((3,0,5),{(a,3,0,5,3.5,2.1,200)})((7,9,9),{(b,7,9,9,,,300),(a,7,9,9,2.6,6.2,300)})③DISTINCT用于將一個關(guān)系中重復(fù)的元組移除,F(xiàn)OREACH用于對B的每一行進行遍歷,其中B的每一行中含有一個包,每一個包中含有若干元組A,因此,F(xiàn)OREACH后面的大括號中的操作其實是對所謂的“內(nèi)部包”的操作,這里指定了對A的col7列進行去重,去重的結(jié)果被命名為D,并對D進行計數(shù)(COUNT),最終得到了想要的結(jié)果。④DUMP表示使結(jié)果數(shù)據(jù)輸出顯示。Pig中使用Shell進行輔助數(shù)據(jù)處理Pig中可以嵌套使用Shell進行輔助處理,假設(shè)在某一步Pig處理后,得到了類似于以下data4.txt中的數(shù)據(jù)。[root@localhostpig]$
cat
data4.txt
1598
=734
863262
06=65現(xiàn)在的問題是,如何將數(shù)據(jù)中第4列中的“=”全部替換為9999。具體實現(xiàn)代碼如下。A=LOAD'data4.txt'USINGPigStorage('')AS(col1:int,col2:int,col3:int,col4:chararray,col5:int);B=STREAMATHROUGH`awk'{if($4=="=")print$1""$2""$3"9999"$5;elseprint$0;}'`;DUMPB;(1,5,98,9999,7)(34,8,6,3,2)(62,0,6,9999,65)具體代碼分析如下。①LOAD表示加載數(shù)據(jù)。②通過“STREAM…THROUGH…”的方式,可以調(diào)用一個Shell語句,使用該Shell語句對A的每一行數(shù)據(jù)進行處理。此處的Shell邏輯如下:當(dāng)某一行數(shù)據(jù)的第4列為“=”時,將其替換為“9999”;否則按照原樣輸出。③DUMP表示輸出B。(7)向Pig腳本中傳入?yún)?shù)假設(shè)Pig腳本輸出的文件是通過外部參數(shù)指定的,則此參數(shù)不能寫死,需要傳入。在Pig中,傳入?yún)?shù)的語句如下。STOREA
INTO
'$output_dir';其中,“output_dir”就是傳入的參數(shù)。在調(diào)用Pig的Shell腳本時,可以使用以下語句傳入?yún)?shù)。pig-paramoutput_dir="/home/my_output_dir/"
my_pig_script.pig這里傳入的參數(shù)“output_dir”的值為“/home/my_output_dir/”。任務(wù)5.3
Flume的安裝和使用任務(wù)實施1.Flume的安裝與配置(1)安裝所需的軟件在Flume安裝包目錄中,執(zhí)行命令“tar-zxvf/opt/apache-flume-1.7.0-bin.tar.gz-C/usr/local/”,解壓Flume安裝包到指定目錄中,操作命令如下。[root@master1opt]#tar-zxvf/opt/apache-flume-1.7.0-bin.tar.gz-C/usr/local/執(zhí)行命令“mvapache-flume-1.7.0-bin/flume”,將解壓文件重命名為Flume,操作命令如下。[root@master1local]#mvapache-flume-1.7.0-binflume若是普通用戶,通過執(zhí)行命令“chown-Rhadoop:hadoopflume/”修改Flume目錄的權(quán)限,操作命令如下。[root@master1conf]#mvflume-env.sh.templateflume-env.sh
(2)編輯環(huán)境變量編輯“~/.bashrc”文件,將HBase的安裝路徑添加到環(huán)境變量中,操作內(nèi)容如下。exportFLUME_HOME=/usr/local/flumePATH=$PATH:$SQOOP_HOME/bin:$PIG_HOME/bin:$FLUME_HOME/bin修改完成后,按“Esc”鍵返回命令模式,通過輸入“:wq!”保存修改并退出,隨后執(zhí)行“source~/.bashrc”命令,使配置文件立即生效,操作命令如下。[root@master1local]#source~/.bashrc重命名配置文件“flume-env.sh.template”為“flume-env.sh”,編輯flume-env.sh配置文件,將配置項修改內(nèi)容如下。#Enviromentvariablescanbesethere.exportJAVA_HOME=/usr/lib/jdk1.8.0配置完成后,進入Flume的bin目錄,執(zhí)行命令“./flume-ngversion”,查看Flume是否安裝成功,操作命令及結(jié)果如下。[root@master1bin]#./flume-ngversionError:Couldnotfindorloadmainclassorg.apache.flume.tools.GetJavaPropertyFlume1.7.0Sourcecoderepository:https://git-wip-/repos/asf/flume.gitRevision:511d868555dd4d16e6ce4fedc72c2d1454546707CompiledbybessbdonWedOct1220:51:10CEST2016Fromsourcewithchecksum0d21b3ffdc55a07e1d08875872c00523啟動Flume后會提示“org.apache.flume.tools.GetJavaProperty”錯誤,可以通過修改“Hbase-env.sh”文件來解決這個錯誤。首先,使用編輯器打開hbase-env.sh文件,操作命令如下。[root@master1conf]#vihbase-env.sh其次,編輯hbase-env.sh文件,將hbase-env.sh文件中的“HBASE_CLASSPATH=/usr/local/hbase/conf”一行注釋掉,修改內(nèi)容如下。#exportHBASE_CLASSPATH=/usr/local/hadoop/etc/hadoop
重新啟動Flume,操作命令及結(jié)果如下。[root@master1bin]#flume-ngversionFlume1.7.0Sourcecoderepository:https://git-wip-/repos/asf/flume.gitRevision:511d868555dd4d16e6ce4fedc72c2d1454546707CompiledbybessbdonWedOct1220:51:10CEST2016Fromsourcewithchecksum0d21b3ffdc55a07e1d08875872c005232.使用Flume完成日志數(shù)據(jù)上傳HDFS操作執(zhí)行命令“start-all.sh”啟動Hadoop集群,在選定目錄中創(chuàng)建一個文件,例如在/simple目錄中執(zhí)行命令“toucha2.conf”,創(chuàng)建a2.conf文件,需要注意創(chuàng)建“a2.conf”文件的目錄需要與配置文件中的“mand”配置項的值一致,編輯配置文件如下。a2.sources=r1a2.channels=c1a2.sinks=k1a2.sources.r1.type=execmand=tail-F/simple/data.txta2.channels.c1.type=memorya2.channels.c1.capacity=1000a2.channels.c1.transactionCapacity=100a2.sinks.k1.type=hdfsa2.sinks.k1.hdfs.path=hdfs://:9000/flume/date_hdfs.txta2.sinks.k1.hdfs.filePrefix=events-a2.sinks.k1.hdfs.fileType=DataStreama2.sources.r1.channels=c1a2.sinks.k1.channel=c1進入Flume安裝目錄中的bin目錄中,使用“a2.conf”配置文件啟動Flume,操作命令如下。[root@master1bin]#./flume-ngagent-na2-f/simple/a2.conf-c../conf/-Dflume.root.logger=INFO,console任意創(chuàng)建測試數(shù)據(jù)文件data2.txt,模擬日志的生成,操作命令如下。[root@master1simple]#catdata2.txt>>data.txt通過執(zhí)行HDFS的命令,查看HDFS中生成的文件內(nèi)容,操作命令及結(jié)果如右。[root@master1simple]#hadoopfs-cat/flume/date_hdfs.txt/*(a,1,2,3,4.2,9.8)(a,3,0,5,3.5,2.1)(b,7,9,9,-,-)(a,7,9,9,2.6,6.2)(a,1,2,5,7.7,5.9)(a,1,2,3,1.4,0.2)(a,1,2,3,4.2,9.8)(a,3,0,5,3.5,2.1) (b,7,9,9,-,-)(a,7,9,9,2.6,6.2)(a,1,2,5,7.7,5.9)(a,1,2,3,1.4,0.2)任務(wù)5.4
Kafka的安裝和使用任務(wù)實施1.安裝與配置kafka(1)運行Docker容器,并分別開啟master1、slave1和slave2的Zookeeper服務(wù)。①在master1節(jié)點上運行“jps”命令查看進程,操作命令及結(jié)果如下。[root@master1bin]#jps135QuorumPeerMain169Jps②在slave1節(jié)點上運行“jps”命令查看進程,操作命令及結(jié)果如下。[root@slave1bin]#jps145Jps115QuorumPeerMain③slave2節(jié)點上運行“jps”命令查看進程,操作命令及結(jié)果如下。[root@slave2bin]#jps104QuorumPeerMain142Jps(2)
解壓Kafka安裝包,切換到解壓目錄重命名Kafka文件,操作命令如下。[root@master1opt]#tar-zxvf/opt/kafka_2.11-.tgz-C/usr/local/[root@master1local]#mvkafka_2.11-/kafka(3)
編輯“~/.bashrc”文件,將Kafka的安裝路徑添加到環(huán)境變量中,操作內(nèi)容如下。exportKAFKA_HOME=/usr/local/kafkaPATH=$PATH:$KAFKA_HOME/bin修改完成后,按“Esc”鍵返回命令模式,通過輸入“:wq!”保存修改并退出,隨后執(zhí)行“source~/.bashrc”命令,使配置文件立即生效,操作命令如下。[root@master1local]#source~/.bashrc(4)
進入kafka/config目錄下,修改perties文件,操作命令和配置項內(nèi)容如下。[root@master1config]#viperties#修改如下兩條參數(shù)log.dirs=/usr/local/kafka/logszookeeper.connect=master1:2181,slave1:2181,slave2:2181#在文件最后增加兩行=master1delete.topic.enable=true其中“/usr/local/kafka/logs”目錄需要手動創(chuàng)建,切換目錄到kafka安裝目錄中,創(chuàng)建logs目錄,操作命令如下。[root@master1kafka]#mkdirlogs(5)將配置好的kafka目錄分發(fā)到集群中的slave1和slave2節(jié)點,操作命令如下。[root@master1kafka]#scp-r/usr/local/kafkaslave1:/usr/local/[root@master1kafka]#scp-r/usr/local/kafkaslave2:/usr/local/在slave1中修改perties文件,內(nèi)容修改如下。broker.id=1=slave1在slave2中修改perties文件,內(nèi)容修改如下。broker.id=2=slave2在master1、slave1和slave2節(jié)點上,分別切換到“kafka/bin”目錄下,啟動kafka(需要在zookeeper啟動的情況下),并分別執(zhí)行“jps”命令查看進程。在master1節(jié)點操作命令及結(jié)果如下。[root@master1bin]#./kafka-server-start.sh-daemon../config/perties[root@master1bin]#jps1632Kafka135QuorumPeerMain1694Jps在slave1節(jié)點操作命令及結(jié)果如下。[root@slave1bin]#./kafka-server-start.sh-daemon../config/perties[root@slave1bin]#jps115QuorumPeerMain419Kafka477Jps在slave2節(jié)點操作命令及結(jié)果如下。[root@slave2bin]#./kafka-server-start.sh-daemon../config/perties[root@slave2bin]#jps104QuorumPeerMain490Jps431Kafka2.Kafka運行測試(1)在master1節(jié)點創(chuàng)建topic,并在集群中查看已創(chuàng)建的topic,操作命令及結(jié)果如下。[root@master1bin]#./kafka-topics.sh--create--zookeepermaster1:2181,slave1:2181,slave2:2181--replication-factor3--partitions3--topictestCreatedtopic"test".
[root@master1bin]#./kafka-topics.sh--list--zookeepermaster1:2181,slave1:2181,slave2:2181test(2)在master1上啟動“producer”并測試,操作命令及結(jié)果如下。[root@master1bin]#./kafka-console-producer.sh--broker-listmaster1:9092,slave1:9092,slave2:9092--topictest>book>test>
(3)在Slave節(jié)點(在slave1或slave2上)啟動consumer,consumer會自動打印(2)中test主題輸入的內(nèi)容,操作命令及結(jié)果如下。[root@slave1bin]./kafka-console-consumer.sh--bootstrap-servermaster1:9092,slave1:9092,slave2:9092--from-beginning--topictest[root@slave1bin]#./kafka-console-consumer.sh--bootstrap-servermaster1:9092,slave1:9092,slave2:9092--from-beginning--topictestbooktest任務(wù)5.5
Flink的安裝和使用任務(wù)實施Flink的安裝與配置,主要過程如下。(1)解壓Flink安裝包,并重命名文件,操作命令如下。[root@master1opt]#tar-zxvf
flink-1.10.0-bin-scala_2.11.tgz-C/usr/local[root@master1local]#mvflink-1.10.0flink(2)配置環(huán)境變量,編輯~/.bashrc配置文件,添加內(nèi)容如下。exportHADOOP_CLASSPATH=`hadoopclasspath`exportFLINK_HOME=/usr/local/flinkexportHADOOP_CONF_DIR=/usr/local/hadoop/etc/hadoopPATH=$PATH:$FLINK_HOME/bin修改完成后,按“Esc”鍵返回命令模式,通過輸入“:wq!”保存修改并退出,隨后執(zhí)行“source~/.bashrc”命令,使配置文件立即生效,操作命令如下。[root@master1local]$source~/.bashrc(3)配置yarn-site.xml文件①yarn-site.xml配置文件如下。(內(nèi)容過長,文本放在ppt展示頁面下方)<configuration><!--SitespecificYARNconfigurationproperties--><property><name>yarn.n
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 黃金煥膚病因介紹
- 和解調(diào)解協(xié)議書6篇
- 2023車庫租賃協(xié)議書七篇
- 土地流轉(zhuǎn)工作協(xié)議書
- 足跟瘀斑病因介紹
- 萎縮性毛周角化病病因介紹
- 中考政治總復(fù)習(xí)基礎(chǔ)知識梳理九年級全冊第二單元了解祖國愛我中華
- 中小學(xué)教師教育政策法規(guī)知識408新教師培訓(xùn)省公開課全國賽課一等獎微課獲獎
- (可行性報告)一專業(yè)建設(shè)可行性分析
- (2024)植物纖維模塑制品項目可行性研究報告模板立項審批(一)
- 飛行員航空知識手冊
- GMP質(zhì)量管理體系文件 中藥材干燥記錄
- 2023年AMC8競賽真題英文版及答案
- GB/T 6974.5-2008起重機術(shù)語第5部分:橋式和門式起重機
- GB/T 2820.5-2009往復(fù)式內(nèi)燃機驅(qū)動的交流發(fā)電機組第5部分:發(fā)電機組
- “無廢城市”建設(shè)宣傳工作方案
- 國際商務(wù)函電課后答案第二版李爽
- 公路橋梁變更工程測量專項施工方案
- 國際貿(mào)易風(fēng)險管理 課件
- 鼻咽癌 講義課件
- 《無機化學(xué)》第七章分子結(jié)構(gòu)和晶體結(jié)構(gòu)
評論
0/150
提交評論