【问题标题】:Why does a datanode doesn´t disappear in the hadoop web site when the datanode job is killed?当datanode作业被杀死时,为什么datanode不会在hadoop网站中消失?
【发布时间】:2021-12-20 19:57:06
【问题描述】:

我在 CentOS 8 虚拟机中有一个 3 节点 HA 集群。我正在使用 ZK 3.7.0 和 Hadoop 3.3.1。 在我的集群中,我有 2 个名称节点,节点 1 是活动名称节点,节点 2 是备用名称节点,以防节点 1 下降。另一个节点是datanode 我只是从命令开始

start-dfs.sh

在 node1 中,我运行了以下进程:NameNode、Jps、QuorumPeerMain 和 JournalNode 在 node2 中,我运行了以下进程:NameNode、Jps、QuorumPeerMain、JournalNode 和 DataNode。

我的 hdfs-site.xml 配置如下:

    <property>
        <name>dfs.replication</name>
        <value>2</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>/datos/namenode</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>/datos/datanode</value>
    </property>
    <property>
        <name>dfs.nameservices</name>
        <value>ha-cluster</value>   
    </property>
    <property>
        <name>dfs.ha.namenodes.ha-cluster</name>
        <value>nodo1,nodo2</value>
    </property>
    <property>
        <name>dfs.permissions</name>
        <value>false</value>
    </property>
    <property>
        <name>dfs.namenode.rpc-address.ha-cluster.nodo1</name>
        <value>nodo1:8020</value>
    </property>
    <property>
        <name>dfs.namenode.rpc-address.ha-cluster.nodo2</name>
        <value>nodo2:8020</value>
    </property>
    <property>
        <name>dfs.namenode.http-address.ha-cluster.nodo1</name>
        <value>nodo1:9870</value>
    </property> 
    <property>
        <name>dfs.namenode.http-address.ha-cluster.nodo2</name>
        <value>nodo2:9870</value>
    </property>
    <property>
        <name>dfs.namenode.shared.edits.dir</name>
        <value>qjournal://nodo3:8485;nodo2:8485;nodo1:8485/ha-cluster</value>
    </property>

问题在于,由于 node2 是备用名称节点,我不希望它运行 DataNode 进程,所以我杀死了它。我使用了命令 kill -9 (我知道这不是最好的方法,我应该使用 hdfs --daemon stop datanode)。 然后我进入hadoop网站查看我有多少个datanode。在node1(活动的namenode)Hadoop网站中,在datanode部分我只有1个datanode,node3。 问题是在node2(备用namenode)的Hadoop网站上是这样的:

如果你看不到图片:

default-rack/nodo2:9866 (192.168.0.102:9866)    http://nodo2:9864   558s        

/default-rack/nodo3:9866 (192.168.0.103:9866)   http://nodo3:9864   1s  

node2 数据节点已经有 558 秒没有存活,它不会认为该节点是死的。 有人知道为什么会这样吗??

【问题讨论】:

    标签: hadoop apache-zookeeper webhdfs


    【解决方案1】:

    在您的 hdfs-site.xml 中 检查值:

    • dfs.heartbeat.interval(确定datanode心跳间隔在 秒。)

    • dfs.namenode.heartbeat.recheck-interval(这个时间决定 检查过期数据节点的时间间隔。有了这个值和 dfs.heartbeat.interval,决定datanode的时间间隔为 是否陈旧也被计算在内。这个配置的单位是 毫秒。)

    在此处查看默认设置和更多信息: https://hadoop.apache.org/docs/r2.7.0/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml

    有一个公式可以确定节点何时死亡:

    2 * dfs.namenode.heartbeat.recheck-interval + 10 * (1000 * dfs.heartbeat.interval)
    

    意思是:

    2 * 300000 + 10 * 3000 = 630000 milliseconds = 10 minutes 30 seconds or **630 seconds**.
    

    来源: Hadoop 2.x Administration Cookbook (Packt) - 配置 Datanode 心跳:

    Datanode Removal time = (2 x dfs.namenode.heartbeat.recheck-interval ) + (10 X dfs.heartbeat.interval)
    

    【讨论】:

    • 但是如果dfs.namenode.heartbeat.recheck-interval的默认值是300s,为什么最后一个心跳超过500s前的datanode不认为是stale呢?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-15
    • 1970-01-01
    相关资源
    最近更新 更多