如何对HDFS进行节点内(磁盘间)数据平衡

1.文档编写目的


当HDFS的DataNode节点挂载多个磁盘时,往往会出现两种数据不均衡的情况:

1.不同DataNode节点间数据不均衡;

2.挂载数据盘的磁盘间数据不均衡。

特别是这种情况:当DataNode原来是挂载了几个数据盘,当磁盘占用率很高之后,再挂载新的数据盘。由于Hadoop 2.x 版本并不支持HDFS的磁盘间数据均衡,因此,会造成老数据磁盘占用率很高,新挂载的数据盘几乎很空。在这种情况下,挂载新的数据盘就失去了扩容HDFS数据盘的意义。

如果想要解决节点内多块磁盘数据不均衡的现象,就要借助DiskBalancer。在CDH5.8.2+版本中,可以通过在CM中配置进行开启,但属于实验室功能。在CDP7中,因为是Hadoop3,默认就支持磁盘间数据均衡,本文档主要介绍在CDP中如何进行HDFS磁盘扩容并在节点内进行Balancer。

  • 测试环境:

1.Redhat7.6

2.采用root用户操作

3.CM版本为7.3.1

4.CDH版本为 7.1.6


2.HDFS磁盘扩容


1.登陆CM界面查看数据目录情况

如何对HDFS进行节点内(磁盘间)数据平衡


2.登陆所有DataNode节点查看磁盘是否挂载正常

lsblk
df -hl

如何对HDFS进行节点内(磁盘间)数据平衡

3.在CM界面添加新挂载的目录,并保存配置

如何对HDFS进行节点内(磁盘间)数据平衡

4.刷新过期配置

如何对HDFS进行节点内(磁盘间)数据平衡

5.点击刷新集群

如何对HDFS进行节点内(磁盘间)数据平衡

6.刷新完成,此操作不会重启集群

如何对HDFS进行节点内(磁盘间)数据平衡

7.查看HDFS容量是否增加

如何对HDFS进行节点内(磁盘间)数据平衡

8.登陆DataNode节点查看是否创建该目录生成文件

如何对HDFS进行节点内(磁盘间)数据平衡

3.节点内Balancer


1.登陆CM界面,进入HDFS点击配置,搜索“hdfs-site.xml”添加以下内容后并重启HDFS服务

dfs.disk.balancer.enabled=true

如何对HDFS进行节点内(磁盘间)数据平衡

2.使用系统的hdfs.keytab进行认证,一般在/var/run/cloudera-scm-agent/process/1952-hdfs-JOURNALNODE  目录下等,或者自己生成

kinit -kt hdfs.keytab hdfs/c1.liuhao.com
klist

如何对HDFS进行节点内(磁盘间)数据平衡

3.典型的磁盘平衡器任务涉及三个步骤(通过HDFS的diskbalancer 命令):plan, execute 和 query。第一步,HDFS客户端从NameNode上读取指定DataNode的的必要信息以生成执行计划:

如何对HDFS进行节点内(磁盘间)数据平衡

磁盘平衡执行计划生成的文件内容格式是Json的,并且存储在HDFS之上。在默认情况下,这些文件是存储在 /system/diskbalancer 目录下面。


4.可以通过下面的命令在DataNode上执行这个生成的计划:

hdfs diskbalancer -execute /system/diskbalancer/2021-Oct-20-21-42-55/c1.liuhao.com.plan.json

如何对HDFS进行节点内(磁盘间)数据平衡

5.以上命令将JSON里面的计划提交给DataNode,而DataNode会启动一个名为BlockMover的线程中执行这个计划。我们可以使用 query 命令来查询DataNode上diskbalancer任务的状态:

hdfs diskbalancer -query c1.liuhao.com

如何对HDFS进行节点内(磁盘间)数据平衡

如何对HDFS进行节点内(磁盘间)数据平衡

上面结果输出的PLAN_DONE表示disk-balancing task已经执行完成。为了验证磁盘平衡器的有效性,我们可以使用df -h 命令来查看各个磁盘的空间使用率:


Balancer前:

如何对HDFS进行节点内(磁盘间)数据平衡

Balancer后

如何对HDFS进行节点内(磁盘间)数据平衡

6.如果集群节点磁盘不均衡,可以在CM界面打开重新均衡

如何对HDFS进行节点内(磁盘间)数据平衡

4.总结


1.HDFS磁盘扩容首先需要检查磁盘是否单独挂载数据盘,不能和系统盘共用。

2.节点内Balancer需要使用系统hdfs.keytab才能执行成功。

3.典型的磁盘平衡器任务涉及三个步骤(通过HDFS的diskbalancer 命令):plan, execute 和 query。

4.如果想扩容的节点都平衡,需要每台DataNode节点都按照第三章做一遍。


0 0 投票数
文章评分

本文转载自Hadoop实操,原文链接:。

(0)
上一篇 2022-07-13 21:50
下一篇 2022-07-14 22:54

相关推荐

订阅评论
提醒
guest

0 评论
内联反馈
查看所有评论
0
希望看到您的想法,请您发表评论x