hadoop全分佈式環境的搭建

1.再搞一臺機器,用相同的方法部署hadoop
2.修改/etc/hosts
把機器A設置爲master namenode slave1 datanode1
把機器B設置爲slave2 datanode2
修改conf/下masters和slaves兩個配置文件,把localhost改成以下內容
masters文件:
master
slaves文件:

slave1
slave2
3.把之前三個xml配置文件中的localhost根據實際情況改成相關的機器名。

4.
把原來的hdfs tmp/目錄刪除,重建,chmod 755 -R
格式化
hadoop namenode -format

jps是個好命令
運行start-all.sh
接着發現啓動失敗,日誌中提示:
14/02/11 18:23:12 INFO ipc.Server: IPC Server handler 9 on 9000: exiting
14/02/11 18:23:12 INFO ipc.Server: Stopping IPC Server listener on 9000
14/02/11 18:23:12 INFO ipc.Server: Stopping IPC Server Responder
14/02/11 18:23:12 INFO metrics.RpcInstrumentation: shut down
14/02/11 18:23:12 ERROR namenode.NameNode: java.net.ConnectException: Call to 10-7-2-132/127.0.0.1:9000 failed on connection exception: java.net.ConnectException: Connection refused
at org.apache.hadoop.ipc.Client.wrapException(Client.java:1142)
at org.apache.hadoop.ipc.Client.call(Client.java:1118)

一開始以爲是網絡連接問題,於是寫了一個腳本teeport.py,發現機器之間連接的確不通。
但諮詢了UCloud客戶後發現,運行netstat -l,監聽的是localhost:9000,是我程序寫錯了。不是
serversocket.bind((socket.gethostname(), port))
而是
serversocket.bind((’0.0.0.0′, port))
之後確認機器之間網絡連接是好的。
之後再追查,諮詢了一下STL的兄弟,發現是/etc/hosts裏有一個多餘項。
127.0.0.1 10-7-2-132
懷疑可能是bind了127.0.0.1,把它註釋掉就可以了。
再重啓,namenode啓動成功,但datanode有一臺機器啓動不了,提示文件系統id不兼容。
把所有的hdfs/ tmp/數據目錄刪除,重建,這回是datanode啓動不了,提示io exception
懷疑是目錄權限問題,把hdfs/ tmp/遞歸改成755的權限就好。
再運行start-all.sh就可以在監控頁面上看到hadoop集羣和hdfs集羣有兩個node了

5.由於默認hostname在外網不可訪問,需要修改/etc/hosts和/etc/hostname,並且運行sudo hostname new_hostname來生效
現在可以方便地跑hadoop任務了。

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