HDFS 集群动态节点管理

news/2024/5/20 4:51:52 标签: hdfs, 数据库, hadoop

目录

一、动态扩容、节点上线

1.1 背景

1.2 扩容步骤 

1.2.1 新机器基础环境准备

1.2.2 Hadoop 配置 

1.2.3 手动启动 DataNode 进程

1.2.4 Web 页面查看情况 

1.2.5 DataNode 负载均衡服务 

二、动态缩容、节点下线

2.1 背景 

2.2 缩容步骤 

2.2.1 添加退役节点

2.2.2 刷新集群 

2.2.3 手动关闭 DataNode 进程 

2.2.4 DataNode 负载均衡服务 

三、HDFS 集群黑、白名单机制

3.1 白名单 

3.2 黑名单 


 

一、动态扩容、节点上线

1.1 背景

节点上线:已有 HDFS 集群容量已不能满足存储数据的需求,需要在原有集群基础上动态添加新的 DataNode 节点

俗称动态扩容、节点服役。

1.2 扩容步骤 

1.2.1 机器基础环境准备

        准备一台新的机器,设置好主机名、IP(192.168.170.139),做好 Hosts 映射、SSH 免密登录和时间同步,关闭防火墙以及安装 JDK 环境。

具体操作请看这篇文章:Hadoop 3.2.4 集群搭建详细图文教程_Stars.Sky的博客-CSDN博客 

1.2.2 Hadoop 配置 

  1. 修改 namenode 节点 workers 配置文件,增加新节点主机名,便于后续一键启停
  2. 从 namenode 节点复制 scp hadoop 安装包到新节点,注意不包括 hadoop.tmp.dir 指定的数据存储目录
  3. 新机器上配置 hadoop 环境变量(/etc/profile)。 

1.2.3 手动启动 DataNode 进程

[root@hadoop04 ~]# hdfs --daemon start datanode

1.2.4 Web 页面查看情况 

地址:http://hadoop01:9870/ 

1.2.5 DataNode 负载均衡服务 

        新加入的节点,没有数据块的存储,使得集群整体来看负载不均衡。因此最后还需要对 hdfs 负载设置均衡。(在 Hadoop01 执行)

# 首先设置数据传输带宽
hdfs dfsadmin -setBalancerBandwidth 104857600

# 然后启动 Balancer,等待集群自均衡完成即可
hdfs balancer -threshold 5

二、动态缩容、节点下线

2.1 背景 

节点下线:服务器需要进行退役更换,需要在当下的集群中停止某些机器上 datanode 的服务。

俗称动态缩容、节点退役。

2.2 缩容步骤 

2.2.1 添加退役节点

        在 namenode 机器的 hdfs-site.xml 配置文件中需要提前配置 dfs.hosts.exclude 属性,该属性指向的文件就是所谓的黑名单列表,会被 namenode 排除在集群之外。如果文件内容为空,则意味着不禁止任何机器。

        提前配置好的目的是让 namenode 启动的时候就能加载到该属性,只不过还没有指定任何机器。否则就需要重启 namenode 才能加载,因此这样的操作我们称之为具有前瞻性的操作

[root@hadoop01 ~]# cd /bigdata/hadoop/server/hadoop-3.2.4/etc/hadoop/
[root@hadoop01 /bigdata/hadoop/server/hadoop-3.2.4/etc/hadoop]# vim hdfs-site.xml 
<property>
  <name>dfs.hosts.exclude</name>
  <value>/bigdata/hadoop/server/hadoop-3.2.4/etc/hadoop/excludes</value>
</property>

[root@hadoop01 /bigdata/hadoop/server/hadoop-3.2.4/etc/hadoop]# scp hdfs-site.xml hadoop02:$PWD
hdfs-site.xml                                                                                                         100% 1256   632.5KB/s   00:00    
[root@hadoop01 /bigdata/hadoop/server/hadoop-3.2.4/etc/hadoop]# scp hdfs-site.xml hadoop03:$PWD
hdfs-site.xml                                                                                                         100% 1256   112.6KB/s   00:00    
[root@hadoop01 /bigdata/hadoop/server/hadoop-3.2.4/etc/hadoop]# scp hdfs-site.xml hadoop04:$PWD
hdfs-site.xml                                                                                                         100% 1256   516.4KB/s   00:00

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

# 重新启动 HDFS 集群,使配置生效
[root@hadoop01 /bigdata/hadoop/server/hadoop-3.2.4/etc/hadoop]# stop-dfs.sh 
[root@hadoop01 /bigdata/hadoop/server/hadoop-3.2.4/etc/hadoop]# start-dfs.sh 

