Hadoop生态圈(八)- HDFS动态节点管理

目录

前言

部分内容摘自尚硅谷、黑马等等培训资料


1. 背景

  已有 HDFS 集群容量已经不能满足存储数据的需求,需要在原有集群基础上动态添加新的 DataNode 节点。就是俗称的动态扩容。
  旧的服务器需要进行退役更换,暂停服务,需要在当下的集群中停止某些机器上 HDFS 的服务,俗称动态缩容。

2. 动态扩容、节点上线

2.1 新机器基础环境准备

2.1.1 主机名、IP

  确保新机器 IP 和已有 HDFS 集群所属同一网段
Hadoop生态圈(八)- HDFS动态节点管理
  新机器系统 hostname
Hadoop生态圈(八)- HDFS动态节点管理

2.1.2 Hosts映射

Hadoop生态圈(八)- HDFS动态节点管理
  集群所有节点保持hosts文件统一

2.1.3 防火墙

  关闭防火墙
Hadoop生态圈(八)- HDFS动态节点管理

2.1.4 SSH免密登录

  为了后续脚本一键启动关闭集群方便,设置 NameNode 到新机器的免密登录。
Hadoop生态圈(八)- HDFS动态节点管理

2.1.5 JDK环境配置

  略。

2.2 Hadoop配置

这块就不细说了,和普通安装没什么区别,可以看我的这篇博客自行安装:《Hadoop3.x在centos上的完全分布式部署》

2.2.1 DataNode负载均衡服务

  新加入的节点,没有数据块的存储,使得集群整体来看负载不均衡。因此最后还需要对 hdfs 负载设置均衡。首先设置数据传输带宽。
  hdfs dfsadmin -setBalancerBandwidth 104857600
  然后启动 Balancer,等待集群自均衡完成即可。
  hdfs balancer -threshold 5

3. 动态缩容、节点下线

3.1 添加退役节点

  在 namenode 机器的hdfs-site.xml配置文件中需要提前配置dfs.hosts.exclude属性,该属性指向的文件就是所谓的黑名单列表,会被 namenode 排除在集群之外。如果文件内容为空,则意味着不禁止任何机器。
  提前配置好的目的是让 namenode 启动的时候就能加载到该属性,只不过还没有指定任何机器。否则就需要重启 namenode 才能加载,因此这样的操作我们称之为具有前瞻性的操作

<property>
	<name>dfs.hosts.exclude</name>
	<value>/data/hadoop-3.3.1/etc/hadoop/excludes</value>
</property>

  编辑dfs.hosts.exclude属性指向的 excludes 文件,添加需要退役的主机名称。
Hadoop生态圈(八)- HDFS动态节点管理
  注意:如果副本数是 3,服役的节点小于等于 3,是不能退役成功的,需要修改副本数后才能退役。

3.2 刷新集群

  在 namenode 所在的机器刷新节点:hdfs dfsadmin -refreshNodes
Hadoop生态圈(八)- HDFS动态节点管理
  等待退役节点状态为decommissioned(所有块已经复制完成)

3.3 手动关闭DataNode进程

  hdfs --daemon stop datanode
Hadoop生态圈(八)- HDFS动态节点管理

3.4 DataNode负载均衡服务

  如果需要可以对已有的 HDFS 集群进行负载均衡服务。
  hdfs balancer -threshold 5

4. 黑白名单机制

4.1 白名单

  所谓的白名单指的是允许哪些机器加入到当前的 HDFS 集群中,是一种准入机制。
  白名单由dfs.hosts参数指定,该参数位于hdfs-site.xml。默认值为空。
  dfs.hosts 指向文件,该文件包含允许连接到 namenode 的主机列表。必须指定文件的完整路径名。如果该值为空,则允许所有主机准入。

4.2 黑名单

  所谓的黑名单指的是禁止哪些机器加入到当前的 HDFS 集群中,是一种禁入机制。
  黑名单由dfs.hosts.exclude参数指定,该参数位于hdfs-site.xml。默认值为空。
  dfs.hosts.exclude 指向文件,该文件包含不允许连接到名称节点的主机列表。必须指定文件的完整路径名。如果该值为空,则不禁止任何主机加入。

上一篇:阿里云认证体系介绍及学习经验分享


下一篇:HDFS读数据流程