hdfs du -sk 导致机器load高

hdfs 会定期(默认10分钟)使用 du -sk 命令统计BP的大小,在大硬盘机器上该操作耗时将会很长(可能超过10分钟)。这会导致 iowait 以及 load的提升。

例如:
ps -ef | grep 'du -sk'

iostat -x -d

社区为了解决这个问题,主要在两个方面进行了改造:
https://issues.apache.org/jira/browse/HADOOP-9884

  1. 使用 df 命令替换 du
  2. 允许用户自定义检查间隔时间

问题虽然被解决了,不过低于hadoop2.8的版本需要升级或者打patch的方式进行优化,较为麻烦。

不过也有一些临时的方案,比如说捕获到hdfs调用的 du -sk 命令,使用 df -k 进行替换。

tip: 这个方法的前提是每个BP目录单独位于一个磁盘上。

du 脚本,对正常的du命令不进行修改

mv /usr/bin/du /usr/bin/du_bak
vim /usr/bin/du

#!/bin/sh
if [[ $2 == */current/BP-* ]] && [ $1 == -sk ]
then
    used=`df -k $2 | grep -vE 'Used|可用' | awk '{print $3}'`
    echo -e "$used\t$2"
else
    echo -e "$(du_bak $@)"
fi

chmod +x /usr/bin/du

红框为某机器替换后的du命令的效果,1图黄色部分为iowait比例:

cpu util

load

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值