自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Hadoop2.2.0多節(jié)點分布式安裝及測試

開發(fā) 前端 分布式 Hadoop
眾所周知,hadoop在10月底release了最新版2.2。很多國內(nèi)的技術(shù)同仁都馬上在網(wǎng)絡(luò)上推出了自己對新版hadoop的配置心得。

眾所周知,hadoop在10月底release了最新版2.2。很多國內(nèi)的技術(shù)同仁都馬上在網(wǎng)絡(luò)上推出了自己對新版hadoop的配置心得。這其中主要分為兩類:

1.單節(jié)點配置

這個太簡單了,簡單到只要懂點英語,照著網(wǎng)上說的做就ok了。我這里不談這個,有興趣的童鞋可以自己去問度娘和谷哥~

2.多節(jié)點配置

這個就是我要重點說明的,老實說網(wǎng)絡(luò)上說的的確是多節(jié)點,但不是真正的分布式部署~ 我們?yōu)槭裁匆胔adoop?因為hadoop是一個分布式系統(tǒng)基礎(chǔ)架構(gòu),我們可以在不了解分布式底層細節(jié)的情況下,開發(fā)分布式程序。充分利用集群的威力進行高速運算和存儲。 如果只是多節(jié)點,但是程序還在一個節(jié)點運行,其它節(jié)點沒有參與程序運行活動。 那和你在網(wǎng)吧里,自己一個人看片子和其他人無交集有什么區(qū)別? 所以網(wǎng)上提供的都是多節(jié)點偽分布式的配置~

接下來我會貢獻出自己這幾天弄的一些心得,或許有人看了開頭覺得我寫的和網(wǎng)上那些差不多,但是真正的區(qū)別我會在之后列出來,就看誰有耐心看完我寫的東西啦~霍霍~

準備

我用的linux系統(tǒng)是ubuntu 12.04 LTS server版(就是沒有桌面顯示的版本)。 虛擬機用的是VMWare Workstation10,ssh客戶端是開源的putty,還有ftp客戶端軟件是cuteFTP(雖然可以在linux系統(tǒng)里用vim對文件進行編輯修改,但我覺得有客戶端直接在windows系統(tǒng)里修改文件比較方便和高效)。 tomcat版本是6.0.29,jdk版本是1.7.45。虛擬機里ubuntu的網(wǎng)絡(luò)設(shè)置我用的是UAT模式,也就是說和外部window系統(tǒng)的網(wǎng)絡(luò)配置是共享的,除了IP地址不一樣,其他都雷同。

安裝tomcat和jdk什么我就不用說了。還有初始的分辨率是600x800,需要重調(diào)我也不說了。至于安裝vsftpd和openssh,我更加不說了。度娘和谷哥都知道。

這里就列我弄的兩個ubuntu系統(tǒng)。hadoop里把主節(jié)點系統(tǒng)叫為master,從節(jié)點系統(tǒng)叫為slave。master只能有一 個,slave可以有許多個。就如一個老板可以有很多員工為他打工一樣。(當然在很多情況下,還會有個做備份的master,防止master出問題時 候,有個替補直接頂上)

為了行文方便,后面我就直接用master和slave稱呼這兩個。(網(wǎng)上都喜歡用三節(jié)點做例子,一個master兩個slave,我簡化了一下,就一個master和一個slave,反正都是以此類推的東西,搞簡單點)

我的系統(tǒng)原始信息:

  hostname IP address
master hadoop 192.168.72.130
slave hadoop1 192.168.72.128

hostname是自己改的,IP地址是你安裝完你的ubuntu后,電腦在UAT模式下自動生成的IP地址。請根據(jù)你自己情況記錄這些信息。還有hostname如何永久地改成hadoop和hadoop1,請問度娘和谷哥。

每個ubuntu里分別加入專為hadoop使用的帳號

命令:

addgroup hadoop adduser ingroup hadoop wujunshen

這個wujunshen是我在用VMWare安裝ubuntu時候,讓我自己設(shè)定的帳號名字,大家可以自行設(shè)定。但是hadoop這個用戶組名最好不要改。

有人會問 ubuntu里非root賬戶登錄后,輸入命令開頭不都要打sudo么?這個其實也可以設(shè)置,再次提醒請問度娘和谷哥。這里哥給個當年自己記錄的博文鏈接: http://darkranger.iteye.com/admin/blogs/768608

注意:兩個ubuntu的hadoop帳號名要一樣,不一樣就算你配置好了,測試時候也不成功的。我看了一下hadoop的代碼,它好像是在hadoop代碼里寫死了讀取帳號名的值。(shell不太會,只看了個大概) 有人說要在系統(tǒng)里設(shè)置%HADOOP_HOME%為你安裝hadoop的路徑,就可以帳號名不一樣了。 我沒試驗過,因為我覺得測試這個有點無聊了,或許《生活大爆炸》里Sheldon會這么做。:)

