动态扩容、节点上线
节点上线: 之一HDFS集群容量已经不能满足存储数据的需求,需要在原有集群基础上动态添加新的DataNode节点,俗称动态扩容、节点服役
Step 1 : 新机器基础环境的准备
- 主机名、IP配置
- Hosts配置
- 防火墙、时间同步
Step 2 : Hadoop配置
- 修改namenode节点workers配置文件,增加新节点主机名,便于后续一件启停
- 从namenode节点复制hadoop节点,需要注意的是不包括hadoop.tmp、tmp.dir指定的数据存储目录
- 新机器记得配置hadoop环境变量
Step 3 : 手动启动DateNode节点
hdfs --daemon start datanode
查看是否启动成功
jps
显然启动成功
Step 4 : WebUi查看是否已经添加成功
显然已经添加成功
Step 5 : DataNode 负载均衡
-
新加入的节点没有数据存储,看起来负载不均衡,因此最后还需要对hdfs进行一个负载均衡。首先设置数据传输的带宽
hdfs dfsadmin -setBalancerBandwidth 104857600 # 100M
-
启动Balancer,等待集群自均衡完成
hdfs balancer -threshold 5 # 认为如果从差距在5%左右就认为负载均衡
由于文件数量过少,则进行的非常快
动态缩容、节点下线
- 节点下线: 服务器需要进行退役更换,需要在当下的集群中停止某些机器上的datanode的服务。俗称动态缩容、节点退役
Step 1 : 添加退役节点
- 在namenode机器的hdfs-site.xml配置文件中需要提前配置dfs.hosts.exclude属性,该属性指向的文件就是所谓的黑名单列表,会被namenode排除在集群之外,如果文件内容为空,则意味着不禁止任何机器
- 提前配置好的目的是让namenode启动的时候就能够加载到该属性,只不过没有指定任何机器。否则就需要重启namenode才能加载,因此这样的操作我们称之为具有前瞻的性操作
<property>
<name>dfs.hosts.exclude</name>
<value>/opt/module/hadoop-3.3.1/etc/hadoop/excludes</value>
</property>
在进行此操作之前查看各个节点的状态:
我们需要配置文件,讲不需要的节点填进去,这里将hadoop135节点下线,只需要在上述文件中加入hadoop135节点名称然后进行刷新即可。
Step 2 : 刷新集群
# 刷新
hdfs dfsadmin -refreshNodes
然后再查看UI:
发现135节点已经下线
Step 3 :关闭节点
hdfs --daemon stop datanode
HDFS集群黑、白名单机制
白名单
- 所谓的白名单指的是允许那些机器加入到当前的HDFS集群中,是一种准入机制
- 白名单由dfs.hosts参数指定,改参数位于hdfs-site.xml。默认为空
- dfs.hosts指向文件,该文件包括允许连接到namenode的主机列表,必须指定文件的完整路径名,如果该值为空,则允许所有主机准入
黑名单
- 所谓的黑名单指的是禁止那些机器加入到当前的HDFS集群中,是一种禁入机制
- 黑名单由hdfs.hosts.exclude参数指定,改参数位于hdfs-site.xml。默认为空
- dfs.hosts.exclude指向文件,该文件包含不允许连接到名称节点的主机列表。必须指定文件的完整路及名称。如果该值为空,则不仅指任何主机加入