hbase資料刪除不釋放region解決辦法
阿新 • • 發佈:2018-12-31
轉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
- ~