启动hadoop2.7,datanode启动失败:Initialization failed for Block pool

实验环境

VMware15;Ubuntu16.04;hadoop2.7

问题描述

使用命令start-dfs.sh 启动hadoop2.7遇到datanode未启动成功。在确保各项配置(如:java 环境变量)配置正确的情况下,我们可以通过启动时的提示去查看日志信息 。

  • 提示:
    启动时会提示形如 “DBLab-XMU: starting namenode, logging to /usr/local/hadoop/logs/hadoop-hadoop-namenode-DBLab-XMU.out”,其中 DBLab-XMU 对应你的机器名,但其实启动日志信息是记录在 /usr/local/hadoop/logs/hadoop-hadoop-namenode-DBLab-XMU.log 中,所以应该查看这个后缀为 .log 的文件;

  • 一些建议
    每一次的启动日志都是追加在日志文件之后,所以得拉到最后面看,对比下记录的时间就知道了。一般出错的提示在最后面,通常是写着 Fatal、Error、Warning 或者 Java Exception 的地方。 在vim一般模式下可以通过 /去快速查找错误。

  • 日志信息

在这里插入图片描述

问题分析

  • 出现该问题的原因

在第一次格式化dfs后,启动并使用了hadoop,后来又重新执行了格式化命令(hdfs namenode -format),这时namenode的clusterID会重新生成,而datanode的clusterID 保持不变。

每次namenode format会重新创建一个namenodeId,而data目录包含了上次format时的id,namenode format清空了namenode下的数据,但是没有清空datanode下的数据,导致启动时失败,所要做的就是每次fotmat前,清空data下的所有目录.

解决办法

这里笔者用的是法二。

法一

停掉集群,删除问题节点的data目录下的所有内容。即hdfs-site.xml文件中配置的dfs.data.dir目录(我的目录:/usr/local/hadoop/dfs/data/current)。重新格式化namenode。

法二

先停掉集群,然后将datanode节点目录/dfs/data/current/VERSION中的修改为与namenode一致即可。

其实只需要把 data/current/VERSION 中的clusterID 改为和 name/current/VERSION中的clusterID一致。

之后我们重新启动集群,通过 jps命令查看:

(base) hadoop@ubuntu:/usr/local/hadoop/logs$ jps
9668 SparkSubmit
13093 Jps
12983 SecondaryNameNode
12649 NameNode
12798 DataNode

此时,我们便可在本地与hdfs文件系统进行交互了,在浏览器中查看:

在这里插入图片描述

欢迎关注我的微信公众号,谈风月之余谈技术
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值