您的位置:首页 > 其它

hbase数据删除不释放region解决办法

2016-05-14 19:30 453 查看
转http://www.aboutyun.com/thread-8306-1-1.html

设置ttl,这个就需要disable表,需要丢数据,实在是没有办法了,然后设置了ttl

1:disable "table"

2:alter 'table' , {NAME=>'la',TTL=>'15768000'}

3:enable "table"

复制代码

然后日志就一直刷屏,在合并,更新。删除数据文件。

疑问:执行以上三条命令,时间差不多3分钟,就恢复了,但是后日志一直在合并,我查询了下数据,数据也正常记录,但是查询报错“region not online”,region还在合并呗。就是说影响数据就影响了几分钟,hdfs的数据在慢慢的删除,大概执行了6小时,删除了完毕,服务器恢复正常。

最严重的一个问题:

hbase不释放region,把数据删除了,region还不释放,那在分析的时候,很消耗内存。

思路:删除hdfs regionID、删除meta表的region指向.

删除hdfs

#!/bin/sh

if [ $# -lt 3 ] ; then

echo "please input 3 parameter[file_name_path、hadoop_path、input_path]"

exit

else

cat $1 | while read row

do

regionpath=`echo "$row" | awk -F '.' '{print $2}'`

table=`echo "$row" | awk -F ',' '{print $1}'`

#删除hdfs的region

if [ -z $table ] ; then

echo "table is null"

exit;

fi

if [ -z $regionpath ] ; then

echo "regionpath is null"

exit;

fi

cd $2

./hadoop fs -rmr /hbase/$table/$regionpath

#删除meta表的region

echo "deleteall '.META.','$row'">>$3

echo "$regionpath"

done

fi

复制代码

删除meta

#!/bin/sh

if [ $# -lt 2 ] ; then

echo "please input 2 parameter[hbase_path、file_path]"

exit

else

if [ -z $1 ] ; then

echo " hbase_path is null!!!"

exit

fi

if [ -z $2 ] ; then

echo " file_path is null!!!"

exit

fi

cd $1

./hbase shell< $2

fi

~

复制代码
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: