Hadoop启动datanode失败,clusterId有问题

问题:

 

搭建伪Hadoop集群的时候,运行命令:

hdfs namenode -format

格式化或者说初始化namenode。

然后用命令:

start-dfs.sh

来启动hdfs时,jps发现datanode先是启动了一下,然后就挂掉了,在http://192.168.195.128:50070 (HDFS管理界面)也看不到datanode的信息。

 

然后去datanode的日志上面看,看到这样的报错:

 

 

出错原因:(来自博客https://blog.csdn.net/qq_30136589/article/details/51638069)

hadoop的升级功能需要data-node在它的版本文件里存储一个永久性的clusterID,当datanode启动时会检查并匹配namenode的版本文件里的clusterID,如果两者不匹配,就会出现"Incompatible clusterIDs"的异常。
  每次格式化namenode都会生成一个新的clusterID, 如果只格式化了namenode,没有格式化此datanode, 就会出现”java.io.IOException: Incompatible namespaceIDs“异常。
  参见官方CCR[HDFS-107]

 

这就解释了,为什么我第一次是成功的,后面一直都datanode挂掉的情况。

因为第一次成功后,每次再跑hdfs之前我都格式化或者说初始化了hdfs的配置。然后,namenode的clusterId就会清空,在你跑start-dfs.sh的时候,就会重新生成一个clusterId。但你datanode没有初始化噢,就是说datanode里面的那个clusterId还是之前那个,于是就出现了两者不匹配,报错了。

 

 

解决方法:

1.在namenode机器上:   找到${dfs.namenode.name.dir}/current/VERSION 里找到clusterID。这个dfs.namenode,name.dir在hdfs-site.xml可以找到你这个路径的真正路径。:

 

 

这里的话就是在/home/hadoop/data/name/current下找到VERSION文件,然后里面有个clusterId,找到它复制了:

 

 

 

2.在出问题的datanode上:    找到$dfs.datanode.data.dir,这个也是在hdfs-site.xml配置文件可以找到这个路径具体的位置:

 

像我的机器,就是在/home/hadoop/data/data/current下找到VERSION文件,然后里面也有个clusterId:

 

 然后你要做的就是把(1)中复制的namenode的clusterId覆盖了出问题的datanode的clusterId。

 

 

3.在问题节点重新重启你的datanode,也就是重新跑命令:

start-dfs.sh

 

然后datanode就重新跑起来了。在浏览器上访问那个管理界面也看到datanode了:

 

 

注意:

1.配置完clusterId后不要再hdfs namenode -format格式化或者说初始化namenode了。

2.记得把所有机器的防火墙给关了,不然可能通信上会有所拦截。(反正我一开始没关,然后配好了clusterId在浏览器的Hadoop管理界面上没能看到datanode,一关掉所有机器的防火墙就好了~)

 

转载于:https://www.cnblogs.com/wangshen31/p/9900987.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 启动Hadoop时如果没有DataNode,可能会导致以下问题: 1. NameNode无法找到可用的DataNode,导致无法存储和处理数据。 2. 如果只有一个DataNode,那么它将成为单点故障,如果它出现问题,整个Hadoop集群将无法正常工作。 3. 如果没有足够的DataNode,那么Hadoop集群的性能将受到影响,因为数据无法并行处理。 因此,启动Hadoop时应该确保至少有一个DataNode可用。如果没有DataNode,可以通过以下步骤解决: 1. 检查Hadoop配置文件中的DataNode设置,确保它们正确配置。 2. 检查DataNode所在的机器是否已经启动,并且Hadoop服务已经在运行。 3. 如果DataNode仍然无法启动,可以尝试重新安装Hadoop并重新配置。 总之,启动Hadoop时必须确保DataNode可用,否则将会影响整个Hadoop集群的正常运行。 ### 回答2: 当启动Hadoop时,如果没有DataNode出现,通常会出现以下两种情况: 1. Hadoop配置文件错误 首先,应该检查Hadoop配置文件是否正确。检查hdfs-site.xml和core-site.xml文件的设置,确保DataNode的相关设置正确。确认以下设置: 在hdfs-site.xml文件中,确保dfs.replication属性设置为一个大于或等于1的值。 在core-site.xml文件中,确保fs.default.name属性设置为hdfs的URI(如hdfs://localhost:9000)。 如果配置文件设置正确,但是DataNode仍然没有出现,则需要检查DataNode进程运行的日志文件。日志文件通常可以在${HADOOP_HOME}/logs/hadoop-{user}-datanode-{hostname}.log路径下找到。检查该日志文件,确认DataNode进程未出现的原因。 2. 硬件或网络问题 另外一种可能是因为硬件或网络问题导致DataNode未能启动。检查以下几个问题: 确保Hadoop集群中所有节点的系统时间同步。如果系统时间存在偏差,可能会导致DataNode无法正常启动。 检查DataNode节点是否能够连接到网络。如果DataNode无法连接到网络,则无法向NameNode注册其服务,并且无法正常工作。 确保DataNode的磁盘空间足够。如果DataNode的磁盘空间不足,则不能为HDFS存储提供足够的空间。 总之,当启动Hadoop时没有DataNode出现,应该首先检查Hadoop配置文件是否设置正确。如果设置正确,则需要检查DataNode进程的日志文件及硬件或网络问题,确保DataNode正常工作。 ### 回答3: Hadoop是一个分布式的计算平台,由于其分布式的特性,启动hadoop需要一些基本的组件,其中包括namenodedatanode,以及由它们组成的集群。如果启动hadoop时,发现缺少了datanode,那么可能会出现以下问题: 1. 配置文件错误:在启动hadoop前,需要通过配置文件来指定集群中的组件。如果配置文件中缺少了datanode的相关信息,那么就会导致启动失败。 2. 网络故障:datanode是存储数据的节点,如果网络连接出现故障,则datanode无法与其他节点建立连接,也就无法提供存储服务。 3. 资源不足:如果集群中的datanode数量过少,那么可能会导致无法存储所有的数据,而且在数据读写时也会出现瓶颈。 针对以上问题,我们可以采取以下措施来解决: 1. 检查配置文件:通过检查配置文件,确认其中是否存在datanode的相关信息。如果缺少,则需要及时添加。 2. 检查网络连接:通过检查网络连接,确认是否存在连接故障。如果存在,则需要及时解决,以保证datanode可以正常工作。 3. 增加datanode数量:通过增加集群中datanode的数量,可以提高存储和读写能力,确保数据的可靠性和高效性。 综上所述,如果启动hadoop时缺少了datanode,可能会出现多种问题。为了避免这些问题的出现,我们需要在启动前仔细检查配置文件和网络连接,并通过增加datanode数量来提高集群的性能和稳定性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值