- 問題現象
當前有01、02、03三個節點的hadoop集羣,其中01是master節點,02、03爲slave節點。當動態添加04的slave節點後,hadoop的web界面中顯示的節點數目未增加。進一步觀察,節點列表中的slave節點內容,時而是02、04節點,時而是02、03節點,非常詭異。
- 分析原因
找到datadir目錄下的current/VERSION文件,03和04服務器中的datanodeUuid數值完全一致,可推斷,master節點把03和04當做同一臺服務器來處理了。原因是,之前03服務器已經啓動過,生成的VERSION中已經記錄了datanodeUuid,克隆虛擬機的時候,所有信息都保留和03服務器一樣。
- 解決方案
考慮到如果不是克隆而是直接安裝的情況下,04服務器的datadir和tmpdir目錄下是空白的,因此,將04服務器的DataNode、NodeManager服務停止,刪除datadir和tmpdir目錄下的所有文件,重新啓動DataNode、NodeManager服務,再次觀察,hadoop集羣中的內容顯示了02、03、04三個datanode,與預期一致,問題解決。
- 注意事項
通過拷貝或者克隆虛擬機的方式新增節點時,需要做如下幾項操作:
1、修改主機名、IP地址,重啓新增的節點,並將/etc/hosts文件拷貝到集羣中的其他節點中(若使用本地DNS服務器,此步驟可省略,只需要在DNS服務器中將改節點添加到域名解析記錄中即可);
2、新增的節點需要重新運行ssh-keygen -t rsa生成公鑰,並將公鑰添加到authorized_keys文件中,並拷貝到集羣中的其他節點中。
參考資料:
1、Hadoop datanode正常啓動,但是Live nodes中卻缺少節點的問題
https://blog.csdn.net/wk51920/article/details/51729460
2、hadoop2.7 動態新增節點和刪除節點
https://blog.csdn.net/Mark_LQ/article/details/53393081