hadoop datanode重启出现namenode的clusterID和datanode的不一致。

当hadoop datanode重启时,出现与namenode的clusterID不匹配的错误。解决方法包括检查数据文件夹权限、清除datanode数据文件而不删除文件夹,以及确保在重启或format namenode时datanode状态正常,以避免数据不一致。

日志报出的错误是这样的:

016-05-10 15:14:05,620 FATAL org.apache.hadoop.hdfs.server.datanode.DataNode: Initialization failed for block pool Block pool <registering> (storage id DS-6116241-10.20.18.160-50010-1462417536805) service to cdhhadoop1/10.20.18.158:8020
java.io.IOException: Incompatible clusterIDs in /data/1/dfs/dn: namenode clusterID = CID-dc4b2cf0-4676-4517-ab93-dacbcde16e04; datanode clusterID = CID-ac9d3097-75ad-45b5-8af3-b0e930400956
	at org.apache.hadoop.hdfs.server.datanode.DataStorage.doTransition(DataStorage.java:407)
	at org.apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransitionRead(DataStorage.java:191)
	at org.apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransitionRead(DataStorage.java:219)
	at org.apache.hadoop.hdfs.server.datanode.DataNode.initStorage(DataNode.java:916)
	at org.apache.hadoop.hdfs.server.datanode.DataNode.initBlockPool(DataNode.java:887)
	at org.apache.hadoop.hdfs.server.datanode.BPOfferService.verifyAndSetNamespaceInfo(BPOfferService.java:311)
	at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.connectToNNAndHandshake(BPServiceActor.java:218)
	at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.run(BPServiceActor.java:660)
	at java.lang.Thread.run(Thread.java:745)
2016-05-10 15:14:05,622 WARN org.apache.hadoop.hdfs.server.datanode.DataNode: Ending block pool service for: Block pool <registering> (storage id DS-6116241-10.20.18.160-50010-1462417536805) service to cdhhadoop1/10.20.18.158:8020
2016-05-10 15:14:05,624 WARN org.apache.hadoop.hdfs.server.datanode.DataNode: Block pool ID needed, but service not yet registered with NN
java.lang.Exception: trace
	at org.apache.hadoop.hdfs.server.datanode.BPOfferService.getBlockPoolId(BPOfferService.java:155)
	at org.apache.hadoop.hdfs.server.datanode.BlockPoolManager.remove(BlockPoolManager.java:91)
	at org.apache.hadoop.hdfs.server.datanode.DataNode.shutdownBlockPool(DataNode.java:846)
	at org.apache.hadoop.hdfs.server.datanode.BPOfferService.shutdownActor(BPOfferService.java:387)
	at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.cleanUp(BPServiceActor.java:487)
	at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.run(BPServiceActor.java:683)
	at java.lang.Thread.run(Thread.java:745)
2016-05-10 15:14:05,624 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: Removed Block pool <registering> (storage id DS-6116241-10.20.18.160-50010-1462417536805)
2016-05-10 15:14:05,624 WARN org.apache.hadoop.hdfs.server.datanode.DataNode: Block pool ID needed, but service not yet registered with NN
java.lang.Exception: trace
	at org.apache.hadoop.hdfs.server.datanode.BPOfferService.getBlockPoolId(BPOfferService.java:155)
	at org.apache.hadoop.hdfs.server.datanode.DataNode.shutdownBlockPool(DataNode.java:848)
	at org.apache.hadoop.hdfs.server.datanode.BPOfferService.shutdownActor(BPOfferService.java:387)
	at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.cleanUp(BPServiceActor.java:487)
	at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.run(BPServiceActor.java:683)
	at java.lang.Thread.run(Thread.java:745)
2016-05-10 15:14:07,624 WARN org.apache.hadoop.hdfs.server.datanode.DataNode: Exiting Datanode
2016-05-10 15:14:07,626 INFO org.apache.hadoop.util.ExitUtil: Exiting with status 0
2016-05-10 15:14:07,628 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: SHUTDOWN_MSG: 
/************************************************************
SHUTDOWN_MSG: Shutting down DataNode at cdhhadoop3/10.20.18.160
************************************************************/


解决方法:

首先要确认你的数据文件夹是正确的。文件夹权限是正确的。

