您的位置 首页 大数据运维

多个 datanode 节点存储不足案例

多个 datanode 节点存储不足案例

1.案例
2019 年 4 月 26 日下午,yz-4m1-02 集群的多个 datanode 可用空间不足,并引发 CM 页面告警。

HDFS 页面显示所有 datanode 存储的标准差已达 11%(正常情况下是 5%)

 

2.解决方案

运行 Hadoop 自带的 balancer 程序,平衡 HDFS 中的各节点间的差距。在任意节点都可以启动 balancer,但是建议选择空闲(内存占用低)的节点。

3.执行 balancer

①在内存占用较低的 zchadoop002-1 上启动 balancer 脚本,将 HDFS 中所有节点的存储值中的最低值和平均值的差值设置为 5。

命令:start-balancer.sh -threshold 5

 

 

启动 balancer 后,在屏幕输出了 balancer 的日志路径

②设置 balancer 所能占用的带宽

带宽的大小与负载均衡的速度成正比,但是速度过大可能会导致map/reduce 运行缓慢,所以务必选择业务空闲时间段启动 balancer。默认的带宽为 1048576(1M/S)。由于 balancer 可以在中断后重新执行(类似于迅雷的断点续传),所以可以先设置一个较低的带宽,慢了的话,再一次次加速。
此处设置为 2M/S。需要强调的是,balancer 每次设置的带宽是临时性的,第二次启动 balancer 时,要重新设置带宽。

命令:hdfs dfsadmin -setBalancerBandwidth 2000000

 

③查看进程

balancer 是一个 java 程序,可 jps 查看。

 

④查看 Balancer 的进展
除了通过 HDFS 页面中的存储变化来间接反映 balancer 的进展外,还可以通过日志来量化其进展。

命令:more   /opt/boh-2.0.0/logs/hadoop/hadoop-hadoop-balancer-zchadoop002- 1.out

可以看到每次迁移中的待迁移数据 Bytes Left To Move 都在减少,说明balancer 在起作用。但为什么已完成的迁移量 Bytes Already Moved 一直是0 字节,还没搞清楚。

4.定时执行 balancer

因为 balancer 的速度由多方因素影响,我们不能保证当天的 balancer 在当天就能完成。又考虑到 balancer 有类似迅雷的“断点续传”特点,而且带宽在 balancer 中断后会失效,所以在每天的定时计划中的顺序是“停止昨天的 balancer→设置带宽(非必须)→启动今天的 balancer”。balancer 的运行时间段应当避开主机繁忙期。

下图以 yz-4m1-01 集群的定时计划为例。

欢迎来撩 : 汇总all

白眉大叔

关于白眉大叔linux云计算: 白眉大叔

热门文章