hdfs节点间balance操作

  运维必备技能
内容纲要

概要描述


使用介绍


1. 进入namenode pod

[root@kv1~]# kubectl get po -owide | grep namenode
hadoop-hdfs-namenode-hdfs1-558cb56c4f-b7zvt                 2/2     Running            12         8d      172.22.23.3   kv3               
hadoop-hdfs-namenode-hdfs1-558cb56c4f-wt299                 2/2     Running            12         11d     172.22.23.2   kv2               
[root@kv1~]# kubectl exec -it hadoop-hdfs-namenode-hdfs1-558cb56c4f-wt299 bash

2. 执行kinit认证

[root@kv2 ~]# klist -ket /etc/hdfs1/conf/hdfs.keytab |grep hdfs
Keytab name: FILE:/etc/hdfs1/conf/hdfs.keytab
   0 08/28/2024 21:21:55 hdfs/kv2@KTDH (aes128-cts-hmac-sha1-96) 
   0 08/28/2024 21:21:55 hdfs/kv2@KTDH (aes256-cts-hmac-sha1-96) 
   0 08/28/2024 21:21:55 hdfs/kv2@KTDH (DEPRECATED:des3-hmac-sha1) 
   0 08/28/2024 21:21:55 hdfs/kv2@KTDH (DEPRECATED:des-cbc-md5) 
   0 08/28/2024 21:21:55 hdfs/kv2@KTDH (DEPRECATED:arcfour-hmac) 
[root@kv2 ~]# kinit -kt /etc/hdfs1/conf/hdfs.keytab hdfs/kv2@KTDH

3. 设置带宽

[root@kv2 ~]# hdfs dfsadmin -setBalancerBandwidth 50000000
2024-11-11 13:50:25,441 INFO util.KerberosUtil: Using principal pattern: HTTP/_HOST

4. 进行balance操作

有两种方式,

第一种是整体进行balance

#方法一:整体进行balance
nohup hdfs balancer -threshold 2 > balancer_20230927.log 2>&1 &

另外一种是只针对高水位和低水位 进行balance,下面使用这种方式操作

相较于整体balance,这种姿势针对性强,能够快速解决特定节点的数据不均衡问题;对集群整体性能影响较小,由于只涉及少数节点的数据移动,因此对集群整体性能的影响较小。

[root@kv2 ~]# echo $(hdfs dfsadmin -report | grep -E '^Name:|^DFS Used%' | awk -F':' '{print $2}' | sed 1d | awk '{print $1}')
2024-11-11 14:01:58,205 INFO util.KerberosUtil: Using principal pattern: HTTP/_HOST
172.22.23.1 46.72% 172.22.23.2 35.25% 172.22.23.3 41.22% 172.22.23.4 40.86%

# 从上面结果可以获取到高水位节点172.22.23.1 使用率46.72%,低水位节点172.22.23.2 使用率35.25%。 我们将这两个节点加入到 -include -f 指定的文件里面去,该参数表示:只允许该部分ip参与balance。
[root@kv2 ~]# vim /tmp/include.txt
[root@kv2 ~]# cat /tmp/include.txt 
172.22.23.1
172.22.23.2
[root@kv2 ~]# nohup hdfs balancer -threshold 2 -include -f /tmp/include.txt > balancer_20241111.log 2>&1 &
[1] 1602

验证是否成功:

file

[root@kv2 ~]# echo $(hdfs dfsadmin -report | grep -E '^Name:|^DFS Used%' | awk -F':' '{print $2}' | sed 1d | awk '{print $1}')
2024-11-11 14:06:14,459 INFO util.KerberosUtil: Using principal pattern: HTTP/_HOST
172.22.23.1 42.13% 172.22.23.2 39.85% 172.22.23.3 41.22% 172.22.23.4 40.86%

这篇文章对您有帮助吗?

平均评分 0 / 5. 次数: 0

尚无评价,您可以第一个评哦!

非常抱歉,这篇文章对您没有帮助.

烦请您告诉我们您的建议与意见,以便我们改进,谢谢您。