版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Ch.5.Hadoop系統(tǒng)安裝運(yùn)行
與程序開發(fā)南京大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)系主講人:黃宜華2011年春季學(xué)期MapReduce海量數(shù)據(jù)并行處理鳴謝:本課程得到Google公司(北京)中國大學(xué)合作部精品課程計(jì)劃資助Ch.5.
Hadoop系統(tǒng)安裝運(yùn)行與程序開發(fā)1.單機(jī)Hadoop系統(tǒng)安裝基本步驟2.集群Hadoop系統(tǒng)安裝基本步驟3.Hadoop集群遠(yuǎn)程作業(yè)提交與執(zhí)行4.HadoopMapReduce程序開發(fā)5.實(shí)驗(yàn)1:安裝單機(jī)Hadoop系統(tǒng)Hadoop系統(tǒng)運(yùn)行的軟件環(huán)境Linux操作系統(tǒng)如RHELS6.0(RedHatEnterpriseLinuxServer6.0)直接安裝LinuxWindow下安裝Linux虛擬機(jī)SSH(SecureShell)主要用于遠(yuǎn)程管理Hadoop節(jié)點(diǎn)以及Hadoop節(jié)點(diǎn)間的安全共享訪問Java如Java1.6.0Hadoop系統(tǒng)的安裝方式單機(jī)方式在一臺(tái)運(yùn)行Linux或Windows下虛擬Linux的單機(jī)上安裝運(yùn)行Hadoop系統(tǒng)單機(jī)偽分布方式在一臺(tái)運(yùn)行Linux或Window下虛擬Linux的單機(jī)上,用偽分布方式,用不同的java進(jìn)程模擬分布運(yùn)行中的NameNode、DataNode、JobTracker、TaskTracker等各類節(jié)點(diǎn)集群分布模式在一個(gè)真實(shí)的集群環(huán)境下安裝運(yùn)行Hadoop系統(tǒng),集群的每個(gè)節(jié)點(diǎn)可以運(yùn)行Linux或Window下的虛擬Linux。單機(jī)和偽分布模式下編寫調(diào)試完成的程序不需修改即可在真實(shí)的分布式Hadoop集群下運(yùn)行基本安裝步驟安裝JDK下載安裝Hadoop配置SSH配置Hadoop的環(huán)境格式化HDFS文件系統(tǒng)啟動(dòng)Hadoop環(huán)境運(yùn)行程序測(cè)試查看集群狀態(tài)
1.單機(jī)Hadoop系統(tǒng)安裝基本步驟單機(jī)和單機(jī)偽分布方式安裝過程1.單機(jī)操作系統(tǒng)安裝在單機(jī)上安裝Linux或Window下虛擬Linux,假設(shè)安裝后機(jī)器名為Siler。2.安裝SSH
如果安裝RHELS6.0,確保軟件安裝時(shí)把SSH選上;如果安裝Linux時(shí)沒有安裝SSH,則需要另行安裝SSH3.安裝Java
下載和安裝Java,將java安裝在root/usr/java目錄下單機(jī)Hadoop系統(tǒng)基本安裝步驟單機(jī)和單機(jī)偽分布方式安裝過程4.創(chuàng)建用戶為Hadoop創(chuàng)建一個(gè)專門的用戶組如hadoop-user,然后在該用戶組下創(chuàng)建不同的用戶??稍诎惭b系統(tǒng)的時(shí)候創(chuàng)建,也可以在安裝好之后用如下命令創(chuàng)建:[root@Siler~]#groupaddhadoop-user[root@Siler~]#useradd-ghadoop_user-d/home/hadoophadoop“hadoop”是所創(chuàng)建的用戶名,-d指明“hadoop”用戶的home目錄是/home/hadoop)[root@Siler~]#passwdhadoop[給用戶hadoop設(shè)置口令]單機(jī)Hadoop系統(tǒng)基本安裝步驟單機(jī)和單機(jī)偽分布方式安裝過程5.解壓安裝Hadoop到Hadoop官網(wǎng)下載hadoop-0.21.0.tar.gz建立安裝目錄
[hadoop@Siler~]mkdir~/hadoop_installs把hadoop-0.21.0.tar.gz放在這里,然后解壓:
[hadoop@Silerhadoop_installs]$tar–zxvfhadoop-0.21.0.tar.gz單機(jī)Hadoop系統(tǒng)基本安裝步驟單機(jī)和單機(jī)偽分布方式安裝過程6.配置環(huán)境變量進(jìn)入到“hadoop”用戶下
[root@Siler~]#su–hadoop
[注意中間的”-”不要丟]
[hadoop@Siler~]$編輯~/.bash_profile文件(用vi或gedit)
vi~/.bash_profile設(shè)置如下環(huán)境變量:
PATH=$PATH:$HOME/binexportJAVA_HOME=/usr/java/java-1.6.0exportHADOOP_HOME=/home/hadoop/hadoop_installs/hadoop-0.21.0exportPATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/binexportCLASSPATH=$JAVA_HOME/lib:.單機(jī)Hadoop系統(tǒng)基本安裝步驟單機(jī)和單機(jī)偽分布方式安裝過程7.免密碼SSH訪問配置
在偽分布模式下(集群分布模式更需要這個(gè)設(shè)置過程),為了實(shí)現(xiàn)免密碼SSH登陸連接,需要進(jìn)行相應(yīng)的配置。方式是創(chuàng)建一個(gè)認(rèn)證文件,然后用publickey實(shí)現(xiàn)免密碼的登錄連接。過程如下:執(zhí)行命令產(chǎn)生認(rèn)證文件
[hadoop@Siler~]$ssh-keygen-trsa-P""一直敲回車,然后將在/home/hadoop/.ssh目錄下生成id_rsa認(rèn)證文件將該文件復(fù)制到名為authorized_keys的文件
[hadoop@Siler~]cat~/.ssh/id_rsa.pub>>~/.ssh/authorized_keys然后測(cè)試一下看看能不能登錄:[hadoop@Siler~]sshlocalhost單機(jī)Hadoop系統(tǒng)基本安裝步驟單機(jī)和單機(jī)偽分布方式安裝過程什么是SSH?SSH(SecureShell),是建立在應(yīng)用層和傳輸層基礎(chǔ)上的安全協(xié)議。傳統(tǒng)的網(wǎng)絡(luò)服務(wù)程序,如FTP、POP和Telnet本質(zhì)上都是不安全的;它們?cè)诰W(wǎng)絡(luò)上用明文傳送數(shù)據(jù)、用戶帳號(hào)和用戶口令,很容易受到中間人(man-in-the-middle)攻擊方式的攻擊。而SSH是目前較為可靠的、專為遠(yuǎn)程登錄會(huì)話和其他網(wǎng)絡(luò)服務(wù)提供安全性的協(xié)議。利用SSH協(xié)議可以有效防止遠(yuǎn)程管理過程中的信息泄露問題。通過SSH可以對(duì)所有傳輸?shù)臄?shù)據(jù)進(jìn)行加密,也能夠防止DNS欺騙和IP欺騙。SSH另一項(xiàng)優(yōu)點(diǎn)是其傳輸?shù)臄?shù)據(jù)是經(jīng)過壓縮的,所以可以加快傳輸?shù)乃俣?。SSH有很多功能,它既可以代替Telnet,又可以為FTP、POP、PPP提供一個(gè)安全的登陸會(huì)話“通道”。Hadoop使用SSH保證在遠(yuǎn)程管理Hadoop節(jié)點(diǎn)和節(jié)點(diǎn)間用戶共享訪問時(shí)的安全性。單機(jī)Hadoop系統(tǒng)基本安裝步驟單機(jī)和單機(jī)偽分布方式安裝過程8.修改hadoop配置文件
Hadoop的配置文件存放在hadoop安裝目錄下的conf目錄中,主要有以下幾個(gè)配置文件要修改:conf/hadoop-env.sh:Hadoop環(huán)境變量設(shè)置conf/core-site.xml:主要完成NameNode的IP和端口設(shè)置conf/hdfs-site.xml:主要完成HDFS的數(shù)據(jù)塊副本等參數(shù)設(shè)置conf/mapred-site.xml:主要完成JobTrackerIP和端口設(shè)置conf/masters:完成master節(jié)點(diǎn)IP設(shè)置conf/slaves:完成Slaves節(jié)點(diǎn)IP設(shè)置單機(jī)Hadoop系統(tǒng)基本安裝步驟單機(jī)和單機(jī)偽分布方式安裝過程9.格式化NameNode執(zhí)行Hadoop的bin文件夾中的格式化命令:
[hadoop@Siler~]$hadoopnamenode-format
如果格式化成功,會(huì)返回一堆有關(guān)NameNode的啟動(dòng)信息,其中會(huì)有一句“….hasbeensuccessfullyformatted.”單機(jī)Hadoop系統(tǒng)基本安裝步驟單機(jī)和單機(jī)偽分布方式安裝過程10.啟動(dòng)HDFS和MapReduce執(zhí)行以下命令啟動(dòng)HDFS和MapReduce[hadoop@Siler~]$start-all.sh用JPS命令檢查一下是否正常啟動(dòng):
[hadoop@Siler~]$jps顯示以下各進(jìn)程信息則說明HDFS和MapReduce都已正常啟動(dòng):4706JobTracker4582SecondaryNameNode4278NameNode4413DataNode4853TaskTracker4889Jps11.停止HDFS和MapReduce執(zhí)行以下命令啟動(dòng)HDFS和MapReduce[hadoop@Siler~]$stop-all.sh單機(jī)Hadoop系統(tǒng)基本安裝步驟單機(jī)和單機(jī)偽分布方式安裝過程12.運(yùn)行測(cè)試在Linux文件系統(tǒng)下(如/root/test)創(chuàng)建兩個(gè)文本數(shù)據(jù)文件:
file1.txt:hellohadoophelloworld
file2.txt:
goodbyehadoop將文件復(fù)制到HDFS文件系統(tǒng)中:
[hadoop@Siler~]$dfs–copyFromLocal/root/testtest-intest-in是在HDFS中建立的一個(gè)數(shù)據(jù)數(shù)據(jù)目錄運(yùn)行hadoop安裝包中自帶的WordCount程序進(jìn)行測(cè)試:
[hadoop@Siler~]$hadoopjarhadoop-0.21.0-examples.jarwordcounttest-intest-out其中test-out只能由程序創(chuàng)建,不能事先存在單機(jī)Hadoop系統(tǒng)基本安裝步驟集群分布方式安裝過程1.操作系統(tǒng)安裝在每個(gè)節(jié)點(diǎn)上安裝Linux或Window下虛擬Linux,假設(shè)安裝后機(jī)器名為Master。2.安裝SSH
如果安裝RHELS6.0,確保軟件安裝時(shí)把SSH選上;如果安裝Linux時(shí)沒有安裝SSH,則需要另行安裝SSH3.安裝Java
下載和安裝Java,將java安裝在root/usr/java目錄下2.集群Hadoop系統(tǒng)基本安裝步驟集群分布方式安裝過程4.創(chuàng)建用戶為Hadoop創(chuàng)建一個(gè)專門的用戶組如hadoop-user,然后在該用戶組下創(chuàng)建不同的用戶。可在安裝系統(tǒng)的時(shí)候創(chuàng)建,也可以在安裝好之后用如下命令創(chuàng)建:[root@
Master
~]#groupaddhadoop-user[root@
Master
~]#useradd-ghadoop_user-d/home/hadoophadoop“hadoop”是所創(chuàng)建的用戶名,-d指明“hadoop”用戶的home目錄是/home/hadoop)[root@
Master
~]#passwdhadoop[給用戶hadoop設(shè)置口令]1).在真實(shí)集群分布模式下,要求每個(gè)節(jié)點(diǎn)使用相同的用戶名,比如,可以使用“hadoop”作為所有節(jié)點(diǎn)上統(tǒng)一的用戶名。2).并且要求在所有節(jié)點(diǎn)上安裝的hadoop系統(tǒng)具有完全一致的目錄結(jié)構(gòu)。集群Hadoop系統(tǒng)基本安裝步驟集群分布方式安裝過程5.在主節(jié)點(diǎn)上解壓安裝Hadoop到Hadoop官網(wǎng)下載hadoop-0.21.0.tar.gz建立安裝目錄
[hadoop@
Master~]mkdir~/hadoop_installs把hadoop-0.21.0.tar.gz放在這里,然后解壓:
[hadoop@
Masterhadoop_installs]$tar–zxvfhadoop-0.21.0.tar.gz注:這個(gè)過程僅需在主節(jié)點(diǎn)上完成,然后安裝好的Hadoop系統(tǒng)將被復(fù)制到所有從節(jié)點(diǎn)集群Hadoop系統(tǒng)基本安裝步驟集群分布方式安裝過程6.配置環(huán)境變量(每個(gè)節(jié)點(diǎn)都必須做)進(jìn)入到“hadoop”用戶下
[root@Siler~]#su–hadoop
[注意中間的”-”不要丟]
[hadoop@Siler~]$編輯~/.bash_profile文件(用vi或gedit)
vi~/.bash_profile設(shè)置如下環(huán)境變量:
PATH=$PATH:$HOME/binexportJAVA_HOME=/usr/java/java-1.6.0exportHADOOP_HOME=/home/hadoop/hadoop_installs/hadoop-0.21.0exportPATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/binexportCLASSPATH=$JAVA_HOME/lib:.集群Hadoop系統(tǒng)基本安裝步驟集群分布方式安裝過程7.免密碼SSH訪問配置
在真實(shí)集群分布模式下更需要這個(gè)設(shè)置過程,為了實(shí)現(xiàn)節(jié)點(diǎn)間相互的免密碼SSH訪問,需要進(jìn)行相應(yīng)的配置。方式是創(chuàng)建一個(gè)認(rèn)證文件,然后用publickey實(shí)現(xiàn)免密碼的登錄連接。過程如下:執(zhí)行命令產(chǎn)生認(rèn)證文件
[hadoop@
Master
~]$ssh-keygen-trsa-P""敲回車,然后將在/home/hadoop/.ssh目錄下生成id_rsa認(rèn)證文件將該文件復(fù)制為名為authorized_keys的文件
[hadoop@
Master~]$cat~/.ssh/id_rsa.pub>>~/.ssh/authorized_keys將authorized_keys文件復(fù)制到所有節(jié)點(diǎn)上
[hadoop@Master~]$scpauthorized_keys[從節(jié)點(diǎn)主機(jī)名或IP]:/home/hadoop/.ssh集群Hadoop系統(tǒng)基本安裝步驟集群分布方式安裝過程8.在主節(jié)點(diǎn)上修改hadoop配置文件
Hadoop的配置文件存放在hadoop安裝目錄下的conf目錄中,主要有以下幾個(gè)配置文件要修改:conf/hadoop-env.sh:Hadoop環(huán)境變量設(shè)置conf/core-site.xml:主要完成NameNode的IP和端口設(shè)置conf/hdfs-site.xml:主要完成HDFS的數(shù)據(jù)塊副本等參數(shù)設(shè)置conf/mapred-site.xml:主要完成JobTrackerIP和端口設(shè)置conf/masters:完成master節(jié)點(diǎn)IP設(shè)置conf/slaves:完成Slaves節(jié)點(diǎn)IP設(shè)置注:這個(gè)過程僅需在主節(jié)點(diǎn)上進(jìn)行,然后將隨著主機(jī)上安裝好的Hadoop目錄一起復(fù)制到所有從節(jié)點(diǎn)集群Hadoop系統(tǒng)基本安裝步驟集群分布方式安裝過程8.在主節(jié)點(diǎn)上修改hadoop配置文件 conf/masters:修改為主節(jié)點(diǎn)的主機(jī)名 conf/slaves:列出所有從節(jié)點(diǎn)的主機(jī)名
在NameNode和DataNode節(jié)點(diǎn)上進(jìn)行主機(jī)名和IP解析配置
修改每臺(tái)機(jī)器的/etc/hosts設(shè)置:若為NameNode,則需要在hosts文件中添加集群中所有節(jié)點(diǎn)的IP地址機(jī)器對(duì)應(yīng)的主機(jī)名若為DataNode,則只需要在文件中添加本機(jī)和NameNode的IP地址及對(duì)應(yīng)的主機(jī)名集群Hadoop系統(tǒng)基本安裝步驟集群分布方式安裝過程9.復(fù)制Hadoop系統(tǒng)將在主節(jié)點(diǎn)安裝好的Hadoop系統(tǒng)目錄復(fù)制到每一個(gè)從節(jié)點(diǎn)上:
[hadoop@
Master
~]$scp-r/home/hadoop/hadoop-installs[從節(jié)點(diǎn)主機(jī)名或IP]:/home/hadoop/
這樣可以避免對(duì)每一個(gè)從節(jié)點(diǎn)重復(fù)進(jìn)行Hadoop系統(tǒng)安裝。集群Hadoop系統(tǒng)基本安裝步驟集群分布方式安裝過程10.格式化NameNode執(zhí)行Hadoop的bin文件夾中的格式化命令:
[hadoop@
Master~]$hadoopnamenode-format
如果格式化成功,會(huì)返回一堆有關(guān)NameNode的啟動(dòng)信息,其中會(huì)有一句“….hasbeensuccessfullyformatted.”集群Hadoop系統(tǒng)基本安裝步驟集群分布方式安裝過程11.啟動(dòng)HDFS和MapReduce執(zhí)行以下命令啟動(dòng)HDFS和MapReduce[hadoop@
Master
~]$start-all.sh用JPS命令檢查一下是否正常啟動(dòng):
[hadoop@
Master
~]$jps顯示以下各進(jìn)程信息則說明HDFS和MapReduce都已正常啟動(dòng):4706JobTracker4582SecondaryNameNode4278NameNode4413DataNode4853TaskTracker4889Jps12.停止HDFS和MapReduce執(zhí)行以下命令啟動(dòng)HDFS和MapReduce[hadoop@
Master
~]$stop-all.sh集群Hadoop系統(tǒng)基本安裝步驟集群分布方式安裝過程13.運(yùn)行測(cè)試在Linux文件系統(tǒng)下(如/root/test)創(chuàng)建兩個(gè)文本數(shù)據(jù)文件:
file1.txt:hellohadoophelloworld
file2.txt:goodbyehadoop將文件復(fù)制到HDFS文件系統(tǒng)中:
[hadoop@
Master~]$dfs–copyFromLocal/root/testtest-intest-in是在HDFS中建立的一個(gè)數(shù)據(jù)數(shù)據(jù)目錄運(yùn)行hadoop安裝包中自帶的WorldCount程序進(jìn)行測(cè)試:
[hadoop@
Master~]$hadoopjarhadoop-0.21.0-examples.jarwordcounttest-intest-out其中test-out只能由程序創(chuàng)建,不能事先存在集群Hadoop系統(tǒng)基本安裝步驟程序開發(fā)與提交作業(yè)基本過程3.Hadoop集群遠(yuǎn)程作業(yè)提交與執(zhí)行集群分布方式下遠(yuǎn)程提交作業(yè)1.本地完成程序編寫和調(diào)試
在自己本地安裝了單機(jī)或偽分布Hadoop系統(tǒng)的機(jī)器上,完成程序編寫和調(diào)試2.創(chuàng)建用戶賬戶
為了能訪問Hadoop集群提交作業(yè),需要為每個(gè)程序用戶創(chuàng)建一個(gè)賬戶,獲取用戶名、密碼等信息。Hadoop集群遠(yuǎn)程作業(yè)提交與執(zhí)行集群分布方式下遠(yuǎn)程提交作業(yè)3.將數(shù)據(jù)和程序傳送到Hadoop集群準(zhǔn)備好數(shù)據(jù)和程序目錄例如:
me@local:~/workspace$ls-Rwordcount
wordcount:wordcount.jarwordcount/files:file01.txtfile02.txt用scp命令傳送至Hadoop平臺(tái)主機(jī)上:
me@local:~/workspace$scp-rwordcountusername@Master:workspace/wordcountusername@
Master‘spassword:[在此輸入您的密碼]Hadoop集群遠(yuǎn)程作業(yè)提交與執(zhí)行集群分布方式下遠(yuǎn)程提交作業(yè)4.用SSH命令遠(yuǎn)程登錄到Hadoop集群
me@local:~/workspace$sshusername@Masterusername@Master'spassword:[在此輸入您的密碼]5.將數(shù)據(jù)復(fù)制到HDFS中進(jìn)入到程序包所在目錄:username@Master:~$cdworkspace/wordcountusername@Master:~/workspace/wordcount$lsfileswordcount.jar
用hadoopdfs–put命令將數(shù)據(jù)從Linux文件系統(tǒng)中復(fù)制到HDFS:
username@Master:~/workspace/wordcount$hadoopdfs-putfilestest-inHadoop集群遠(yuǎn)程作業(yè)提交與執(zhí)行集群分布方式下遠(yuǎn)程提交作業(yè)6.用hadoopjar命令向Hadoop提交計(jì)算作業(yè)
username@Master:~/workspace/wordcount$hadoopjarwordcount.jartest-intest-out這里的test-in為被統(tǒng)計(jì)的文本文件的目錄,test-out為指定的輸出結(jié)果的目錄,注意test-out目錄事先不能存在,若存在需要先刪除。Hadoop集群遠(yuǎn)程作業(yè)提交與執(zhí)行集群分布方式下遠(yuǎn)程提交作業(yè)7.查看運(yùn)行結(jié)果查看test-out目錄,統(tǒng)計(jì)結(jié)果被輸出到文件test-out/part-r-00000中username@Master:~/workspace/wordcount$hadoopdfs-lstest-outFound2itemsdrwxr-xr-x-hadoopusrsupergroup02010-05-2320:29/user/hadoopusr/test-out/_logs-rw-r--r--1hadoopusrsupergroup352010-05-2320:30/user/hadoopusr/test-out/part-r-00000
查看計(jì)算結(jié)果username@Master:~/workspace/wordcount$hadoopdfs-cattest-out/part-r-00000GoodBye 1Hadoop 2Hello 2World 1
也可以把文件從HDFS中復(fù)制到Linux文件系統(tǒng)中查看username@Master:~/workspace/wordcount$hadoopdfs-gettest-out/part-r-00000test-out.txtusername@Master:~/workspace/wordcount$vitest-out.txtGoodBye 1Hadoop 2Hello 2World 1Hadoop集群遠(yuǎn)程作業(yè)提交與執(zhí)行集群分布方式下遠(yuǎn)程提交作業(yè)8.用Hadoop的Web界面查看Hadoop集群和作業(yè)狀態(tài)在瀏覽器中打開http://NameNode節(jié)點(diǎn)IP:50070/.可看到集群的基本信息Hadoop集群遠(yuǎn)程作業(yè)提交與執(zhí)行集群分布方式下遠(yuǎn)程提交作業(yè)8.用Hadoop的Web界面查看Hadoop集群和作業(yè)狀態(tài)打開頁面中的NamenodeLogs鏈接,可以查看到大量的日志文件,每個(gè)都可以打開查看其內(nèi)容分布式Hadoop集群遠(yuǎn)程作業(yè)提交與執(zhí)行集群分布方式下遠(yuǎn)程提交作業(yè)8.用Hadoop的Web
界面查看Hadoop
集群和作業(yè)狀態(tài)點(diǎn)擊一個(gè)作業(yè)可以
查看作業(yè)的詳細(xì)信息分布式Hadoop集群遠(yuǎn)程作業(yè)提交與執(zhí)行開發(fā)環(huán)境與工具
在程序員本地的單機(jī)Hadoop系統(tǒng)上進(jìn)行程序設(shè)計(jì)與調(diào)試,然后上載到Hadoop集群上運(yùn)行。Eclipse開發(fā)環(huán)境Eclipse是一個(gè)開源的軟件集成開發(fā)環(huán)境(IDE),可以提供對(duì)Java應(yīng)用的編程開發(fā)所需要的完整工具平臺(tái)。Eclipse官方網(wǎng)站:/可以下載Linux版本的EclipseIDEforJava開發(fā)包,并安裝在本地的Linux系統(tǒng)中4.Hadoop
MapReduce程序開發(fā)啟動(dòng)Eclipse
Hadoop
MapReduce程序開發(fā)創(chuàng)建JavaProjectHadoop
MapReduce程序開發(fā)創(chuàng)建JavaProjectHadoop
MapReduce程序開發(fā)配置JavaProject加入外部jar文件加入hadoop-0.21.0-core.jar以及l(fā)ib下所有的jar以及l(fā)ib子目錄下所有的jarHadoop
MapReduce程序開發(fā)配置JavaProject加入外部jar文件加入hadoop-0.21.0-core.jar以及l(fā)ib下所有的jar以及l(fā)ib子目錄下所有的jarHadoop
MapReduce程序開發(fā)編寫程序代碼編寫程序類代碼生成名為example的package生成example.WordCount.java類Hadoop
MapReduce程序開發(fā)WordCount編程示例基本數(shù)據(jù)計(jì)算流程Hadoop
MapReduce程序開發(fā)WordCount編程示例編程實(shí)現(xiàn)程序員主要的編碼工作如下:實(shí)現(xiàn)Map類
實(shí)現(xiàn)Reduce類
實(shí)現(xiàn)main函數(shù)(運(yùn)行Job)Hadoop
MapReduce程序開發(fā)WordCount編程示例實(shí)現(xiàn)Map類這個(gè)類實(shí)現(xiàn)
Mapper接口中的
map方法,輸入?yún)?shù)中的
value是文本文件中的一行,利用
StringTokenizer將這個(gè)字符串拆成單詞,然后通過context.write收集<key,value>對(duì)。代碼中
LongWritable,IntWritable,Text均是
Hadoop中實(shí)現(xiàn)的用于封裝
Java數(shù)據(jù)類型的類,這些類都能夠被串行化從而便于在分布式環(huán)境中進(jìn)行數(shù)據(jù)交換,可以將它們分別視為
long,int,String的替代。Hadoop
MapReduce程序開發(fā)WordCount編程示例Map類代碼publicstaticclassTokenizerMapper //定義Map類實(shí)現(xiàn)字符串分解
extendsMapper<Object,Text,Text,IntWritable>{privatefinalstaticIntWritableone=newIntWritable(1);privateTextword=newText();//實(shí)現(xiàn)map()函數(shù)
publicvoidmap(Objectkey,Textvalue,Contextcontext)
throwsIOException,InterruptedException{//將字符串拆解成單詞StringTokenizeritr=newStringTokenizer(value.toString()); while(itr.hasMoreTokens()){word.set(itr.nextToken()); //將分解后的一個(gè)單詞寫入word類
context.write(word,one); //收集<key,value>}}}Hadoop
MapReduce程序開發(fā)詳細(xì)WordCount程序代碼Map類代碼publicstaticclassTokenizerMapper //定義Map類實(shí)現(xiàn)字符串分解
extendsMapper<Object,Text,Text,IntWritable>{privatefinalstaticIntWritableone=newIntWritable(1);privateTextword=newText();//實(shí)現(xiàn)map()函數(shù)
publicvoidmap(Objectkey,Textvalue,Contextcontext)
throwsIOException,InterruptedException{//將字符串拆解成單詞StringTokenizeritr=newStringTokenizer(value.toString()); while(itr.hasMoreTokens()){word.set(itr.nextToken()); //將分解后的一個(gè)單詞寫入word類
context.write(word,one); //收集<key,value>}}}Hadoop
MapReduce程序開發(fā)詳細(xì)WordCount程序代碼實(shí)現(xiàn)Reduce類這個(gè)類實(shí)現(xiàn)
Reducer接口中的
reduce方法,輸入?yún)?shù)中的(key,values)是由
Map任務(wù)輸出的中間結(jié)果,values是一個(gè)
Iterator,遍歷這個(gè)
Iterator,就可以得到屬于同一個(gè)
key的所有
value.此處,key是一個(gè)單詞,value是詞頻。只需要將所有的
value相加,就可以得到這個(gè)單詞的總的出現(xiàn)次數(shù)。Hadoop
MapReduce程序開發(fā)詳細(xì)WordCount程序代碼Reduce類代碼//定義Reduce類規(guī)約同一key的valuepublicstaticclassIntSumReducerextendsReducer<Text,IntWritable,Text,IntWritable>{privateIntWritableresult=newIntWritable();//實(shí)現(xiàn)reduce()函數(shù)publicvoidreduce(Textkey,Iterable<IntWritable>values,Contextcontext)throwsIOException,InterruptedException{intsum=0;
//遍歷迭代器values,得到同一key的所有valuefor(IntWritableval:values){sum+=val.get();}result.set(sum);
//產(chǎn)生輸出對(duì)<key,value>context.write(key,result); }}Hadoop
MapReduce程序開發(fā)詳細(xì)WordCount程序代碼實(shí)現(xiàn)main函數(shù)(運(yùn)行Job)在
Hadoop中一次計(jì)算任務(wù)稱之為一個(gè)
job,
main函數(shù)主要負(fù)責(zé)新建一個(gè)Job對(duì)象并為之設(shè)定相應(yīng)的Mapper和Reducer類,以及輸入、輸出路徑等。Hadoop
MapReduce程序開發(fā)詳細(xì)WordCount程序代碼main函數(shù)代碼publicstaticvoidmain(String[]args)throwsException{//為任務(wù)設(shè)定配置文件
Configurationconf=newConfiguration(); //命令行參數(shù)
String[]otherArgs=newGenericOptionsParser(conf,args).getRemainingArgs(); if(otherArgs.length!=2){System.err.println("Usage:wordcount<in><out>");System.exit(2);} Jobjob=newJob(conf,“wordcount”); //新建一個(gè)用戶定義的Jobjob.setJarByClass(WordCount.class); //設(shè)置執(zhí)行任務(wù)的jar
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年鋼琴贈(zèng)與合同樣本
- 2024年版軟件著作權(quán)合作開發(fā)協(xié)議范本版B版
- 2024年甲方與乙方關(guān)于煤炭開采合同
- 2024版商業(yè)交易協(xié)議模板版
- 2025年度動(dòng)漫IPVI設(shè)計(jì)授權(quán)協(xié)議
- 2024版建筑施工用高空吊籃安全租賃合同3篇
- 2024年版魚塘綜合利用合同3篇
- 2025版高端帶智能儲(chǔ)物系統(tǒng)住宅租賃合同2篇
- 2024年跨國醫(yī)療器械采購與銷售合同
- 2025年度住宅小區(qū)窗簾統(tǒng)一更換與維護(hù)管理合同3篇
- 2024年度玩具代工生產(chǎn)及銷售合同模板(2024版)3篇
- 2024年小學(xué)五年級(jí)科學(xué)教學(xué)工作總結(jié)(2篇)
- 2023年首都機(jī)場(chǎng)集團(tuán)有限公司招聘考試真題
- 【7歷期末】安徽省蚌埠市2023-2024學(xué)年部編版七年級(jí)歷史上學(xué)期期末統(tǒng)考試卷(含解析)
- 廣東省深圳市重點(diǎn)中學(xué)2021-2022學(xué)年高二上學(xué)期期末生物試題
- 2025年上半年浙江金華市永康市選調(diào)市紀(jì)檢監(jiān)察信息中心工作人員2人重點(diǎn)基礎(chǔ)提升(共500題)附帶答案詳解
- 美國制造業(yè)經(jīng)濟(jì)2024年度報(bào)告-2024-12-宏觀大勢(shì)
- 2024-2025學(xué)年冀教版(三起)英語六年級(jí)上冊(cè)期末測(cè)試卷(含答案無聽力原文無音頻)
- 小區(qū)充電樁安全協(xié)議書范本(2篇)
- 2024年安徽省公務(wù)員錄用考試《行測(cè)》真題及答案解析
- 車間班長(zhǎng)年度述職報(bào)告
評(píng)論
0/150
提交評(píng)論