關於Hadoop啟動一段時間後DataNode消失:WARN org.apache.hadoop.metrics2.util.MBeans: Hadoop:service=DataNode,
阿新 • • 發佈:2019-01-26
啟動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一樣即可