hbase major compact脚本

不同版本的hbase,list命令打印出来的东西不同,脚本要根据版本修改的,别傻乎乎的拿去就用,本人已经踩过坑了

注意对于自动balance来说, 只需要关注三个命令:

balance_switch false #关闭自动
balance balancer_enabled #查看自动balance当前状态,
切记不要使用balance_switch status(返回的是之前的状态) 命令造成误导 balance_switch true #开启自动balance

注意大合并很消耗资源,启动时要挑选集群闲暇时间

针对hbase1.x的
#!/bin/bash
time_start=`date "+%Y-%m-%d %H:%M:%S"`
echo "开始进行HBase的大合并.时间:${time_start}"

str=`echo list | hbase shell | sed -n '$p'`
#str="a,b,c"
str=${str//,/ }
arr=($str)
length=${#arr[@]}
current=1
echo "HBase中总共有${length}张表需要合并."
echo "balance_switch false" | hbase shell | > /dev/null
echo "HBase的负载均衡已经关闭"

for each in ${arr[*]}
do
        table=`echo $each | sed 's/]//g' | sed 's/\[//g'`
        echo "开始合并第${current}/${length}张表,表的名称为:${table}"
        echo "major_compact ${table}" | hbase shell | > /dev/null
        let current=current+1
done

echo "balance_switch true" | hbase shell | > /dev/null
echo "HBase的负载均衡已经打开."

time_end=`date "+%Y-%m-%d %H:%M:%S"`
echo "HBase的大合并完成.时间:${time_end}"
duration=$($(date +%s -d "$finish_time")-$(date +%s -d "$start_time"))
echo "耗时:${duration}s"

针对hbase2.x的 (ps:我们hbase2.3.5,下面的我测过了正常使用)
#!/bin/bash
time_start=`date "+%Y-%m-%d %H:%M:%S"`
echo "开始进行HBase的大合并.时间:${time_start}"
str=`echo list | hbase shell |grep -v ^$ |tail -1`
#str="a,b,c"
echo "${str}"
str=${str//,/ }
arr=($str)
length=${#arr[@]}
current=1
echo "HBase中总共有${length}张表需要合并."
echo "balance_switch false" | hbase shell
echo "HBase的负载均衡已经关闭"
for each in ${arr[*]}
do
 table=`echo $each | sed 's/]//g' | sed 's/\[//g' | sed 's/"//g'`
 echo "开始合并第${current}/${length}张表,表的名称为:${table}"
 echo "major_compact '${table}'"| hbase shell
 #echo "major_compact '${table}'" | hbase shell | > /dev/null
 let current=current+1
done
echo "balance_switch true" | hbase shell
echo "HBase的负载均衡已经打开."
time_end=`date "+%Y-%m-%d %H:%M:%S"`
echo "HBase的大合并完成.时间:${time_end}"
duration=$($(date +%s -d "$finish_time")-$(date +%s -d "$start_time"))
echo "耗时:${duration}s"

定时 1,crontab

crontab -e
00 03 * * 0 bash /opt/hbase-1.2.0/major_compact.sh >> /opt/hbase-1.2.0/major_compact.log
#每周日 0点30执行合并

定时 2,上小海豚

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值