版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、Ch.5. Hadoop系統(tǒng)安裝運(yùn)行 與程序開發(fā),南京大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)系 主講人:黃宜華 2012年春季學(xué)期,MapReduce海量數(shù)據(jù)并行處理,鳴謝:本課程得到Google公司(北京) 中國(guó)大學(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.Hadoop MapReduce程序開發(fā) 5.實(shí)驗(yàn)1:安裝單機(jī)Hadoop系統(tǒng),Hadoop系統(tǒng)運(yùn)行的軟件環(huán)境 Linux操作系統(tǒng) 如RHELS 6.0 (Red Hat Enterprise Linux S
2、erver 6.0) 直接安裝Linux Window下安裝Linux虛擬機(jī) SSH(Secure Shell) 主要用于遠(yuǎn)程管理Hadoop節(jié)點(diǎn)以及Hadoop節(jié)點(diǎn)間的安全共享訪問 Java 如Java1.6.0,Hadoop系統(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)
3、行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 如果安裝RHELS 6.0 , 確保軟件安裝時(shí)把SS
4、H選上;如果安裝Linux時(shí)沒有安裝SSH,則需要另行安裝SSH 3. 安裝Java 下載和安裝Java,將java安裝在root/usr/java目錄下,單機(jī)Hadoop系統(tǒng)基本安裝步驟,單機(jī)和單機(jī)偽分布方式安裝過程 4. 創(chuàng)建用戶 為Hadoop創(chuàng)建一個(gè)專門的用戶組如hadoop-user,然后在該用戶組下創(chuàng)建Hadoop用戶??稍诎惭b系統(tǒng)的時(shí)候創(chuàng)建,也可以在安裝好之后用如下命令創(chuàng)建: rootSiler # groupadd hadoop-user rootSiler # useradd -g hadoop_user -d /home/hadoop hadoop “hadoop”是所創(chuàng)建
5、的用戶名, -d指明“ hadoop”用戶的home目錄是/home/hadoop ) rootSiler # passwd hadoop 給用戶hadoop設(shè)置口令,單機(jī)Hadoop系統(tǒng)基本安裝步驟,單機(jī)和單機(jī)偽分布方式安裝過程 5. 解壓安裝Hadoop 到Hadoop官網(wǎng)下載hadoop-0.21.0.tar.gz 建立安裝目錄 hadoopSiler mkdir /hadoop_installs 把hadoop-0.21.0.tar.gz放在這里,然后解壓: hadoopSiler hadoop_installs$ tar zxvf hadoop-0.21.0.tar.gz,單機(jī)Had
6、oop系統(tǒng)基本安裝步驟,單機(jī)和單機(jī)偽分布方式安裝過程 Hadoop版本信息 根據(jù)Apache Hadoop官方提供的release,目前有以下版本可下載: 0.20.x.x :hadoop-0.20.2/,hadoop-/,hadoop-/,hadoop-/ 0.21.x, 0.22.x, 0.23.x:hadoop-0.21.0/,hadoop-0.22.0/,hadoop-0.23.0/,hadoop-0.23.1/ 1.0版本:hadoop-1.0.0/,hadoop-1.0.1/ 其中 是目前最穩(wěn)定的版本,
7、發(fā)布于2011年5月11日,官方的說明是:“It is stable and has been deployed in large (4,500 machine) production clusters”。 其后的, 有若干的bug fix 和 improvements。 到2011年12月27日,在 的基礎(chǔ)上發(fā)布了hadoop-1.0.0 /common/releases.html#27+December%2C+2011%3A+release+1.0.0+available 目前我們開
8、課及對(duì)外提供服務(wù)的Hadoop 集群是版本的, IP為1。 Hadoop-0.20.xxx 的API是一致的 課程中可以參考/common/docs/r/api/index.html 或者參考所下載的Hadoop包中docs文件夾下的內(nèi)容,單機(jī)Hadoop系統(tǒng)基本安裝步驟,單機(jī)和單機(jī)偽分布方式安裝過程 6. 配置環(huán)境變量 進(jìn)入到“hadoop”用戶下 rootSiler # su hadoop 注意中間的”-”不要丟 hadoopSiler $ 編輯/.bash_profile文件(
9、用vi 或gedit) vi /.bash_profile 設(shè)置如下環(huán)境變量: PATH=$PATH:$HOME/bin export JAVA_HOME=/usr/java/java-1.6.0 export HADOOP_HOME=/home/hadoop/hadoop_installs/hadoop-0.21.0 export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin export CLASSPATH=$JAVA_HOME/lib:.,單機(jī)Hadoop系統(tǒng)基本安裝步驟,單機(jī)和單機(jī)偽分布方式安裝過程 7. 免密碼SSH訪問配置 在偽分布模式下(集
10、群分布模式更需要這個(gè)設(shè)置過程),為了實(shí)現(xiàn)免密碼SSH登陸連接,需要進(jìn)行相應(yīng)的配置。方式是創(chuàng)建一個(gè)認(rèn)證文件,然后用public key實(shí)現(xiàn)免密碼的登錄連接。過程如下: 執(zhí)行命令產(chǎn)生認(rèn)證文件 hadoopSiler $ ssh -keygen -t rsa -P 一直敲回車,然后將在/home/hadoop/.ssh目錄下生成id_rsa認(rèn)證文件 將該文件復(fù)制到名為authorized_keys的文件 hadoopSiler cat /.ssh/id_rsa.pub /.ssh/authorized_keys 然后測(cè)試一下看看能不能登錄: hadoopSiler ssh localhost,單機(jī)H
11、adoop系統(tǒng)基本安裝步驟,單機(jī)和單機(jī)偽分布方式安裝過程 什么是SSH? SSH(Secure Shell),是建立在應(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)過壓縮的,所以可以加
12、快傳輸?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:主要完成HDF
13、S的數(shù)據(jù)塊副本等參數(shù)設(shè)置 conf/mapred-site.xml:主要完成JobTracker IP和端口設(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文件夾中的格式化命令: hadoopSiler $ hadoop namenode -format 如果格式化成功,會(huì)返回一堆有關(guān)NameNode的啟動(dòng)信息,其中會(huì)有一句“. has been successfully formatted.”,單機(jī)Hadoop
14、系統(tǒng)基本安裝步驟,單機(jī)和單機(jī)偽分布方式安裝過程 10. 啟動(dòng)HDFS和MapReduce 執(zhí)行以下命令啟動(dòng)HDFS和MapReduce hadoopSiler $ start-all.sh 用JPS命令檢查一下是否正常啟動(dòng): hadoopSiler $ jps 顯示以下各進(jìn)程信息則說明HDFS和MapReduce都已正常啟動(dòng): 4706 JobTracker 4582 SecondaryNameNode 4278 NameNode 4413 DataNode 4853 TaskTracker 4889 Jps 11. 停止HDFS和MapReduce 執(zhí)行以下命令啟動(dòng)HDFS和MapReduc
15、e hadoopSiler$ 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:hello hadoop hello world file2.txt: goodbye hadoop 將文件復(fù)制到HDFS文件系統(tǒng)中: hadoopSiler $ dfs copyFromLocal /root/test test-in test-in是在HDFS中建立的一個(gè)數(shù)據(jù)數(shù)據(jù)目錄 運(yùn)行hadoop安裝包中自帶的WordCount程序進(jìn)行測(cè)試: hadoopSil
16、er $ hadoop jar hadoop-0.21.0-examples.jar wordcount test-in test-out 其中test-out只能由程序創(chuàng)建,不能事先存在,單機(jī)Hadoop系統(tǒng)基本安裝步驟,集群分布方式安裝過程 1. 操作系統(tǒng)安裝 在每個(gè)節(jié)點(diǎn)上安裝Linux或Window下虛擬Linux,假設(shè)安裝后機(jī)器名為Master。 2. 安裝SSH 如果安裝RHELS 6.0 , 確保軟件安裝時(shí)把SSH選上;如果安裝Linux時(shí)沒有安裝SSH,則需要另行安裝SSH 3. 安裝Java 下載和安裝Java,將java安裝在root/usr/java目錄下,2. 集群Had
17、oop系統(tǒng)基本安裝步驟,集群分布方式安裝過程 4. 創(chuàng)建用戶 為Hadoop創(chuàng)建一個(gè)專門的用戶組如hadoop-user,然后在該用戶組下創(chuàng)建Hadoop用戶??稍诎惭b系統(tǒng)的時(shí)候創(chuàng)建,也可以在安裝好之后用如下命令創(chuàng)建: root Master # groupadd hadoop-user root Master # useradd -g hadoop_user -d /home/hadoop hadoop “hadoop”是所創(chuàng)建的用戶名, -d指明“ hadoop”用戶的home目錄是/home/hadoop ) root Master # passwd hadoop 給用戶hadoop設(shè)置
18、口令 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 Master hadoop_installs$ tar zxvf had
19、oop-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”用戶下 rootSiler # su hadoop 注意中間的”-”不要丟 hadoopSiler $ 編輯/.bash_profile文件(用vi 或gedit) vi /.bash_profile 設(shè)置如下環(huán)境變量: PATH=$PATH:$HOME/bin export JAVA_HOME=/usr/java/java-1.6.0 export HADOO
20、P_HOME=/home/hadoop/hadoop_installs/hadoop-0.21.0 export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin export CLASSPATH=$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)證文件,然后用public key實(shí)現(xiàn)免密碼的登錄連接。過程如下: 執(zhí)行命令產(chǎn)生認(rèn)證文件 hadoop Master $ ssh -k
21、eygen -t rsa -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)上 hadoopMaster $ scp authorized_keys 從節(jié)點(diǎn)主機(jī)名或IP:/home/hadoop/.ssh,集群Hadoop系統(tǒng)基本安裝步驟,集群分布方式安裝過程 8.在主節(jié)點(diǎn)上修改hadoop配置文件 Hadoop的配置文件存放在hado
22、op安裝目錄下的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:主要完成JobTracker IP和端口設(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)基
23、本安裝步驟,集群分布方式安裝過程 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)
24、上: 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 $ hadoop namenode -format 如果格式化成功,會(huì)返回一堆有關(guān)NameNode的啟動(dòng)信息,其中會(huì)有一句“. has been successfully formatted.”,集群Hadoop系統(tǒng)基本安
25、裝步驟,集群分布方式安裝過程 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): 4706 JobTracker 4582 SecondaryNameNode 4278 NameNode 4413 DataNode 4853 TaskTracker 4889 Jps 12. 停止HDFS和MapReduce 執(zhí)行以下命令啟動(dòng)HDFS和MapReduce had
26、oop Master $ stop-all.sh,集群Hadoop系統(tǒng)基本安裝步驟,集群分布方式安裝過程 13. 運(yùn)行測(cè)試 在Linux文件系統(tǒng)下(如/root/test)創(chuàng)建兩個(gè)文本數(shù)據(jù)文件: file1.txt:hello hadoop hello world file2.txt:goodbye hadoop 將文件復(fù)制到HDFS文件系統(tǒng)中: hadoop Master $ dfs copyFromLocal /root/test test-in test-in是在HDFS中建立的一個(gè)數(shù)據(jù)數(shù)據(jù)目錄 運(yùn)行hadoop安裝包中自帶的WorldCount程序進(jìn)行測(cè)試: hadoop Master
27、 $ hadoop jar hadoop-0.21.0-examples.jar wordcount test-in test-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
28、.將數(shù)據(jù)和程序傳送到Hadoop集群 準(zhǔn)備好數(shù)據(jù)和程序目錄 例如: melocal:/workspace$ ls -R wordcount wordcount: wordcount.jar wordcount/files: file01.txt file02.txt 用scp命令傳送至Hadoop平臺(tái)主機(jī)上: melocal:/workspace$ scp -r wordcount usernameMaster :workspace/wordcount username Masters password: 在此輸入您的密碼,Hadoop集群遠(yuǎn)程作業(yè)提交與執(zhí)行,集群分布方式下遠(yuǎn)程提交作業(yè) 4.用
29、SSH命令遠(yuǎn)程登錄到Hadoop集群 melocal:/workspace$ ssh usernameMaster usernameMasters password: 在此輸入您的密碼 5.將數(shù)據(jù)復(fù)制到HDFS中 進(jìn)入到程序包所在目錄: usernameMaster:$ cd workspace/wordcount usernameMaster:/workspace/wordcount$ ls files wordcount.jar 用hadoop dfs put命令將數(shù)據(jù)從Linux文件系統(tǒng)中復(fù)制到HDFS: usernameMaster:/workspace/wordcount$ hado
30、op dfs -put files test-in,Hadoop集群遠(yuǎn)程作業(yè)提交與執(zhí)行,集群分布方式下遠(yuǎn)程提交作業(yè) 6.用hadoop jar命令向Hadoop提交計(jì)算作業(yè) usernameMaster:/workspace/wordcount$ hadoop jar wordcount.jar test-in test-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é)果被輸出
31、到文件test-out/part-r-00000中 usernameMaster:/workspace/wordcount$ hadoop dfs -ls test-out Found 2 items drwxr-xr-x - hadoopusr supergroup 0 2010-05-23 20:29 /user/hadoopusr/test-out/_logs -rw-r-r- 1 hadoopusr supergroup 35 2010-05-23 20:30 /user/hadoopusr/test-out/part-r-00000 查看計(jì)算結(jié)果 usernameMaster:/wo
32、rkspace/wordcount$ hadoop dfs -cat test-out/part-r-00000 GoodBye1 Hadoop2 Hello2 World1 也可以把文件從HDFS中復(fù)制到Linux文件系統(tǒng)中查看 usernameMaster:/workspace/wordcount$ hadoop dfs -get test-out/part-r-00000 test-out.txt usernameMaster:/workspace/wordcount$ vi test-out.txt GoodBye1 Hadoop2 Hello2 World1,Hadoop集群遠(yuǎn)程作業(yè)
33、提交與執(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) 打開頁(yè)面中的Namenode Logs鏈接,可以查看到大量的日志文件,每個(gè)都可以打開查看其內(nèi)容,分布式Hadoop集群遠(yuǎn)程作業(yè)提交與執(zhí)行,集群分布方式下遠(yuǎn)程提交作業(yè) 8.用Hadoop的Web 界面查看Hadoop 集群和作業(yè)狀態(tài) 點(diǎn)擊一個(gè)作業(yè)可以 查看作業(yè)的詳細(xì)信息,分布式
34、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版本的Eclipse IDE for Java開發(fā)包,并安裝在本地的Linux系統(tǒng)中,4. Hadoop MapReduce程序開發(fā),啟動(dòng)Eclipse,Hadoop MapReduce程序開發(fā),創(chuàng)建Java Project,Hado
35、op MapReduce程序開發(fā),創(chuàng)建Java Project,Hadoop MapReduce程序開發(fā),配置Java Project 加入外部jar文件 加入hadoop-0.21.0 -core.jar 以及l(fā)ib下所有的jar 以及l(fā)ib子目錄下 所有的jar,Hadoop MapReduce程序開發(fā),配置Java Project 加入外部jar文件 加入hadoop-0.21.0 -core.jar 以及l(fā)ib下所有的jar 以及l(fā)ib子目錄下 所有的jar,Hadoop MapReduce程序開發(fā),編寫程序代碼 編寫程序類代碼 生成名為example 的package 生成examp
36、le. 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收集對(duì)。 代碼中 Lon
37、gWritable, IntWritable, Text 均是 Hadoop 中實(shí)現(xiàn)的用于封裝 Java 數(shù)據(jù)類型的類,這些類都能夠被串行化從而便于在分布式環(huán)境中進(jìn)行數(shù)據(jù)交換,可以將它們分別視為 long, int, String 的替代。,Hadoop MapReduce程序開發(fā),WordCount編程示例 Map類代碼 public static class TokenizerMapper /定義Map類實(shí)現(xiàn)字符串分解 extends Mapper private final static IntWritable one = new IntWritable(1); private Text
38、 word = new Text(); /實(shí)現(xiàn)map()函數(shù) public void map(Object key, Text value, Context context) throws IOException, InterruptedException /將字符串拆解成單詞 StringTokenizer itr = new StringTokenizer(value.toString(); while (itr.hasMoreTokens() word.set(itr.nextToken();/將分解后的一個(gè)單詞寫入word類 context.write(word, one);/收集 ,
39、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的
40、value public static class IntSumReducer extends Reducer private IntWritable result = new IntWritable(); /實(shí)現(xiàn)reduce()函數(shù) public void reduce(Text key, Iterable values, Context context ) throws IOException, InterruptedException int sum = 0; /遍歷迭代器values,得到同一key的所有value for (IntWritable val : values) sum
41、+= val.get(); result.set(sum); /產(chǎn)生輸出對(duì) 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ù)代碼 public static void main(String args) throws Exception
42、 /為任務(wù)設(shè)定配置文件 Configuration conf = new Configuration(); /命令行參數(shù) String otherArgs = new GenericOptionsParser(conf, args).getRemainingArgs(); if (otherArgs.length != 2) System.err.println(Usage: wordcount ); System.exit(2); Job job = new Job(conf, “word count”);/新建一個(gè)用戶定義的Job job.setJarByClass(WordCount.class);/設(shè)置執(zhí)行任務(wù)的jar job.setMapperClass(Tok
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 紡織財(cái)務(wù)制度
- 管家財(cái)務(wù)制度
- 建筑企業(yè)沖賬財(cái)務(wù)制度
- 賓館保管寄存財(cái)務(wù)制度
- 菜鳥驛站財(cái)務(wù)制度
- 農(nóng)公副產(chǎn)品制度
- 公司?;诽幜P制度
- 養(yǎng)老院老人關(guān)愛服務(wù)制度
- 企業(yè)人事財(cái)務(wù)管理制度(3篇)
- 中餐餐飲品牌管理制度(3篇)
- (2025年)軍隊(duì)文職考試面試真題及答案
- DBJ50T-100-2022 建筑邊坡工程施工質(zhì)量驗(yàn)收標(biāo)準(zhǔn)
- 制造部年終總結(jié)
- DB51-T 192-2024 公園城市綠色景觀圍墻營(yíng)建指南
- 《食品標(biāo)準(zhǔn)與法規(guī)》課件全套 第1-6章 緒論-食品生產(chǎn)經(jīng)營(yíng)許可和認(rèn)證管理
- JBT 7562-2016 YEZX系列起重用錐形轉(zhuǎn)子制動(dòng)三相異步電動(dòng)機(jī) 技術(shù)條件
- 建筑工地安全形勢(shì)分析
- 【拼多多公司盈利能力探析11000字(論文)】
- 區(qū)域地質(zhì)調(diào)查及填圖方法
- 新生兒疫苗接種的注意事項(xiàng)與應(yīng)對(duì)措施
- 膿毒癥休克患者的麻醉管理
評(píng)論
0/150
提交評(píng)論