HDFS的DataNode工作原理

工作原理

在这里插入图片描述

1)一个数据块在DataNode上以文件形式存储在磁盘上,包括两个文件,一个是数据本身,一个是元数据包括数据块的长度,块数据的校验和,以及时间戳。

2)DataNode启动后向NameNode注册,通过后,周期性(1小时)的向NameNode上报所有的块信息。

3)心跳是每3秒一次,心跳返回结果带有NameNode给该DataNode的命令如复制块数据到另一台机器,或删除某个数据块。如果超过10分钟没有收到某个DataNode的心跳,则认为该节点不可用。

4)集群运行中可以安全加入和退出一些机器。

超时设置
  • 如果DataNode进程死亡或者网络故障造成DataNode无法与NameNode通信,NameNode不会理解把该节点判定为死亡,而是要经过一段时间,这段时间暂称为超时时间。

  • 默认超时时间为 10分钟+ 30秒。

  • 如果设置了超时时间TimeOut,则超时时长的计算公式为:

    TimeOut = 2 * dfs.namenode.heartbeat.recheck-interval + 10 * dfs.heartbeat.interval
    

    而默认dfs.namenode.heartbeat.recheck-interval为5分钟,dfs.heartbeat.interval默认为 3秒。

  • ​ 需要注意的是hdfs-site.xml 配置文件中的heartbeat.recheck.interval的单位为毫秒,dfs.heartbeat.interval的单位为秒。

    <property>
        <name>dfs.namenode.heartbeat.recheck-interval</name>
        <value>300000</value>
    </property>
    <property>
        <name>dfs.heartbeat.interval</name>
        <value>3</value>
    </property>
    
添加新服役节点

实际操作流程:

0.1克隆后,ip和主机名称修改,并重启

0.2删除遗留数据

0.3修改同步文件,增加新节点的文件同步

1.先修改各个节点hosts文件,增加新节点

2.修改workers配置文件,增加新节点,并同步到其他节点

3.配置免密登录,使得namenode登录新节点的时候不需要输入密码。

4.启动dfs 和yarn

$HADOOP_HOME/bin/hdfs --daemon start datanode
yarn --daemon start nodemanager

查看节点信息命令:

hdfs dfsadmin -report  #查看datanode节点
yarn node -list	#查看nodemanager节点
hdfs dfsadmin -refreshNodes #刷新节点
start-balancer.sh	#重平衡各个节点
退役旧数据节点

注意:修改hdfs-site.xml需要重启HDFS

  • 通过添加白名单

先在/opt/hadoop-3.1.2/etc/hadoop/ 创建一个文件:dfs.hosts

touch dfs.hosts
vim dfs.hosts

添加如下内容

master
slaver01
slaver02
slaver03
slaver04

修改配置文件hdfs-site.xml

<property>
        <name>dfs.hosts</name>
        <value>/opt/hadoop-3.1.2/etc/hadoop/dfs.hosts</value>
</property>

重启hdfs。

退役某个节点时,只需要删除dfs.hosts中对应的hosts,然后刷新

 hdfs dfsadmin -refreshNodes

想重启某个节点,再加入dfs.hosts,然后刷新节点。

  • 通过黑名单退役

先在/opt/hadoop-3.1.2/etc/hadoop/ 创建一个文件:dfs.hosts.exclude 先不添加内容。

修改配置文件 hdfs-site.xml

<property>
        <name>dfs.hosts.exclude</name>
        <value>/opt/hadoop-3.1.2/etc/hadoop/dfs.hosts.exclude</value>
</property>

重启hdfs。

在这里插入图片描述

以后,如果想退役某个节点,只需要在黑名单dfs.hosts.exclude中添加需要的hosts

slaver04

刷新节点

hdfs dfsadmin -refreshNodes
yarn rmadmin -refreshNodes

此时,退役节点,处于decommission in progress(退役中) 等复制完数据到其他节点,就完成退役,停止该节点及节点资源管理器。注意:如果副本数是3,服役的节点小于等于3,是不能退役成功的,需要修改副本数后才能退役。

在这里插入图片描述

想平衡数据,用下列命令

start-balancer.sh
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值