建立兩個系統(tǒng)ssh通信互相信任關(guān)系

要在兩個系統(tǒng)上每一個進行以下操作。(如果slave有很多個,這樣做是很浪費時間的,一般都要用個shell自動化腳本來建立信任關(guān)系。這里只是示例,麻煩各位手打或copy了。)

進入wujunshen帳號,輸入命令

ssh-keygen -t rsa -P "" cat .ssh/id_rsa.pub >>.ssh/authorized_keys (出現(xiàn)兩個問題,第一個問題回車就行,第二個輸入y回車,千萬不要直接回車,否則不會生成key)  

注意:如果出現(xiàn)錯誤:-bash: .ssh/authorized_keys: No such file or directory 這是由于新建好的用戶帳號,比如我這里是wujunshen這個帳號,默認沒有.ssh目錄,需要自己建立。

mkdir -p ~/.ssh

接下來還有一步,我用cuteFTP做的,覺得自己牛逼的可以用linux的拷貝粘貼命令搞。

在每個ubuntu下找到剛才生成的authorized_keys文件,我這里路徑是: /home/wujunshen/.ssh/authorized_keys

修改該文件,讓此文件包含生成的rsa字符串(有關(guān)RSA加密算法的由來,你還是可以去問度娘和谷哥,那是個傳奇的故事)和兩個ubuntu的hostname,比如我這里是:

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDEBNUjKbZQOQsc6iNawm5VxXk+Kx5MXS1A6ZX/xtAfAI3jurVTgNHz6T2exf/dHP3aoaK49vl6EeMg4hZ7qwxldeERMXNBu5m0y/JyRupX9RfHRjJyqSXRdJ1WjE2ySPtXdLNPjKDvzjf61dSP/iMXeemlZfZV2VNqJiLTlpG3OvjraICUXCXMMB4h72Qm59iIHZ4iRI2v5VMmp+CeGEqHba0O8UUkpSpqC8vZCFJKL+IfCFups9OGrKIT854/Xc+vPSd89jA3RLubJThE/F/8QczqSBHXYrLeUMir3lFEPqLe7U4jk5n83/3fAsagaUyXBCWGm7LanLgXsqMfKBxD wujunshen@hadoop1 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC+umV0w7qcQyHJzfqRc+mHE+eCWw8Ns/uU05CF4fEJnGkys+0Itwsh+edwt8K4oHZ8rK0THO1ip2oNXHzVJ8aJ7rpeI19N0BubCahhGbVNqzgyGgvbnz3+xD/La47YNBzjHF4AxTu+Dj51vOp1yRaiTwhu93o9PP18x2Ai7aNQEap7pGpBwogbfSWDBvZNq9PJYinjzhnVqJ7bctJe+1ufme7bX+vyu1hrdtfpwXgW5GiXQ6uvYH6ExiTSWlLFMyDgD63APm1P2Hs1hlR1gNE3SC4q34mfExhoxY3JJgfbP0x2rt8PfdWk5Lzxtaylj85bmZi/9xDvXdoqjtSv4Mxb wujunshen@hadoop

保證每個ubuntu系統(tǒng)的authorized_keys文件都包含wujunshen@hadoop1和wujunshen@hadoop以及它們的rsa字符串.

然后在其中一個ubuntu上進行測試,比如我這里在master里輸入

ssh hadoop1  

去訪問slave,這樣就不需要輸入密碼就能訪問hadoop1,然后我輸入

ssh hadoop  

回到master。

結(jié)果如下:

wujunshen@hadoop:~$ ssh hadoop1 Welcome to Ubuntu 12.04.3 LTS (GNU/Linux 3.8.0-29-generic i686) * Documentation:  https://help.ubuntu.com/ Last login: Wed Nov 27 19:29:55 2013 from hadoop wujunshen@hadoop1:~$ ssh hadoop Welcome to Ubuntu 12.04.3 LTS (GNU/Linux 3.8.0-29-generic i686) * Documentation:  https://help.ubuntu.com/  Last login: Wed Nov 27 19:30:03 2013 from hadoop1 wujunshen@hadoop:~$

截圖:

enter image description here

注意:如果ssh hadoop或ssh hadoop1 出現(xiàn)錯誤: Host key verification failed

解決方法:到 /home/wujunshen/.ssh目錄下找到known_hosts文件,刪除known_hosts文件。命令

rm known_hosts  

#p#

安裝

去官網(wǎng)下載hadoop-2.2.0.tar.gz

然后在兩個ubuntu里進行以下操作。

解壓壓縮包在/home/wujunshen目錄下

