Hadoop的安装与配置及示例程序wordcount的运行
最近在學習Hadoop,文章只是記錄我的學習過程,難免有不足甚至是錯誤之處,請大家諒解并指正!Hadoop版本是最新發布的Hadoop-0.21.0版本,其中一些Hadoop命令已發生變化,為方便以后學習,這里均采用最新命令。具體安裝及配置過程如下:
1?機器配置說明
總共有3臺機器:hzau01、hzau02、hzau03
IP地址分別為:192.168.0.4、192.168.0.17、192.168.0.6
操作系統為:Linux2.6.33.3-85.fc13.i686.PAE
jdk版本為:jdk1.6.0_23
hadoop版本為:hadoop-0.21.0
hzau01作為NameNode、JobTracker,其他兩臺臺作為DataNode、TaskTracker
2??查看機器間是否能相互通信(使用ping命令)
用root登錄,在NameNode上修改/etc/hosts文件,加入三臺機器的IP地址和機器名,如下:
192.168.0.4??hzau01
192.168.0.17??hzau02
192.168.0.6??hzau03
??????設置好后驗證下各機器間是否ping通,用機器名或是IP地址都可以,例如ping?hzau02或ping?192.168.0.17
Hadoop要求所有機器上hadoop的部署目錄結構要相同并且有一個相同的用戶名的帳戶,我的默認路徑為/home/garon
3??ssh設置及關閉防火墻
1)fedora裝好后默認啟動sshd服務,如果不確定的話可以查一下?[garon@hzau01?~]$?service?sshd?status
如沒有啟動的話,先啟動?[root@hzau01?~]#?service?sshd?start
建立ssh無密碼登錄,在NameNode上?[garon@hzau01?~]ssh-keygen?-t?dsa?-P?''?-f?~/.ssh/id_dsa(''為兩個單引號)
會在~/.ssh/生成兩個文件:id_dsa和id_dsa.pub,這兩是成對出現的,把id_dsa.pub文件追加到DataNode上的authorized_keys
[garon@hzau01?~]$?scp?~/.ssh/id_dsa.pub?hzau02:/home/garon/.ssh?(注意其中目標機器后面的:與要傳到的文件路徑之間沒有空格,即sc706:與/home/hadoop/之間沒有空格)
???scp?~/.ssh/id_dsa.pub?hzau03:/home/garon/.ssh
登錄到DataNode上,[garon@hzau02?~]$?cat?~/.ssh/id_dsa.pub?>>?~/.ssh/authorized_keys?,其余一臺一樣,注意:追加完后必須修改NameNode和DataNode上的.ssh和authorized_keys的權限,chmod命令,參數600,完成后測試下,例如ssh?hzau02時不需要密碼就可以登錄,就可以知道ssh設置成功。
2)關閉防火墻(NameNode和DataNode都必須關閉)
?[root@hzau01?~]#?service?iptables?stop
注意:每次重新開機啟動hadoop前都必須關閉
4?安裝jdk1.6(集群中機子都一樣)
下載jdk-6u23-ea-bin-b03-linux-i586-18_oct_2010.bin,之后直接安裝,我的安裝路徑為:/usr/java/jdk1.6.0_23,安裝后添加如下語句到/etc/profile中:
export?JAVA_HOME="/usr/java/jdk1.6.0_23"
export?JRE_HOME=/usr/java/jdk1.6.0_23/jre
export?CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export?PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
5?安裝hadoop(集群中機子都一樣)
在官網http://apache.etoak.com//hadoop/core/下載hadoop-0.21.0.tar.gz
[garon@hzau01?~]$?tar?xzvf?hadoop-0.21.0.tar.gz
將hadoop的安裝路徑添加到/etc/profile中:
export?HADOOP_HOME=/home/garon/hadoop-0.21.0
export?PATH=$HADOOP_HOME/bin:$PATH
為了讓/etc/profile生效,source一下?[garon@hzau01?~]$?source?/etc/profile
6?配置hadoop
其配置文件在/conf目錄下
1)配置JAVA環境
[garon@hzau01?~]$$?vi?~/hadoop/hadoop-0.21.0/conf/hadoop-env.sh
export?JAVA_HOME=/usr/java/jdk1.6.0_23
2)配置conf/core-site.xml、conf/hdfs-site.xml、conf/mapred-site.xml文件
[garon@hzau01?hadoop-0.21.0]$?vi?conf/core-site.xml
<configuration>
?????<property>
??????????<name>hadoop.tmp.dir</name>
??????????<value>/home/garon/hadoopgaron</value>
?????</property>
?????<property>
??????????<name>fs.default.name</name>
??????????<value>hdfs://hzau01/</value>
?????</property>
</configuration>
[garon@hzau01?hadoop-0.21.0]$?vi?conf/mapred-site.xml
<configuration>
?????<property>
??????????<name>mapred.jobtracker.address</name>
??????????<value>hzau01:9001</value>
?????</property>
</configuration>
[garon@hzau01?hadoop-0.21.0]$?vi?conf/hdfs-site.xml
<configuration>
?????<property>
??????????<name>dfs.name.dir</name>
??????????<value>/home/garon/hadoopname</value>
?????</property>
?????<property>
??????????<name>dfs.data.dir</name>
??????????<value>/home/garon/hadoopdata</value>
?????</property>
?????<property>
??????????<name>dfs.replication</name>
??????????<value>1</value>
?????</property>
</configuration>
3)將NameNode上完整的hadoop拷貝到DataNode上,可先將其進行壓縮后直接scp過去或是用盤拷貝過去
4)?配置NameNode上的conf/masters和conf/slaves
masters:192.168.0.4
slaves:192.168.0.17
192.168.0.6
7?運行hadoop
1)格式化文件系統
[garon@hzau01?bin]$?hdfs?namenode?-format
注意:格式化時要防止NameNode的namespace?ID與DataNode的namespace?ID的不一致,因為每格式化一次會產生Name、Data、tmp等臨時文件記錄信息,多次格式化會產生很多,會導致ID的不同,造成hadoop不能運行
2)啟動hadoop
[garon@hzau01?bin]$?start-dfs.sh
[garon@hzau01?bin]$?start-mapred.sh
3)用jps命令查看進程,NameNode上的結果如下:
5334?JobTracker
5215?SecondaryNameNode
5449?Jps
5001?NameNode
4)查看集群狀態
[garon@hzau01?bin]$?hdfs?dfsadmin?-report
確保運行的DataNode個數是正確的,我的是2個,這樣可以查看哪個DataNode沒有運行
8?運行Wordcount.java程序
1)先在本地磁盤上建立兩個文件f1和f2
[garon@hzau01?bin]$?echo?”Hello?world?Bye?world"?>?~/input/f1
[garon@hzau01?bin]$?echo?”hello?hadoop?bye?hadoop”?>?~/input/f2
2)在hdfs上建立一個input目錄
[garon@hzau01?bin]$?hadoop?fs?-mkdir?/tmp/input
3)將f1和f2拷貝到hdfs的input目錄下
[garon@hzau01?bin]$?hadoop?fs?-put?/home/garon/input?/tmp
4)查看hdfs上有沒有f1,f2
[garon@hzau01?bin]$?hadoop?fs?-ls?/tmp/input
5)執行wordcount(確保hdfs上沒有output目錄)
[garon@hzau01?bin]$?hadoop?jar?../hadoop-mapred-examples-0.21.0.jar?wordcount?/tmp/input?/output
6)運行完成,查看結果
???????[garon@hzau01?bin]$?hadoop?fs?-cat?/output/part-r-00000
???????Bye????????1
???????Hello????????1
???????bye????????1
???????hadoop???2
???????hello????????1
???????world?2
總結
以上是生活随笔為你收集整理的Hadoop的安装与配置及示例程序wordcount的运行的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 恒信易贷和恒易贷是一家公司吗
- 下一篇: 黄健翔版BGP