緣由是屢次 hadoop namenode -format 致使 datanode 的version 裏的Cluster-Id 不一致node
這個Cluster-Id的位置在: 本身設置的數據臨時文件/dfs/name(若是是datanode就是data)/name/current裏的VERSION文件oop
如個人在 hdpdata//home/hadoop/hdpdata/dfs/name/current。若是不知道能夠去hadoop/etc/hadoop/core-site.xml 裏找。spa
#core-site.xml文件
<!-- 指定hadoop運行時產生文件的存儲目錄 --> <property> <name>hadoop.tmp.dir</name> <value>/home/hadoop/hdpdata</value> </property>
解決辦法是把全部節點(包括namenode和datanode)的這個臨時文件夾刪除,而後 namenode節點,從新hadoop namenode -format, 再start-all.sh.就能夠了,臨時文件夾會自動從新生成,這時候version裏的Cluster-Id會保持一致code
能夠用Ansible批量刪除臨時數據文件夾orm
playbook代碼xml
# 由於 hadoop namenode -format 常常會致使hadoop的current文件夾裏的clusterID會一致,因此編一個playbook來批量刪除current文件夾 - name: delete-hdpdata-folder hosts: aaa remote_user: hadoop become: true become_user: hadoop tasks: - name: delete-hdpdata-all file: path: ~/hdpdata/ state: absent