命令:

tar zxf hadoop-2.2.0.tar.gz  

解開之后是個hadoop-2.2.0文件夾,改名為hadoop

命令:

mv hadoop-2.2.0 hadoop  

安裝結(jié)束。(安裝很簡單,但你要想用起來,接下來是重頭戲)

配置

以下操作,master和slave都是一樣的。

在/home/wujunshen/hadoop/etc/hadoop下找 hadoop-env.sh,修改此文件 找到export JAVA_HOME這一列,后面改成自己的jdk安裝目錄,比如我這里是/usr/lib/jdk1.7.0_45

改成

export JAVA_HOME=/usr/lib/jdk1.7.0_45  

在同一路徑下找 core-site.xml,修改它在 < configuration >中添加:

  1. <property> 
  2.  <name>hadoop.tmp.dir</name> 
  3.  <value>/home/wujunshen/hadoop/tmp/hadoop-${user.name}</value> 
  4.  <description>A base for other temporarydirectories.</description> 
  5.  </property> 
  6.  <property> 
  7.  <name>fs.default.name</name> 
  8.  <value>hdfs://192.168.72.130:8010</value> 
  9.  <description>The name of the default file system.  A URI whose 
  10.    scheme and authority determine the FileSystem implementation.  The 
  11.    uri's scheme determines the config property (fs.SCHEME.impl) naming 
  12.    the FileSystem implementation class. The uri's authority is used to 
  13.    determine the host, port, etc. for a filesystem.</description> 
  14. </property>   

注意

  1. /home/wujunshen/hadoop下缺省是沒有tmp文件夾的,要用命令: mkdir /home/wujunshen/hadoop/tmp創(chuàng)建
  2. hdfs://192.168.72.130:8010 里的IP地址就是master 的IP地址

同一路徑下修改 mapred-site.xml

因為缺省是沒有這個文件的,要用模板文件造一個,命令為:

  1. mv /home/wujunshen/hadoop/etc/hadoop/mapred-site.xml.template /home/hduser/hadoop/etc/hadoop/mapred-site.xml   

在 < configuration >中添加:

  1. <property> 
  2. <name>mapred.job.tracker</name> 
  3. <value>192.168.72.130:54311</value> 
  4. <description>The host and port that the MapReduce job tracker runs 
  5.  at.  If "local", thenjobs are run in-process as a single map 
  6.  and reduce task. 
  7.  </description> 
  8.  </property> 
  9.  
  10. <property> 
  11. <name>mapred.map.tasks</name> 
  12. <value>10</value> 
  13. <description>As a rule of thumb, use 10x the number of slaves(i.e., number of tasktrackers).           
  14. </description> 
  15. </property> 
  16.  
  17. <property> 
  18. <name>mapred.reduce.tasks</name> 
  19. <value>2</value> 
  20. <description>As a rule of thumb, use 2x the number of slaveprocessors (i.e., number of tasktrackers). 
  21. </description> 
  22. </property> 

注意:< value >192.168.72.130:54311< /value >里的IP地址就是master 的IP地址

同一路徑下修改 hdfs-site.xml, 在 < configuration >中添加:

  1. <property> 
  2. <name>dfs.replication</name> 
  3. <value>1</value> 
  4. <description>Default block replication. 
  5.  Theactual number of replications can be specified when the file is created. 
  6.  Thedefault is used if replication is not specified in create time. 
  7.  </description> 
  8. </property>  

注意:< value >1< /value >里的數(shù)字1表明的是dfs文件備份個數(shù), 如果你只有3個slave,但是你卻指定值為4,那么這是不會生效的,因為每個salve上只能存放一個備份文件。 如果你設(shè)置了100個slave,那么這個就寫100。 我這里slave就1個,就寫了1。 網(wǎng)上那些因為都是三節(jié)點,一個master,兩個slave,所以都寫2,但網(wǎng)上很少有人會說要根據(jù)實際slave的個數(shù)修改。

同一路徑下修改slaves文件 增加所有slaves的hostname。比如我這里slave就一個,hostname是hadoop1,所以只有一個hadoop1,該文件內(nèi)容只為

  1. hadoop1   

運行

所有操作只需要在master運行即可。系統(tǒng)會自動登錄到slave上。

初次運行Hadoop的時候需要初始化Hadoop文件系統(tǒng) ,在master上輸入命令

  1. cd /home/wujunshen/hadoop/bin 
  2. ./hdfs namenode -format   

執(zhí)行成功,你會在日志中(倒數(shù)幾行)找到如下成功的提示信息:

  1. common.Storage: Storage directory /home/wujunshen/hadoop/tmp/hadoop-wujunshen/dfs/name has been successfully formatted.   

