转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 ~
复制代码