大数据学习之路(8): Datanode工作机制

494 阅读3分钟

一、DataNode工作机制

clipboard.png

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

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

3、心跳是每3秒一次,心跳返回结果带有NameNode给DataNode的命令,比如删除某个数据块等。如果超过10分钟没有收到某个Datanode 的心跳,则认为改节点不可用。

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

二、掉线时限参数设置

从前面我们知道了NameNode和datanode是相互通信的,datanode会有心跳机制,每隔3秒进行一次。但是datanode可能会出现故障,而namenode发现datanode故障后,具体会如何处理呢?

1、DataNode进程死亡或者网络故障造成DataNode无法与NameNode通信。

2、NameNode不会立即把该节点判定为死亡,要经过一端时间,计算的公式为:

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

3、参数的配置在hdfs-site.xml 中,默认如下:一个单位为豪秒,一个单位为秒,这是需要注意的。

<property>
    <name>dfs.namenode.heartbeat.recheck-interval</name>
    <value>300000</value>
</property>
<property>
    <name>dfs.heartbeat.interval</name>
    <value>3</value>
</property>

三、服役新数据节点

如果原先的数据节点容量不能满足存储数据的需求,需要在原先节点上动态添加新的数据节点。

1、准备一台新的节点机器,装好环境后。直接启动DataNode,即可关联到集群

hdfs --daemon start datanode
yarn -–daemon start nodemanager

2、如果数据不均衡,可以用命令实现集群的再平衡。

也就是新加入一台机器后,如果其他机器都占了很大内存,可以使用这个命令。

sbin/start-balancer.sh

四、退役旧数据节点

白名单和黑名单在一开始搭建集群的时候就要规划好。

4.1 添加白名单和黑名单(安全)

添加到白名单的主机节点,都允许访问NameNode,不在白名单的主机节点,都会被直接退出。

添加到黑名单的主机节点,不允许访问namenode ,会在数据迁移后退出。

实际情况下,白名单用于确定允许访问NameNode的DataNode节点,内容配置一般与workers文件内容一致。黑名单用于集群运行过程中退役DataNode节点。

配置白名单和黑名单的具体步骤如下:

/opt/module/hadoop-3.1.3/etc/hadoop
[lei@hadoop102 hadoop]$ touch whitelist
[lei@hadoop102 hadoop]$ touch blacklist

在whitelist中添加主机名称,加入集群正常工作的节点为

hadoop100
hadoop101
hadoop102
hadoop103

在NameNode的hdfs-site.xml配置文件中增加dfs.hosts 和dfs.hosts.exclude配置

<property>
<name>dfs.hosts</name>
<value>/opt/module/hadoop-3.1.3/etc/hadoop/whitelist</value>
</property>
 
<property>
<name>dfs.hosts.exclude</name>
<value>/opt/module/hadoop-3.1.3/etc/hadoop/blacklist</value>
</property>

配置文件分发,每台机器要求一样

xsync hdfs-site.xml

重新启动集群

4.2 黑名单退役

1、准备黑名单退役hadoop105

编辑blacklist文件,添加Hadoop05

[atguigu@hadoop102 hadoop] vim blacklist
hadoop105

2、刷新nameNode

[atguigu@hadoop102 hadoop] hdfs dfsadmin -refreshNodes

3、在web端查看DataNode状态,hadoop105正在退役中,进行数据的迁移

clipboard.png