再去啟動hadoop,命令:

  1. cd home/wujunshen/hadoop/sbin/ 
  2. ./start-dfs.sh 
  3. ./start-yarn.sh   

#p#

注意:你也可以直接運行./start-all.sh,不用分開啟動dfs和yarn.第一次運行start-all會出現(xiàn)一個問題,輸入yes就行了。

查看運行結(jié)果 執(zhí)行你的jdk運行目錄下的jps,比如我這里是 /usr/lib/jdk1.7.0_45/bin/

輸入命令:

  1. /usr/lib/jdk1.7.0_45/bin/jps 

在hadoop上結(jié)果為:

  1. 6419 ResourceManager 
  2. 6659 Jps 
  3. 6106 NameNode 
  4. 6277 SecondaryNameNode  

在hadoop1結(jié)果為:

  1. 3930 SecondaryNameNode 
  2. 4222 Jps 
  3. 3817 DataNode 
  4. 3378 NodeManager   

或執(zhí)行命令

  1. cd /home/wujunshen/hadoop/bin 
  2. ./hdfs dfsadmin -report   

結(jié)果:

  1. Configured Capacity: 51653570560 (48.11 GB) 
  2. Present Capacity: 46055575552 (42.89 GB) 
  3. DFS Remaining: 46055550976 (42.89 GB) 
  4. DFS Used: 24576 (24 KB) 
  5. DFS Used%: 0.00% 
  6. Under replicated blocks: 0 
  7. Blocks with corrupt replicas: 0 
  8. Missing blocks: 0 
  9.  
  10. ------------------------------------------------- 
  11. Datanodes available: 1 (1 total, 0 dead) 
  12.  
  13. Live datanodes: 
  14. Name: 192.168.72.128:50010 (hadoop1) 
  15. Hostname: hadoop1 
  16. Decommission Status : Normal 
  17. Configured Capacity: 51653570560 (48.11 GB) 
  18. DFS Used: 24576 (24 KB) 
  19. Non DFS Used: 5597995008 (5.21 GB) 
  20. DFS Remaining: 46055550976 (42.89 GB) 
  21. DFS Used%: 0.00% 
  22. DFS Remaining%: 89.16% 
  23. Last contact: Wed Nov 27 23:56:32 PST 2013 

截圖:

enter image description here

注意:有時候會發(fā)現(xiàn)hadoop1上的datanode沒有出現(xiàn),這個時候以我的體會,最好是把/home/wujunshen/hadoop下的tmp文件夾刪除,然后重新建,重新初始化hadoop文件系統(tǒng),重啟hadoop,然后執(zhí)行兩種查看方式再看看

測試

兩種測試方法,實際是運行了兩個示例程序,一個是wordcount,另外一個是randomwriter

1.執(zhí)行下列命令:

  1. cd /home/wujunshen 
  2. wget http://www.gutenberg.org/cache/epub/20417/pg20417.txt 
  3. cd hadoop 
  4. bin/hdfs dfs -mkdir /tmp 
  5. bin/hdfs dfs -copyFromLocal /home/wujunshen/pg20417.txt /tmp 
  6. bin/hdfs dfs -ls /tmp 
  7. bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.2.0.jar wordcount /tmp/ /tmp-output   

2.執(zhí)行下列命令:

  1. cd  /home/wujunshen/hadoop 
  2. bin/hdfs dfs -mkdir /input 
  3. bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.2.0.jar randomwriter input   

總結(jié)

如果你能看到這里,而且按照我之前說的已經(jīng)運行成功了。那么恭喜你,你實現(xiàn)了hadoop多節(jié)點偽分布式的配置。對的,你沒看錯?。?!就是偽分布式~ 可能有人不服氣會說:怎么到這里就是偽分布式了呢?不是都OK的么?那么我請你仔細看看你測試中選擇的兩種示例程序啟動的job,如圖是運行第二個randomwriter 程序的job:

enter image description here

看到紅框了伐?全是Local!??!也就是說不管你執(zhí)行哪個示例程序,啟動的job都只是在master這個節(jié)點本地運行的job。哪里有讓slave節(jié)點參與了?

再說,看看wordcount這個單詞就知道是個計算單詞的示例程序,如果只有master一個節(jié)點計算,那么這能算分布式多節(jié)點參與計算么? 所以各位朋友,請接著耐心地看下去,看我如何施展魔法讓hadoop真正的進行分布式計算?。。?/p>

#p#

真.配置

之前配置里所說的那些文件修改還是要的。這里我們再對其中一些文件進行修改。

在/home/wujunshen/hadoop/etc/hadoop 下找到 yarn-env.sh,修改它

找到設(shè)置JAVA_HOME的那一列 改成:

  1. export JAVA_HOME=/usr/lib/jdk1.7.0_45   

