【Hadoop学习之HDFS】_12HDFS之DataNode

一、DataNode工作机制

在这里插入图片描述

  1. 一个数据块在DataNode上以文件形式存储在磁盘上,包括两个文件,一个是数据本身,一个是元数据包括数据块的长度,块数据的校验和,以及时间戳
  2. DataNode启动后向NameNode注册,通过后,周期性(1小时)的向NameNode上报所有的块信息
  3. 心跳是每3秒一次,心跳返回结果带有NameNode给该DataNode的命令如复制块数据到另一台机器,或删除某个数据块。如果超过10分钟没有收到某个DataNode的心跳,则认为该节点不可用
  4. 集群运行中可以安全加入和退出一些机器

二、数据完整性

在这里插入图片描述
DataNode节点保证数据完整性的方法:

  1. DataNode读取Block的时候,它会计算CheckSum
  2. 如果计算后的CheckSum,与Block创建时值不一样,说明Block已经损坏
  3. Client读取其他DataNode上的Block
  4. DataNode在其文件创建后周期验证CheckSum

三、掉线时限参数设置

如果定义超时时间为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>

四、服役新数据节点

  1. 需求

    随着公司业务的增长,数据量越来越大,原有的数据节点的容量已经不能满足存储数据的需求,需要在原有集群基础上动态添加新的数据节点。

  2. 在原有的节点上克隆一台主机

  3. 修改IP地址和主机名称

  4. 删除原来的HDFS文件系统留存的文件(datalog文件)

  5. 使配置文件生效

    source /etc/profile
    
  6. 启动DataNode

    sbin/hadoop-daemon.sh start datanode
    sbin/yarn-daemon.sh start nodemanager
    
  7. 如果数据不均衡,可以用命令实现集群的再平衡

    sbin/start-balancer.sh
    

五、退役旧数据节点

(一)设置退役白名单

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

  2. NameNodeetc/hadoop目录下创建dfs.hosts文件,并添加相应主机名称或地址

  3. NameNodehdfs-site.xml配置文件中增加dfs.hosts属性

    <property>
    	<name>dfs.hosts</name>
    	<value>文件路径/dfs.hosts</value>
    </property>
    
  4. 将以上配置分发给所有主机

(二)设置退役黑名单

  1. 在黑名单上面的主机都会被强制退出

  2. NameNodeetc/hadoop目录下创建dfs.hosts.exclude文件,并添加相应主机名称或地址

  3. NameNodehdfs-site.xml配置文件中增加dfs.hosts.exclude属性

    <property>
    	<name>dfs.hosts.exclude</name>
        <value>/opt/module/hadoop-2.7.2/etc/hadoop/dfs.hosts.exclude</value>
    </property>
    
  4. 将以上配置分发给所有主机

  5. 刷新NameNode、刷新ResourceManager

    hdfs dfsadmin -refreshNodes
    yarn rmadmin -refreshNodes
    
  6. 注意:如果副本数是3,服役的节点小于等于3,是不能退役成功的,需要修改副本数后才能退役

六、DataNode多目录配置(同NameNode配置)

  1. DataNode也可以配置成多个目录,每个目录存储的数据不一样。即:数据不是副本

  2. 在hdfs-site.xml添加如下配置

    <property>
        <name>dfs.datanode.data.dir</name
      	<value>file:///${hadoop.tmp.dir}/dfs/data1,file:///${hadoop.tmp.dir}/dfs/data2</value>
    </property>
    
    
发布了30 篇原创文章 · 获赞 30 · 访问量 771

猜你喜欢

转载自blog.csdn.net/qq_40947493/article/details/104170495