hbase數據刪除不釋放region解決辦法


轉http://www.aboutyun.com/thread-8306-1-1.html


設置ttl,這個就需要disable表,需要丟數據,實在是沒有辦法了,然後設置了ttl


  1. 1:disable "table"  
  2. 2:alter 'table' , {NAME=>'la',TTL=>'15768000'}   
  3. 3:enable "table"  
複製代碼

然後日誌就一直刷屏,在合併,更新。刪除數據文件。
疑問:執行以上三條命令,時間差不多3分鐘,就恢復了,但是後日志一直在合併,我查詢了下數據,數據也正常記錄,但是查詢報錯“region not online”,region還在合併唄。就是說影響數據就影響了幾分鐘,hdfs的數據在慢慢的刪除,大概執行了6小時,刪除了完畢,服務器恢復正常。


最嚴重的一個問題:
       hbase不釋放region,把數據刪除了,region還不釋放,那在分析的時候,很消耗內存。
       思路:刪除hdfs regionID、刪除meta表的region指向.

刪除hdfs 


  1. #!/bin/sh  
  2. if [ $# -lt 3 ] ; then  
  3.     echo "please input 3 parameter[file_name_path、hadoop_path、input_path]"  
  4.     exit  
  5. else  
  6.     cat $1 | while read row  
  7.     do  
  8.         regionpath=`echo "$row" | awk -F '.' '{print $2}'`  
  9.         table=`echo "$row" | awk -F ',' '{print $1}'`  
  10.         #刪除hdfs的region  
  11.         if [ -z $table ] ; then  
  12.            echo "table is null"  
  13.            exit;  
  14.         fi  
  15.   
  16.         if [ -z $regionpath ] ; then  
  17.            echo "regionpath is null"  
  18.            exit;  
  19.         fi  
  20.   
  21.         cd $2  
  22.         ./hadoop fs -rmr  /hbase/$table/$regionpath  
  23.         #刪除meta表的region  
  24.         echo "deleteall '.META.','$row'">>$3  
  25.         echo "$regionpath"  
  26.     done  
  27. fi  
複製代碼

刪除meta

  1. #!/bin/sh  
  2. if [ $# -lt 2 ] ; then  
  3.     echo "please input 2 parameter[hbase_path、file_path]"  
  4.     exit  
  5. else  
  6.     if [ -z $1 ] ; then  
  7.         echo " hbase_path is null!!!"  
  8.         exit  
  9.     fi  
  10.   
  11.     if [ -z $2 ] ; then  
  12.         echo " file_path is null!!!"  
  13.         exit  
  14.     fi  
  15.     cd $1  
  16.     ./hbase shell< $2  
  17. fi  
  18. ~                  
複製代碼






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章