然后删除datanode里面的数据,不要删除文件夹。删除里面的文件就行了。

这样重启datanode的时候会重新去生成文件。

引起这个问题,可能是重启namenode或者format namenode的时候,datanode是死的。所以引起datanode和namenode上面的数据不一致。

<think>好的,我需要帮助用户解决Hadoop集群中DataNodeNameNode未启动的问题。首先,我要根据提供的引用资料整理可能的原因解决方法。 首先,用户提到的jps命令显示DataNodeNameNode,可能的原因有多次格式化导致ID一致、配置文件错误、残留文件未清理,或者端口被占用。引用中的资料提到多次格式化会导致namenodedatanode的ID一致,所以需要删除相关目录重新初始化。比如引用34都提到了删除data/dfs目录下的文件,并重新格式化。引用5则指出要检查hdfs-site.xmlcore-site.xml的配置是否正确,尤其是目录路径的设置。 接下来,我需要按照逻辑分步骤说明解决方法。第一步应该是检查配置文件是否正确,确保路径设置无误。然后,处理多次格式化的问题,删除旧的datalogs目录,再重新格式化。之后,检查端口占用情况,比如50070或9870端口是否被占用。还要查看日志文件,分析具体的错误信息。 此外,需要提醒用户注意事项,比如避免重复格式化,以及格式化前关闭所有Hadoop服务。这些步骤应该清晰明了,用户能一步步跟随操作。 最后,生成相关问题,帮助用户进一步了解可能的问题,比如配置文件的重要性、格式化后必须的操作、日志分析等。确保问题覆盖用户可能遇到的其他情况,引用对应的参考资料。 整理思路时要确保每个步骤都有对应的引用支持,比如删除文件来自引用45,检查配置引用5,重新格式化引用23。同时,语言要简洁易懂,避免技术术语过于复杂,让用户容易理解。</think>### HadoopDataNodeNameNode未启动的排查步骤 #### 1. **检查配置文件** - **核心配置文件**:确保$hdfs-site.xml$$core-site.xml$中的路径配置正确,尤其是以下参数: ```xml <!-- hdfs-site.xml --> <property> <name>dfs.namenode.name.dir</name> <value>/opt/module/hadoop-3.1.3/data/dfs/name</value> <!-- 示例路径 --> </property> <property> <name>dfs.datanode.data.dir</name> <value>/opt/module/hadoop-3.1.3/data/dfs/data</value> </property> <!-- core-site.xml --> <property> <name>hadoop.tmp.dir</name> <value>/opt/module/hadoop-3.1.3/data/tmp</value> </property> ``` 若路径与实际安装路径一致,需修正后重启服务[^5]。 #### 2. **清理残留文件** - **删除旧数据目录**:多次格式化会导致NameNodeDataNode的`clusterID`一致,需执行: ```bash rm -rf /opt/module/hadoop-3.1.3/data/dfs/* rm -rf /opt/module/hadoop-3.1.3/logs/* ``` 此操作会清除所有历史数据日志,需谨慎操作[^3][^4]。 #### 3. **重新格式化并启动** - **格式化NameNode**: ```bash hdfs namenode -format ``` - **启动HDFS服务**: ```bash start-dfs.sh ``` 格式化后**必须删除旧数据目录**,否则DataNode无法注册到NameNode[^2][^3]。 #### 4. **检查端口占用** - **NameNode端口**:默认HTTP端口为9870(Hadoop 3.x),RPC端口为8020。若端口被占用,需释放或修改配置: ```bash netstat -tuln | grep 9870 ``` #### 5. **查看日志定位问题** - **NameNode日志**:检查`logs/hadoop-<user>-namenode-<hostname>.log`,搜索`ERROR`或`WARN`关键字。 - **DataNode日志**:查看`logs/hadoop-<user>-datanode-<hostname>.log`,常见错误如权限足或目录可写。 --- #### 注意事项 - **避免重复格式化**:仅首次搭建集群时需格式化NameNode,后续重启无需操作。 - **权限问题**:确保Hadoop相关目录对启动用户有读写权限(如使用`chmod -R 755 /opt/module/hadoop-3.1.3`)。 - **服务启动顺序**:先启动HDFS(`start-dfs.sh`),再启动YARN(`start-yarn.sh`)。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值