在/home/wujunshen/hadoop/etc/hadoop 下修改mapred-site.xml 在 < configuration >中添加(原先的配置還留著):

  1. <property> 
  2. <name>mapreduce.framework.name</name> 
  3. <value>yarn</value> 
  4. </property> 
  5. <property> 
  6. <name>mapreduce.jobhistory.address</name> 
  7. <value>192.168.72.130:10020</value> 
  8. </property> 
  9. <property> 
  10. <value>192.168.72.130:19888</value> 
  11. </property>  

在/home/wujunshen/hadoop/etc/hadoop 下修改yarn-site.xml 在 < configuration >中添加:

  1. <property> 
  2.  <name>yarn.resourcemanager.address</name> 
  3.  <value>hadoop:8032</value> 
  4.  </property> 
  5.  
  6. <property> 
  7.  <description>The address of the scheduler interface.</description> 
  8.  <name>yarn.resourcemanager.scheduler.address</name> 
  9.  <value>hadoop:8030</value> 
  10. </property> 
  11. <property> 
  12.  <description>The address of the RM web application.</description> 
  13.  <name>yarn.resourcemanager.webapp.address</name> 
  14.  <value>hadoop:8088</value> 
  15. </property> 
  16. <property> 
  17. <name>yarn.resourcemanager.resource-tracker.address</name> 
  18. <value>hadoop:8031</value> 
  19. </property> 
  20. <property> 
  21. <description>The address of the RM admin interface.</description> 
  22. <name>yarn.resourcemanager.admin.address</name> 
  23. <value>hadoop:8033</value> 
  24. </property> 
  25. <property> 
  26. <description>The address of the RM admin interface.</description> 
  27. <name>yarn.nodemanager.address</name> 
  28. <value>hadoop:10000</value> 
  29. </property> 
  30. <property> 
  31. <name>yarn.nodemanager.aux-services</name> 
  32. <value>mapreduce_shuffle</value> 
  33. </property> 
  34. <property> 
  35. <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name> 
  36. <value>org.apache.hadoop.mapred.ShuffleHandler</value> 
  37. </property>   

注意:這里很多value都是hadoop打頭的,我一開始修改這些文件都是填寫master的IP地址,我后來試驗了一下,其實用master的hostname,也就是hadoop也可以的。

好了重復(fù)測試里那兩個示例程序,這里我運行了randomwriter程序,因為之前已經(jīng)創(chuàng)建過input文件夾,現(xiàn)在執(zhí)行命令會報錯說input已存在,很簡單,后面加個1就行,命令變成

  1. cd  /home/wujunshen/hadoop 
  2. bin/hdfs dfs -mkdir /input1 
  3. bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.2.0.jar randomwriter input1 

重復(fù)執(zhí)行這些命令的話,就把后面改成2,3,4就好了。反正是例子,隨意一點,不用像工作中要取個很正式的名字。

結(jié)果如下:

  1. 13/11/28 19:37:23 INFO mapreduce.Job: Running job: job_1385696103815_0001 
  2. 13/11/28 19:37:43 INFO mapreduce.Job: Job job_1385696103815_0001 running in uber mode : false 
  3. 13/11/28 19:37:43 INFO mapreduce.Job:  map 0% reduce 0% 
  4. 13/11/28 19:51:05 INFO mapreduce.Job:  map 10% reduce 0% 
  5. 13/11/28 19:51:11 INFO mapreduce.Job:  map 20% reduce 0% 
  6. 13/11/28 19:51:13 INFO mapreduce.Job:  map 30% reduce 0% 
  7. 13/11/28 19:51:19 INFO mapreduce.Job:  map 40% reduce 0% 
  8. 13/11/28 19:51:21 INFO mapreduce.Job:  map 50% reduce 0% 
  9. 13/11/28 19:51:40 INFO mapreduce.Job:  map 60% reduce 0% 
  10. 13/11/28 20:03:37 INFO mapreduce.Job:  map 70% reduce 0% 
  11. 13/11/28 20:03:48 INFO mapreduce.Job:  map 80% reduce 0% 
  12. 13/11/28 20:03:49 INFO mapreduce.Job:  map 90% reduce 0% 
  13. 13/11/28 20:03:51 INFO mapreduce.Job:  map 100% reduce 0% 
  14. 13/11/28 20:03:53 INFO mapreduce.Job: Job job_1385696103815_0001 completed successfully 
  15. 13/11/28 20:03:53 INFO mapreduce.Job: Counters: 30 
  16.     File System Counters 
  17.             FILE: Number of bytes read=0 
  18.             FILE: Number of bytes written=789520 
  19.             FILE: Number of read operations=0 
  20.             FILE: Number of large read operations=0 
  21.             FILE: Number of write operations=0 
  22.             HDFS: Number of bytes read=1270 
  23.             HDFS: Number of bytes written=10772863128 
  24.             HDFS: Number of read operations=40 
  25.             HDFS: Number of large read operations=0 
  26.             HDFS: Number of write operations=20 
  27.     Job Counters 
  28.             Killed map tasks=5 
  29.             Launched map tasks=15 
  30.             Other local map tasks=15 
  31.             Total time spent by all maps in occupied slots (ms)=9331745 
  32.             Total time spent by all reduces in occupied slots (ms)=0 
  33.     Map-Reduce Framework 
  34.             Map input records=10 
  35.             Map output records=1021605 
  36.             Input split bytes=1270 
  37.             Spilled Records=0 
  38.             Failed Shuffles=0 
  39.             Merged Map outputs=0 
  40.             GC time elapsed (ms)=641170 
  41.             CPU time spent (ms)=806440 
  42.             Physical memory (bytes) snapshot=577269760 
  43.             Virtual memory (bytes) snapshot=3614044160 
  44.             Total committed heap usage (bytes)=232574976 
  45.     org.apache.hadoop.examples.RandomWriter$Counters 
  46.             BYTES_WRITTEN=10737514428 
  47.             RECORDS_WRITTEN=1021605 
  48.     File Input Format Counters 
  49.             Bytes Read=0 
  50.     File Output Format Counters 
  51.             Bytes Written=10772863128 
  52. Job ended: Thu Nov 28 20:03:53 PST 2013 
  53. The job took 1594 seconds. 

