Hadoop平臺配置總結 - 鄭文亮 - 博客園 http://www.cnblogs.com/zhwl/p/3672916.html
hadoop的配置,個人感覺是非常容易出問題。一個原因是要配置的地方多怀泊,還有個原因就是集群配置要在幾臺機器上都配置正確瘟斜,才能保證配置好hadoop,跑起任務。
經(jīng)過昨晚加今天上午的折騰提佣,總算成功配好了集群模式肚吏,其中苦不堪言啊方妖,中間好幾次都想要放棄。這里總結了一下配置的幾個要點罚攀,分享給大家党觅,以使大家少走冤枉路。
1.基本配置
安裝JDK1.6(這是必須的吧斋泄,無須解釋)
下載Hadoop包
下載后放在用戶主目錄下解壓
配置JAVA_HOME路徑
conf/hadoop-env.sh
將
The java implementation to use. Required.
export JAVA_HOME=/usr/lib/j2sdk1.5-sun
改為
The java implementation to use. Required.
export JAVA_HOME=/usr/lib/jvm/java-6-openjdk
(這里的java具體目錄可能會有所不同)
保存并關閉
輸入以下命令:
$ bin/hadoop
如果能看到hadoop的程序調用的使用說明杯瞻,此時說明你已經(jīng)成功配置好了這部分。(單機模式)
2.集群模式配置
配置好了單機模式后炫掐,即可配置集群模式魁莉。集群模式的結構是一臺master機器+若干臺slave機器。
(1)編輯/etc/hosts文件(master,slave都要):
假設master機器:
IP:192.168.0.1 機器名:master
假設slaves機器:
IP:192.168.0.2 機器名:slave1
IP:192.168.0.3 機器名:slave2
IP:192.168.0.4 機器名:slave3
IP:192.168.0.5 機器名:slave4
加入如下項:
/etc/hosts
192.168.0.1 master
192.168.0.2 slave1
192.168.0.3 slave2
192.168.0.4 slave3
192.168.0.5 slave4
注意:這里的”master“和”slave1“等等均指你的機器名募胃,如在終端中有ubuntu@DY1-U09:~/hadoop$沛厨,則DY1-U09為機器名。
(2)在hadoop目錄下新建幾個文件夾(master,slave都要):
$ mkdir tmp
$ mkdir hdfs
$ mkdir hdfs/name
$ mkdir hdfs/data
(3)在conf目錄中摔认,編輯以下文件(目錄path/to/your/hadoop為你自己的相應hadoop目錄)(master,slave都要):
conf/core-site.xml:
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://(你的master機器名):9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/path/to/your/hadoop/tmp</value>
</property>
</configuration>
conf/hdfs-site.xml:
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>/path/to/your/hadoop/hdfs/name</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/path/to/your/hadoop/hdfs/data</value>
</property>
</configuration>
conf/mapred-site.xml:
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>(你的master機器名):9001</value>
</property>
</configuration>
(4)SSH Access(僅對master)
master必須能以passless ssh訪問slaves
ubuntu@master:~$ ssh-copy-id -i $HOME/.ssh/id_rsa.pub ubuntu@slave1
ubuntu@master:~$ ssh-copy-id -i $HOME/.ssh/id_rsa.pub ubuntu@slave2
ubuntu@master:~$ ssh-copy-id -i $HOME/.ssh/id_rsa.pub ubuntu@slave3
ubuntu@master:~$ ssh-copy-id -i $HOME/.ssh/id_rsa.pub ubuntu@slave4
執(zhí)行以上的命令都需要輸入對方的密碼
完成后逆皮,可以在master上分別運行:ssh slave1/slave2/slave3/slave4
看是否不需要輸入密碼,如果不需要則設置正確参袱。
(5)配置conf/masters,conf/slaves(僅對master)
更新conf/masters文件如下:
master
更新conf/slaves文件如下:
slave1
slave2
slave3
slave4
(6)開啟集群:
在master上運行:$ bin/start-all.sh
可以在master和slave上運行jps命令,查看開啟的daemons:
此時电谣,master機器上應當有namenode,jobtracker抹蚀,secondarynamenode剿牺,
而slave機器上有datanode,tasktracker
開啟后要等一段時間使服務完全啟動环壤,否則命令將沒有響應晒来。具體什么時候完全啟動可以查看
http://localhost:50030/ – web UI for MapReduce job tracker(s)
http://localhost:50060/ – web UI for task tracker(s)
http://localhost:50070/ – web UI for HDFS name node(s)
以上的幾個網(wǎng)址可以讓你獲取Hadoop的運行狀況信息。當網(wǎng)頁可以載入的時候即可郑现。
(7)測試一下:
首先需要Format namenode
(格式化之前最好在所有機器上清空hdfs/data,hdfs/name湃崩,以免造成沖突)
在master上運行: $ bin/hadoop namenode -format
在master機器上運行WordCount:
首先在dfs中創(chuàng)建input目錄
$ bin/hadoop dfs -mkdir input
將conf中的文件拷貝到dfs中的input:
$ bin/hadoop dfs -copyFromLocal conf/* input
運行WordCount
$ bin/hadoop jar hadoop-0.20.2-examples.jar wordcount input output
顯示輸出結果文件:
$ bin/hadoop dfs -cat output/*
3.配置過程問題歸納:
(1)dfs可以ls荧降,mkdir,但是copyFromLocal出錯攒读,提示could only be replicated to 0 nodes, instead of 1:
這個問題非常容易遇到朵诫,而且原因可能也不相同,若出現(xiàn)此問題薄扁,請嘗試以下步驟:
使用jps檢查master和slave上是否符合:master機器上應當有namenode剪返,jobtracker,secondarynamenode邓梅,而slave機器上有datanode脱盲,tasktracker。
若不符合請仔細檢查master和slave上的/etc/hosts文件日缨、conf/core-site.xml宾毒、conf/mapred-site.xml、conf/hdfs-site.xml殿遂。
檢查master和slave上的/etc/hosts文件诈铛,如果其中有127.0.0.1與你的相應機器名對應的項,請將其刪掉墨礁,務必保證此文件中對應于你的機器名的ip地址為你在局域網(wǎng)中的ip幢竹。
運行stop-all.sh關閉進程;
Format namenode(格式化之前最好在所有機器上清空hdfs/data,hdfs/name恩静,以免造成沖突)——在master上運行: $ bin/hadoop namenode -format
運行start-all.sh開啟服務焕毫;
待服務完全開啟后測試。
(2)提示處于safemode驶乾,報錯邑飒。
運行命令bin/hadoop dfsadmin -safemode leave后重試。
(3)其他問題:
配置過程出錯的大部分問題都出在hdfs不能正常使用级乐,具體表現(xiàn)是http://localhost:50070查看namenode顯示
Configured Capacity : 0 KB
DFS Used : 0 KB
Non DFS Used : 0 KB
DFS Remaining : 0 KB
DFS Used% : 100 %
DFS Remaining% : 0 %
Live Nodes : 0
Dead Nodes : 0
若出現(xiàn)此問題疙咸,請仔細檢查master和slave上的/etc/hosts文件,以及三個xml配置文件保證沒有地方寫錯风科,所有機器上都有在hadoop目錄執(zhí)行
$ mkdir tmp
$ mkdir hdfs
$ mkdir hdfs/name
$ mkdir hdfs/data
最后撒轮,請大家勇于堅持——”我不會永遠失敗,正如我不會永遠成功“贼穆。GoodLuck题山!