hadoop2.4.1集羣環境搭建

歡迎光臨我的博客:http://www.poryfly.com/hadoop2-4-1-clustering-environment-setup/

週末折騰了兩天,終於把集羣環境給搭好了。走了不少彎路,但最終還是成功了,記錄下以便以後參考。

1、沒有太多電腦,在自己電腦上建了一臺虛擬機作爲主節點,另外有三臺也是虛擬機放在另外一臺電腦上(教研室裏最好的一臺專門運算程序的電腦,可憐啊)

虛擬機全部設置爲橋接模式,並手動分配IP,我的如下

192.168.3.111 hadoop0 #主節點,master+job

192.168.3.101 hadoop1 #從節點

192.168.3.102 hadoop2 #從節點

192.168.3.103 hadoop2 #從節點

並且每個節點上的都要修改/ect/hosts文件,添加上面的ip以及名字,如下主節點:

127.0.0.1       localhost
#127.0.1.1      pory-VirtualBox   #最好用#註釋掉

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
192.168.3.111 hadoop0       #namenode+job
192.168.3.101 hadoop1       #datanode
192.168.3.102 hadoop2       #datanode
192.168.3.103 hadoop3       #datanode
並且在每臺機器上分別執行vi /bin/hostname hadoop0(hadoop1,hadoop2..)對應不同的機器

2、每個節點都要安裝JDK,這個可以在網上下,最好用相同的路徑和相同的版本(方便後面配置完一個節點後直接複製分發到其他節點),並配置好環境變量/etc/profile。運行java -version驗證是否成功,不做贅述;

3、每個節點都創建一個相同的用戶,我的是hadoop。採用命令useradd -m hadoop,passwd hadoop設定相應的密碼,注意創建是添加-m這個參數,否則在/home/目錄下面沒有相應的用戶文件夾。之所以要相同的用戶,是在ssh登錄時hadoop的每臺機器都能知道是哪個用戶,否則在無密碼登錄時會很麻煩甚至失敗;

3、節點之間SSH互信,無密碼登錄。這個很重要,不光是主節點和從節點之間要能互信,從節點之間也必須互信(這個很重要,至少我後來遇到問題了是這裏出問題的),可以每個機器都生成一個密匙(網上有教程,注意是在hadoop用戶下執行),一般會生成在/home/hadoop/.ssh/目錄下然後將所有的ssh公共密匙寫入同一個authried_keys文件中,然後分發到每一個機器的.ssh目錄下。然後用ssh hadoop0(1,2,3)來驗證,是否需要密碼登陸;

4、在hadoop0的機器上使用hadoop用戶來將下載的hadoop安裝文件放在/home/hadoop/目錄下面,然後解壓。那麼hadoop的安裝目錄就在/home/hadoop/下面,方便配置環境變量,至此我們需要配置hadoop的環境變量了,這個也很重要,就是講hadoop的路徑放在/etc/profile,我給出我添加的配置

JAVA_HOME=/usr/java/jdk1.6.0_45
PATH=$PATH:$JAVA_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib
export JAVA_HOME
export PATH
export CLASSPATH
#export HADOOP_PREFIX=/usr/hadoop/hadoop-2.4.1  #wei fenbu
export HADOOP_PREFIX=/home/hadoop/hadoop-2.4.1
export PATH=$PATH:$HADOOP_PREFIX/bin
export PATH=$PATH:$HADOOP_PREFIX/sbin
#export HADOOP_HOME=/usr/hadoop/hadoop-2.4.1    #wei fenbu
export HADOOP_HOME=/home/hadoop/hadoop-2.4.1
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_YARN_HOME=$HADOOP_HOME
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"

5、按道理講hadoop工作的大環境已經搭建好了,下面該配置hadoop本身運行的環境變量,級編輯hadoop-env.sh(還是在hadoop(master)節點,以hadoop用戶來操作)
vi /home/hadoop/hadoop-2.4.1/etc/hadoop/hadoop-env.sh
#添加如下內容

export JAVA_HOME=/usr/java/jdk1.6.0_45

6、編輯slaves(master節點)
vi /home/hadoop/hadoop-2.4.1/etc/hadoop/slaves

#添加從節點主機名,如下內容:

localhost
hadoop1
hadoop2
hadoop3
7、編輯core-site.xml(master節點hadoop0)

vi /home/hadoop/hadoop-2.4.1/etc/hadoop/core-site.xml

#添加如下內容

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop0:9000</value>
        <final>true</final>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/home/hadoop/tmp</value>
    </property>
    <property>
        <name>io.file.buffer.size</name>
        <value>131072</value>
    </property>
