實驗環境終于搭好了,記錄一下。
本機Win10,裝了VMWare虛拟機,虛拟機上裝了4個linux節點node1,node2,node3,node4,每個節點軟體安裝版本為java 1.8和hadoop 2.6.0。
叢集規劃如下:
主機名 安裝的軟體 運作的程序
node1 jdk,hadoop,zookeeper NameNode,DFSZKFailoverController,ResourceManager,QuorumPeerMain
node2 jdk,hadoop,zookeeper NameNode,DFSZKFailoverController,NodeManager,QuorumPeerMain,DataNode,JournalNode
node3 jdk,hadoop,zookeeper NodeManager,QuorumPeerMain,DataNode,JournalNode
node4 jdk,hadoop NodeManager,DataNode,JournalNode
搭建過程參考了http://www.aboutyun.com/thread-11909-1-1.html
啟動過程:
1、啟動zookeeper叢集(分别在node1、node2、node3上啟動zk)
cd /home/zookeeper/bin
./zkServer.sh start
#檢視狀态:一個leader,兩個follower
./zkServer.sh status
#運作jps指令檢驗,node1、node2、node3上多了QuorumPeerMain程序
2、啟動journalnode(分别在node2、node3、node4上執行)(這步不做的話格式化hdfs會出錯)
cd /home/hadoop-2.6/sbin
./hadoop-daemon.sh start journalnode
#運作jps指令檢驗,node2、node3、node4上多了JournalNode程序
3、格式化HDFS
#在node1上執行指令
hdfs namenode -format
說明:
(1)這個過程由于通信問題,會出現一些Retrying connect to server, 以及connection方面的errer,可以多執行幾次格式化,後面就會通信正常。
(2)要確定datanode的VERSION中的clusterID 和 namenode的VERSION中的clusterID 比對,否則datanode會無法啟動,浏覽器中live nodes個數為0,這個問題也是困擾了好久,解決方法見http://blog.csdn.net/baidu_16757561/article/details/53698746,我采取的比較簡單的做法是:格式化前先把每個節點臨時檔案/opt/hadoop/dfs/下面的name和data檔案夾都删掉,在node1上格式化後,把dfs下生成的name檔案夾拷貝到node2上(scp -r /opt/hadoop/dfs/name/ node2:/opt/hadoop/dfs/),然後再進行後續操作。
4、格式化ZK(在node1上執行即可)
hdfs zkfc -formatZK
5、啟動HDFS(在node1上執行)
cd /home/hadoop-2.6/sbin
./start-dfs.sh
說明:出現過一個問題“There appears to be a gap in the edit log”,這裡有解釋http://blog.csdn.net/amber_amber/article/details/46896719,不過它的解決方法我無法操作,而且edits檔案我隻在/opt/hadoop/dfs/name/current/下面有看到,是以我想可能是格式化hdfs之前要把node2的這個name檔案删掉,否則node1的name檔案scp到node2之後,node2的name裡面仍然殘留這不一緻的edits檔案。
6、啟動YARN(在node1上執行)
cd /home/hadoop-2.6/sbin
./start-yarn.sh
到此,hadoop-2.6.0配置完畢,可以統計浏覽器通路:
http://node1:50070
'node1:8020' (standby)
http://node2:50070
'node2:8020' (active)
這裡我也不知道為什麼node2反而是active,我猜是通信原因。
以後如果要重新開機hadoop,可以先停止yarn,再停止hdfs,然後再啟動hdfs,再啟動yarn
cd /home/hadoop-2.6/sbin
./stop-yarn.sh
./stop-dfs.sh
./start-dfs.sh
./start-yarn.sh
驗證HDFS
檢視hdfs檔案夾:hadoop dfs -ls /
建立input檔案夾: hadoop dfs -mkdir /input
檢視hdfs檔案夾:hadoop dfs -ls /
出現input檔案夾說明hdfs成功。
接下來eclipse中使用hadoop插件連接配接hdfs,參考http://blog.csdn.net/u014034934/article/details/77233041
由于node2是active,是以在new hadoop location配置:
Location name: node2 hadoop2.6.0 (這裡随便寫)
Map/Reduce(V2) Master
Host: node2的ip
Port:50020
DFS Master
Host: node2的ip
Port: 8020
User name: pmx
配置好後,在eclipse的DFS Location的input檔案夾上傳一個檔案data.txt,出現了權限問題:Permission denied,解決方法參考了http://blog.csdn.net/ludonqin/article/details/51916360,我也通過第一種方式,添加本地環境變量HADOOP_USER_NAME為root,然後重新開機eclipse。終于data.txt上傳成功。