HDFS-REBALANCE一次生产环境下的优化

HDFS-REBALANCE一次生产环境下的优化

不知道balance是什么的小伙伴可以先查一下rebalance,假设你已经知道了rebalance的相关过程。
集群配置信息:集群节点配置,共配置18台节点,三台配置为6T,十五台配置为28T,三台低配置电脑为同一机架
问题现象:
1.rebalance任务执行缓慢,移动数据量小
2.任务执行rpc时间边长,延迟高
3.在同步部分数据后,未达到设定的平衡值就退出了rebalance
4.日志报错提示多,报错线程数不够后,会导致datanode休眠10s
问题原因:
1.三台节点磁盘的大小,远小于其余节点,导致负载率不一致
2.未调整rebalance的相关参数,导致任务的线程数与移动的数据量太小
3.机架的设置不均匀,三台小内存的节点位于同一机架,导致数据存放在该机架时,无法找到合适的大节点进行存储,因为机架原因,导致部分块没办法分发出去
问题解决方式:
1.增大配置参数,观察重新负载的速度
修改配置文件 hdfs-site.xml
dfs.datanode.balance.max.concurrent.moves=100
dfs.balancer.max-size-to-move=21474836480
dfs.balancer.moverThreads=1300
dfs.balabcer.getBlocks.size=4294967296
dfs.datanode.balance.bandwidthPerSec=20971520
以上参数需要重启hdfs,设置用于rebalance的带宽参数可以动态指定,不需要进行重启操作
可以通过修改参数或者指定的方式
-setBalancerBandwidth
2.修改机架信息,将低配置的三个节点修改到不同的机架当中
关于机架对hdfs-rebalance的影响:
1.在执行数据重新分布的过程中,必须保障数据不能出现丢失,不能改变数据的备份数,不能改变每一个rack中所具备的block数
我的分析是我们的集群三台小的节点在同一机架,根据这条原则,一部分块在该机架没有办法分发到别的机架,而同机架中都是小的容量节点,也导致了三台负载很高。
2.系统管理员可以通过一条命令启动或者停止数据重分布程序
如果使用azkaban执行rebalance脚本,使用azkaban停止任务只会结束调度,具体进程需要杀掉
3.Block在移动过程中,不能占有过多的资源,如网络带宽等,因为这些资源也会影响到正常的业务相关的任务
关于rebalance没有达到平衡值就退出,存在的可能性:
1.整个集群已经平衡
2.在计算后,得出已经没有可以被移动的块
这也是我们没有达到平衡就退出的原因,机架问题
3.在连续五次的迭代中,没有块被移动
4.当datanode和namenode进行通信的时候,发生了IO异常
5.已经存在了rebalance操作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值