天天看點

hadoop2.6.0 HA + zookeeper + eclipse搭建心得

實驗環境終于搭好了,記錄一下。

本機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上傳成功。

繼續閱讀