#p#

可以看到這個時候Job名字打頭已經(jīng)不是local了,而是job了。而且可以登錄http://192.168.72.130:8088查看運行的job狀態(tài)

如圖:
enter image description here

上圖還是這個job處于running狀態(tài)時的信息。

完成時信息如下圖:
enter image description here

現(xiàn)在我們再執(zhí)行那個wordcount程序,這里和randomwriter類似。

命令是

  1. cd  /home/wujunshen/hadoop 
  2. bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.2.0.jar wordcount /tmp/ /tmp-output100(為啥是tmp-output100,之前在說randomwriter示例程序時候已經(jīng)說過) 

結(jié)果:

  1. 3/11/29 00:01:40 INFO client.RMProxy: Connecting to ResourceManager at hadoop/192.168.72.130:8032 
  2. 13/11/29 00:01:41 INFO input.FileInputFormat: Total input paths to process : 1 
  3. 13/11/29 00:01:41 INFO mapreduce.JobSubmitter: number of splits:1 
  4. 13/11/29 00:01:41 INFO Configuration.deprecation: user.name is deprecated. Instead, use mapreduce.job.user.name 
  5. 13/11/29 00:01:41 INFO Configuration.deprecation: mapred.jar is deprecated. Instead, use mapreduce.job.jar 
  6. 13/11/29 00:01:41 INFO Configuration.deprecation: mapred.output.value.class is deprecated. Instead, use mapreduce.job.output.value.class 
  7. 13/11/29 00:01:41 INFO Configuration.deprecation: mapreduce.combine.class is deprecated. Instead, use mapreduce.job.combine.class 
  8. 13/11/29 00:01:41 INFO Configuration.deprecation: mapreduce.map.class is deprecated. Instead, use mapreduce.job.map.class 
  9. 13/11/29 00:01:41 INFO Configuration.deprecation: mapred.job.name is deprecated. Instead, use mapreduce.job.name 
  10. 13/11/29 00:01:41 INFO Configuration.deprecation: mapreduce.reduce.class is deprecated. Instead, use mapreduce.job.reduce.class 
  11. 13/11/29 00:01:41 INFO Configuration.deprecation: mapred.input.dir is deprecated. Instead, use mapreduce.input.fileinputformat.inputdir 
  12. 13/11/29 00:01:41 INFO Configuration.deprecation: mapred.output.dir is deprecated. Instead, use mapreduce.output.fileoutputformat.outputdir 
  13. 13/11/29 00:01:41 INFO Configuration.deprecation: mapred.map.tasks is deprecated. Instead, use mapreduce.job.maps 
  14. 13/11/29 00:01:41 INFO Configuration.deprecation: mapred.output.key.class is deprecated. Instead, use mapreduce.job.output.key.class 
  15. 13/11/29 00:01:41 INFO Configuration.deprecation: mapred.working.dir is deprecated. Instead, use mapreduce.job.working.dir 
  16. 13/11/29 00:01:42 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_1385696103815_0009 
  17. 13/11/29 00:01:42 INFO impl.YarnClientImpl: Submitted application application_1385696103815_0009 to ResourceManager at hadoop/192.168.72.130:8032 
  18. 13/11/29 00:01:42 INFO mapreduce.Job: The url to track the job: http://hadoop:8088/proxy/application_1385696103815_0009/ 
  19. 13/11/29 00:01:42 INFO mapreduce.Job: Running job: job_1385696103815_0009 
  20. 13/11/29 00:01:53 INFO mapreduce.Job: Job job_1385696103815_0009 running in uber mode : false 
  21. 13/11/29 00:01:53 INFO mapreduce.Job:  map 0% reduce 0% 
  22. 13/11/29 00:02:03 INFO mapreduce.Job:  map 100% reduce 0% 
  23. 13/11/29 00:02:18 INFO mapreduce.Job:  map 100% reduce 50% 
  24. 13/11/29 00:02:19 INFO mapreduce.Job:  map 100% reduce 100% 
  25. 13/11/29 00:02:20 INFO mapreduce.Job: Job job_1385696103815_0009 completed successfully 
  26. 13/11/29 00:02:20 INFO mapreduce.Job: Counters: 43 
  27.     File System Counters 
  28.             FILE: Number of bytes read=267032 
  29.             FILE: Number of bytes written=771667 
  30.             FILE: Number of read operations=0 
  31.             FILE: Number of large read operations=0 
  32.             FILE: Number of write operations=0 
  33.             HDFS: Number of bytes read=674677 
  34.             HDFS: Number of bytes written=196192 
  35.             HDFS: Number of read operations=9 
  36.             HDFS: Number of large read operations=0 
  37.             HDFS: Number of write operations=4 
  38.     Job Counters 
  39.             Launched map tasks=1 
  40.             Launched reduce tasks=2 
  41.             Data-local map tasks=1 
  42.             Total time spent by all maps in occupied slots (ms)=7547 
  43.             Total time spent by all reduces in occupied slots (ms)=25618 
  44.     Map-Reduce Framework 
  45.             Map input records=12760 
  46.             Map output records=109844 
  47.             Map output bytes=1086547 
  48.             Map output materialized bytes=267032 
  49.             Input split bytes=107 
  50.             Combine input records=109844 
  51.             Combine output records=18040 
  52.             Reduce input groups=18040 
  53.             Reduce shuffle bytes=267032 
  54.             Reduce input records=18040 
  55.             Reduce output records=18040 
  56.             Spilled Records=36080 
  57.             Shuffled Maps =2 
  58.             Failed Shuffles=0 
  59.             Merged Map outputs=2 
  60.             GC time elapsed (ms)=598 
  61.             CPU time spent (ms)=4680 
  62.             Physical memory (bytes) snapshot=267587584 
  63.             Virtual memory (bytes) snapshot=1083478016 
  64.             Total committed heap usage (bytes)=152768512 
  65.     Shuffle Errors 
  66.             BAD_ID=0 
  67.             CONNECTION=0 
  68.             IO_ERROR=0 
  69.             WRONG_LENGTH=0 
  70.             WRONG_MAP=0 
  71.             WRONG_REDUCE=0 
  72.     File Input Format Counters 
  73.             Bytes Read=674570 
  74.     File Output Format Counters 
  75.             Bytes Written=196192   

