Hadoop启动的时候,发现Datanode启动不了,解决办法

转载地址:https://blog.csdn.net/cc1949/article/details/78467673

                   https://www.cnblogs.com/kxdblog/p/4034255.html

解决方法:

(1)现象:

# jps

看不到DataNode
(2)可能原因:

datanode的clusterID 和 namenode的clusterID 不匹配。
(3)解决办法:

找到data和name配置的dir路径,找到hdfs-site.xml文件(cd hadoop-2.6.5/etc/hadoop/)

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
 
<configuration>
    <property>
        <name>dfs.name.dir</name>
        <value>/home/cc/hadoop/name</value>
    </property>
 
    <property>
        <name>dfs.data.dir</name>
        <value>/home/cc/hadoop/data</value>
    </property>
 
    <property>
        <name>dfs.replication</name>
        <value>2</value>
    </property> 
</configuration>

进入配置的目录

cd /home/cc/hadoop/

能看到 data和name两个文件夹,

将name/current下的VERSION中的clusterID复制到data/current下的VERSION中,覆盖掉原来的clusterID

让两个保持一致。

#Tue Nov 07 00:37:37 EST 2017
storageID=DS-bab60b94-88d8-43e4-810e-337684f621e8
clusterID=CID-0fe4b1be-69ee-4894-b97a-7470fe3ff79d
cTime=0
datanodeUuid=4acb3c75-9dc5-4e70-a6dc-f2ac6b9f4ab6
storageType=DATA_NODE
layoutVersion=-56

然后重启Haddop,启动后执行jps,查看进程。

OK,DataNode已经出现!

注意:hadoop集群内所有的slave的clusterID都应该是一样的,否则就启动不起来。

一般在数据节点的log日志信息里能找到导致启动不起来的原因。

1.Namenode和DataNode的NamenodeID不一致

    描述:一般在集群多次重新格式化HDFS之后,或者刚安装时会碰到。日志信息如下:

  java.io.IOException: Incompatible namespaceIDs in /root/tmp/dfs/data:

  NameNode namespaceID = 1307672299; DataNode namespaceID = 389959598

解决办法:最直接有效的办法就是修改Datanode上的namenodeID(位于/dfs/data/current/VERSION文件中)或修改NameNode的namespaceID(位于/dfs/name/current/VERSION文件中),使其一致。

2.Datanode突然不堪重负宕掉

  只需重启坏掉的Datanode或者JobTracker。当集群中的某单个节点出现问题,不必重新重启整个系统,只需重启这个节点,然后会自动连接到整个集群里。

  在坏死的节点上输入以下命令:

   bin/Hadoop-daemon.sh start DataNode
   bin/Hadoop-daemon.sh start jobtracker

        以上方法也可以用于动态加入datanode,允许用户动态将某个节点加入集群中。

  在hadoop集群中,HDFS分布式文件系统和mapreduce计算框架是可以独立部署安装的,在hadoop2中体现很明显,如果只需要使用部分节点进行计算,只需要单独启动resourcemanager和需要使用的结点上的nodemanager即可,查找命令可以参考/hadoop2/sbin/start-yarn.sh中是如何写的就可以找到答案了! 在hadoop2/sbin/start-yarn.sh脚本中,写了启动resourcemanager和所有节点上的nodemanager,所以只需要参考该脚本文件,就能得到启动单个节点上的nodemanager的方法:    

hadoop2/sbin/hadoop-daemon.sh startdatanode

hadoop2/sbin/yarn-daemon.sh nodemanager

然后执行下集群HDFS的负载均衡即可完成动态添加节点了!

  在hadoop1中

bin/Hadoop-daemon.sh --config ./conf start DataNode

bin/Hadoop-daemon.sh --config ./conf start tasktracker

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值