备份环境上面hbase很不稳定,一起来过段时间就会挂
看了下因为region数太多了
总共大概有3万多的region,造成很多表都要下线掉,一上线就RIT.
这上面一个region大概5个T的大小,之前设计的时候估计没考虑到这个问题,而且官方推荐的region大小是10G,可是说是必踩的坑了.
如果让所有表可以都上线,那么就需要把region合并,但是手动执行太慢了,查了些资料写了个代码.
生成merge语句
#!/bin/bash
File_split=400
Master_ip=datanode-08
time=$(date "+%Y_%m_%d")
Region_Name=$1
Region_Name_File="$Region_Name"_"$time"
if [ ! -n "$1" ];then
echo "Plase input your region!"
else
echo "111"
curl http://$Master_ip:60010/table.jsp?name=$Region_Name|grep $Region_Name,|awk -F ',' '{print $NF}'|awk -F '.' '{print $2}' >region.txt
echo "222"
sed -r "s/(.*)/'\1'/g" region.txt|sed ':a;N;s/\n/,/;Ta' |sed -r "s/(.*)/merge_region \1/g" > $Region_Name_File
sed -i '$d' $Region_Name_File
rm -f region.txt
split -l $File_split $Region_Name_File spfile_$Region_Name_File.
rm -f $Region_Name_File
fi
自动循环执行merge语句
#!/bin/bash
if [ $# -ne 1 ];then
echo error.....
exit 11
fi
IFS_old=$IFS
IFS=$'\n'
file=$1
for i in `cat $file`;do
echo -e $i
echo "--------------------"
echo -e $i |hbase shell
done
IFS=$IFS_old
region慢慢就被合并删除了了