可以看到j(luò)ob名字也是以job打頭的一個名字。

注意:這里有可能會碰到錯誤:

  1. java.io.FileNotFoundException: Path is not a file: /tmp/hadoop-yarn   

解決方法很簡單,命令是:

  1. cd  /home/wujunshen/hadoop 
  2. bin/hdfs dfs -mkdir /tmp 
  3. bin/hdfs dfs -copyFromLocal /home/wujunshen/pg20417.txt /tmp 
  4. bin/hdfs dfs -ls /tmp  

(如果之前已經(jīng)運行過以上命令就沒必要再輸入這些命令了。我順便講一下這幾個命令,其實hadoop是在ubuntu的文件系統(tǒng)中劃出了一塊作為它自己的 文件系統(tǒng),所謂的hdfs全稱就是hadoop file system,但是這個文件系統(tǒng)中的文件和文件夾是無法用ubuntu的命令找到的,也無法在win7,win8中用FTP客戶端cuteFTP找到。因 為這是虛擬的文件系統(tǒng),現(xiàn)實中不存在。所以如果要在這個虛擬化的文件系統(tǒng)中進行文件和文件夾創(chuàng)建,還有拷貝和查看等操作,必須開頭是以bin/hdfs dfs打頭的,這樣就能在這個虛擬的文件系統(tǒng)中進行普通系統(tǒng)的操作,當然后面要有個減號,可以看到mkdir /tmp,copyFromLocal /home/wujunshen/pg20417.txt /tmp和ls /tmp就是普通文件系統(tǒng)操作命令)

  1. bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.2.0.jar wordcount /tmp/pg20417.txt /tmp-output101   

