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
~
复制代码
设置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
~
复制代码
相关文章推荐
- 4 流程控制(if的用法)
- 【学生信息管理系统】——实时错误'3021' BOF EOF
- 第十一周学习进度条
- [leetcode]231. Power of Two
- Volley初探索
- EntityFramework Code-First 简易教程(四)-------继承策略
- Nachos-3.4 系统调用 实现Create Open Read Write Close
- 初步认识linux
- 蓄水池抽样算法
- java常用设计模式
- 基于SSH的高校网上选课系统的质量属性的实现
- 第十一周学习进度
- 一对多关联关系
- android onUserLeaveHint和onUserInteraction
- Java正则表达式实现${name}形式的字符串模板
- SSH项目中HQL语句不支持中文参数
- 第六周项目四-静态成员应用
- 快速统计正二进制数中一个个数
- 简单的表达式计算
- 2016"百度之星" - 资格赛(Astar Round1)Problem B