</configuration>

8、編輯hdfs-site.xml(master節點hadoop0)
vi /home/hadoop/hadoop-2.4.1/etc/hadoop/hdfs-site.xml
<configuration>
  <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>hadoop0:50090</value>
    </property>
  <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/home/hadoop/dfs/name</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/home/hadoop/dfs/data</value>
    </property>
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
    <property>
    <name>dfs.webhdfs.enabled</name>
    <value>true</value>
  </property>
</configuration>
9、創建mapred-site.xml(master節點hadoop0)這裏我也不明白爲什麼沒有這個文件,要自己創建。
vi /home/hadoop/hadoop-2.4.1/etc/hadoop/mapred-site.xml,內容如下:
<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    <property>
        <name>mapreduce.jobtracker.http.address</name>
        <value>hadoop0:50030</value>
    </property>
    <property>
        <name>mapreduce.jobhistory.address</name>
        <value>hadoop0:10020</value>
    </property>
    <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>hadoop0:19888</value>
    </property>
</configuration>
10、編輯yarn-site.xml(master節點hadoop0)
vi /home/hadoop/hadoop-2.4.1/etc/hadoop/yarn-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.resourcemanager.address</name>
        <value>hadoop0:8032</value>
    </property>
    <property>
        <name>yarn.resourcemanager.scheduler.address</name>
        <value>hadoop0:8030</value>
    </property>
    <property>
        <name>yarn.resourcemanager.resource-tracker.address</name>
        <value>hadoop0:8031</value>
    </property>
    <property>
        <name>yarn.resourcemanager.admin.address</name>
        <value>hadoop0:8033</value>
    </property>
    <property>
        <name>yarn.resourcemanager.webapp.address</name>
        <value>hadoop0:8088</value>
    </property>

</configuration>

注意上述配置文件中不能有多餘的行或者空格,否則會出現問題

11、拷貝軟件到其他節點(在master節點hadoop0上操作)
scp -r /home/hadoop/hadoop-2.4.1 hadoop1:/home/hadoop/
scp -r /home/hadoop/hadoop-2.4.1 hadoop2:/home/hadoop/
scp -r /home/hadoop/hadoop-2.4.1hadoop3:/home/hadoop/

12、格式化hdfs文件系統(master節點)
hdfs namenode –format
13、啓動
sbin/start-all.sh
14、jps
master節點hadoop0節點:
[hadoop@hadoop0:~/hadoop-2.4.1$ jps
21517 Jps
19501 NodeManager
19206 SecondaryNameNode
18908 NameNode
19376 ResourceManager
19033 DataNode
slave節點:
hadoop@hadoop1:~$ jps
14556 NodeManager
15406 Jps
15、網頁上訪問

http://hadoop0:8088/


16、運行測試用例:

a、新建幾個數據文件,如file1.txt,file2.txt,file3.txt,我是放到hadoop主目錄下的examples目錄,沒有自己新建裏
examples/file1.txt 內容如下:

hello www.isosee.com

hello www.poryfly.com
hello www.92pm.com
hello www.pmway.com

file2.txt內容如下:

pmbox ok
pmbox v1.0
pmbox online
i think pmbox will help you

file3.txt內容如下:

pory hello
arir hellp
pory fly
pory fighting        

b、把文件拷貝到hadoop文件系統

hadoop@hadoop0:~/hadoop-2.4.1$ bin/hdfs dfs -mkdir /input
hadoop@hadoop0:~/hadoop-2.4.1$ bin/hdfs dfs -put -f examples/file1.txt examples/file2.txt examples/file3.txt /input
c、運行 WordCount
hadoop@hadoop0:~/hadoop-2.4.1$ bin/hadoop jar share/hadoop/mapreduce/sources/hadoop-mapreduce-examples-2.4.1-sources.jar org.apache.hadoop.examples.WordCount /input /output
運行中會顯示進度。

d、查看結果命令

hadoop@hadoop0:~/hadoop-2.4.1$ bin/hdfs dfs -get /output outtemp

hadoop@hadoop0:~/hadoop-2.4.1$ cat outtemp/*

arir 1
fighting 1
fly 1
hello 5
hellp 1
help 1
i 1
ok 1
online 1
pmbox 4
pory 3
think 1
v1.0 1
will 1
www.92pm.com 1
www.isosee.com 1
www.pmway.com 1
www.poryfly.com 1
you 1

結果保存在outtemp目錄下,可以用vi查看

至此hadoop2.4.1集羣環境搭建已經成功了!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章