1. 程式人生 > >關於Hadoop啟動一段時間後DataNode消失:WARN org.apache.hadoop.metrics2.util.MBeans: Hadoop:service=DataNode,

關於Hadoop啟動一段時間後DataNode消失:WARN org.apache.hadoop.metrics2.util.MBeans: Hadoop:service=DataNode,

啟動Hadoop一段時間後,其中一個機器上的DataNode消失,檢視日誌發現

2016-10-12 01:04:12,856 WARN org.apache.hadoop.metrics2.util.MBeans: Hadoop:service=DataNode,name=FSDatasetState-DS-498785482-127.0.1.1-50010-1475998532523
javax.management.InstanceNotFoundException: Hadoop:service=DataNode,name=FSDatasetState-DS-498785482-127.0.1.1
-50010-1475998532523 at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getMBean(DefaultMBeanServerInterceptor.java:1094) at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.exclusiveUnregisterMBean(DefaultMBeanServerInterceptor.java:415) at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor
.unregisterMBean(DefaultMBeanServerInterceptor.java:403) at com.sun.jmx.mbeanserver.JmxMBeanServer.unregisterMBean(JmxMBeanServer.java:507) at org.apache.hadoop.metrics2.util.MBeans.unregister(MBeans.java:71) at org.apache.hadoop.hdfs.server.datanode.FSDataset.shutdown(FSDataset.java
:2093) at org.apache.hadoop.hdfs.server.datanode.DataNode.shutdown(DataNode.java:917) at org.apache.hadoop.hdfs.server.datanode.DataNode.run(DataNode.java:1601)

此異常是因為,兩臺DataNode的storageID出現了衝突,因為我的Hadoop是從一個搭建好的DateNode上直接複製過來的,所以storageID會一樣。

解決方法:
1,直接將出現異常的那臺slaves機器的data目錄刪除,Hadoop有備份資料,將資料恢復可同步
2,這個時候,我們需要修改指定的datanode的current檔案中的相應storageID的值,進入/hadoop-1.2.1/tmp/dfs/data/current,進入VERSION
這裡寫圖片描述
將其中的storageID更改一下,將末尾數字隨便改動一下,只要不和其他DataNode的storageID一樣即可