[root@hadoop01 /bigdata/hadoop/server/hadoop-3.2.4/etc/hadoop]# vim excludes
hadoop04

2.2.2 刷新集群 

在 namenode 所在的机器刷新节点:hdfs dfsadmin -refreshNodes

等待退役节点状态为 decommissioned(所有块已经复制完成)。

[root@hadoop01 /bigdata/hadoop/server/hadoop-3.2.4/etc/hadoop]# hdfs dfsadmin -refreshNodes
Refresh nodes successful

正在退役:

退役完成:

2.2.3 手动关闭 DataNode 进程 

[root@hadoop04 ~]# hdfs --daemon stop datanode
[root@hadoop04 ~]# jps
20310 Jps

2.2.4 DataNode 负载均衡服务 

如果需要可以对已有的 HDFS 集群进行负载均衡服务:

hdfs balancer –threshold 5

三、HDFS 集群黑、白名单机制

3.1 白名单 

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

3.2 黑名单 

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

上一篇文章:Hadoop 3.2.4 集群搭建详细图文教程_Stars.Sky的博客-CSDN博客


http://www.niftyadmin.cn/n/5002984.html

相关文章

淘宝天猫API技术解析,实现关键词搜索淘宝商品(商品详情接口等)批量获取,可高并发

淘宝和天猫提供了官方API接口&#xff0c;开发者可以通过这些接口获取商品信息、进行交易操作等。下面我将简要介绍如何使用淘宝API进行关键词搜索商品并批量获取商品详情。 首先&#xff0c;需要了解淘宝API的几个主要接口&#xff1a; 搜索接口&#xff1a;用于根据关键词搜…

Fragment.onStop的事情

继续承接上一篇文章----Fragment.OnPause的事情&#xff0c;我们知道onPause之后进入的是onStop生命周期方法&#xff0c;那Fragment的onStop方法又干了些什么呢&#xff1f; 还是从Activity入手&#xff0c;相应的入口代码如下&#xff1a; //FragmentActivity.java/*** Disp…

ToBeWritten之威胁狩猎

也许每个人出生的时候都以为这世界都是为他一个人而存在的&#xff0c;当他发现自己错的时候&#xff0c;他便开始长大 少走了弯路&#xff0c;也就错过了风景&#xff0c;无论如何&#xff0c;感谢经历 转移发布平台通知&#xff1a;将不再在CSDN博客发布新文章&#xff0c;敬…

【C++】反向迭代器精讲(以lIst为例)

目录 二&#xff0c;全部代码 三&#xff0c;设计思路 1. 讨论 2. 关于迭代器文档一个小细节 结语 一&#xff0c;前言 如果有小伙伴还未学习普通迭代器&#xff0c;请参考这篇文章中的普通迭代器实现。 【STL】list用法&试做_底层实现_花果山~~程序猿的博客-CSDN…

【C++】拷贝对象时,编译器的偷偷优化

你知道吗&#xff1f;对于连续的”构造拷贝构造“&#xff0c;编译器其实是会默默做出优化的。&#x1f47b; 如果你不知道这个知识点的话&#xff0c;那下面这道笔试题就要失分了&#x1f635;。 本篇分享一个关于编译器优化的小知识&#xff0c;看完本篇&#xff0c;你就能…

解决mq消费者消息接收成功,消费异常Cannot determine response destination

后台报错如下&#xff1a; Failed to send reply with payload [主题消息接收成功&#xff01; Message555]; nested exception is javax.jms.InvalidDestinationException: Cannot determine response destination: Request message does not contain reply-to destination, …

js中call、apply和bind:

文章目录 一、区别:二、案例&#xff1a;三、实现&#xff1a;【1】call实现【2】apply实现【3】bind实现 一、区别: call、apply、bind相同点&#xff1a;都是改变this的指向&#xff0c;传入的第一个参数都是绑定this的指向&#xff0c;在非严格模式中&#xff0c;如果第一个…

Cyber RT学习笔记---7、Component组件认知与实践

7、Component组件认知与实践 前言 本文是对Cyber RT的学习记录,文章可能存在不严谨、不完善、有缺漏的部分&#xff0c;还请大家多多指出。 课程地址: https://apollo.baidu.com/community/course/outline/329?activeId10200 更多还请参考: [1] Apollo星火计划学习笔记——第…