#p#

出現(xiàn)該錯誤的原因是在運行上條命令時候,在虛擬文件系統(tǒng)hdfs的tmp文件夾下自動創(chuàng)建了一個/tmp/hadoop-yarn,而我們是對 pg20417.txt 這個文本中的word個數(shù)進行計算,要找的是file而不是path,所以我們改成/tmp/pg20417.txt, 讓wordcount 程序知道自己要找的是個file而不是path,而且還知道自己要找的是哪個file。

登錄http://192.168.72.130:8088查看運行的job狀態(tài)

enter image description here

可以看到我試驗的各種成功和失敗的job信息

真.總結(jié)

其實hadoop中有個很重要的東西就是yarn。在真.配置里修改的那些有關(guān)yarn的配置文件是讓hadoop變成真正的分布式系統(tǒng)的關(guān)鍵。 在這里我簡單地對yarn介紹一下:

yarn原意為“紗線”,想想我們剛才對它進行了配置讓我們實現(xiàn)了真正的分布式配置,我頓時覺得用紗線這個名字還挺形象的,呵呵。 它是hadoop的一個資源管理器。它的資源管理和執(zhí)行框架都是按master/slave范例實現(xiàn)——節(jié)點管理器(NM)運行、監(jiān)控每個節(jié)點,并向資源管理器報告資源的可用性狀態(tài)。 特定應(yīng)用的執(zhí)行由Master控制,負責將一個應(yīng)用分割成多個Job,并和資源管理器協(xié)調(diào)執(zhí)行所需的資源。資源一旦分配好,Master就和節(jié)點管理器一起安排、執(zhí)行、監(jiān)控獨立的Job。 yarn提供了一種新的資源管理模型和執(zhí)行方式,用來執(zhí)行MapReduce任務(wù)。因此,在最簡單的情況下,現(xiàn)有的MapReduce應(yīng)用仍然能照原樣運行(需要重新編譯),yarn只不過能讓開發(fā)人員更精確地指定執(zhí)行參數(shù)。

好了,我終于寫完了。大家隨便看看吧~

題外話

我蠻喜歡hadoop這個黃色小象的logo,貼出來給大家養(yǎng)養(yǎng)眼 enter image description here

另外不知道大家在登錄時有沒有注意到右上角的登錄帳號,見下圖紅框:

enter image description here

這個dr. who可是大大有名啊~它是目前人類歷史上最長的電視連續(xù)劇,英國科幻劇《神秘博士》的劇名。前不久google上還紀念過這部電視劇開播50周年。新版 的dr. who從2005年開始也開播了快10年了。至于它的外傳劇集《火炬木小組》在國內(nèi)年輕人之中更加有名。(火炬木小組絕對是個坑,從2006年開始播,到 現(xiàn)在也只有四季,平均每兩年出一季,第一,第二季還一季20多集,從第三季開始居然只有五六集。而且到現(xiàn)在也沒說會不會拍第五季,不過看第四季最后一集應(yīng) 該有續(xù)集。這片子主角杰克上校扮演者在美劇《綠箭俠》里演一號反派。第四季里那個會說上海話的黑人在夏天《星際迷航》最新電影版里也出來過,就是被可汗脅 迫炸樓的那位。)

原文鏈接:http://www.ituring.com.cn/article/63927

 

責任編輯:陳四芳 來源: 圖靈社區(qū)
相關(guān)推薦

2023-05-09 08:15:00

Linux節(jié)點Windows

2012-09-19 14:09:20

Hadoop開源

2017-02-28 09:48:30

2014-06-18 16:47:57

初志云存儲云計算

2011-04-18 14:43:23

分布式測試分布式測試

2017-08-10 10:17:32

Hadoop分布式搭建

2019-09-26 15:43:52

Hadoop集群防火墻

2014-07-15 11:15:44

hadoop分布式部署

2013-06-08 14:34:42

Hadoop 2.0

2011-08-12 10:58:51

Hadoop

2010-06-04 18:45:43

Hadoop分布式文件

2010-06-03 19:46:44

Hadoop

2012-10-11 14:03:56

FastDFS分布式文件系統(tǒng)

2009-10-09 17:17:11

安裝VB dcom分布

2012-05-21 10:19:31

Hadoop

2017-10-25 18:25:40

Hadoop偽分布式環(huán)境部署

2011-09-28 11:22:52

Hadoop

2011-07-15 17:48:27

Platform

2015-08-03 15:48:42

Hadoop大數(shù)據(jù)

2012-02-23 09:59:05

Hadoop分布式應(yīng)用
點贊
收藏

51CTO技術(shù)棧公眾號