HDFS 动态扩容、动态缩容以及黑白名单

动态扩容、节点上线

节点上线: 之一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

image-20221103102541783

显然启动成功

Step 4 : WebUi查看是否已经添加成功

HDFS 动态扩容、动态缩容以及黑白名单_第1张图片

显然已经添加成功

Step 5 : DataNode 负载均衡

  • 新加入的节点没有数据存储,看起来负载不均衡,因此最后还需要对hdfs进行一个负载均衡。首先设置数据传输的带宽

    hdfs dfsadmin -setBalancerBandwidth 104857600 # 100M

    image-20221103103142396

  • 启动Balancer,等待集群自均衡完成

    hdfs balancer -threshold 5 # 认为如果从差距在5%左右就认为负载均衡

    HDFS 动态扩容、动态缩容以及黑白名单_第2张图片

    由于文件数量过少,则进行的非常快

动态缩容、节点下线

  • 节点下线: 服务器需要进行退役更换,需要在当下的集群中停止某些机器上的datanode的服务。俗称动态缩容、节点退役

Step 1 : 添加退役节点

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

在进行此操作之前查看各个节点的状态:

HDFS 动态扩容、动态缩容以及黑白名单_第3张图片

我们需要配置文件,讲不需要的节点填进去,这里将hadoop135节点下线,只需要在上述文件中加入hadoop135节点名称然后进行刷新即可。

Step 2 : 刷新集群

# 刷新
hdfs dfsadmin -refreshNodes

然后再查看UI:

HDFS 动态扩容、动态缩容以及黑白名单_第4张图片

发现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指向文件,该文件包含不允许连接到名称节点的主机列表。必须指定文件的完整路及名称。如果该值为空,则不仅指任何主机加入

你可能感兴趣的:(大数据,hdfs,Hadoop,hdfs,hadoop,大数据)