HBase | oldWALs目錄文件劇增佔用磁盤空間問題

出現問題原因:

當/hbase/WALs中的HLog文件被持久化到存儲文件中,且這些Hlog日誌文件不再被需要時,就會被轉移到{hbase.rootdir}/oldWALs目錄下,該目錄由HMaster上的定時任務負責定期清理。

HMaster在做定期清理的時候首先會檢查zookeeper中/hbase/replication/rs下是否有對應的複製文件,如果有就放棄清理,如果沒有就清理對應的hlog。在手動清理oldWALs目錄數據的同時,如果沒有刪除對應的znode數據,就會導致HMaster不會自動清理oldWALs。

解決方案:

1、進入Zookeeper目錄下刪除有關節點

 

2、確保hbase-site.xml中的有添加屬性hbase.replication=false和屬性hbase.backup.enable=false,如果是true就改成false即可,然後重啓整個hbase集羣。

<property>
    <name>hbase.replication</name>
    <value>false</value>
</property>

<property>
    <name>hbase.backup.enable</name>
    <value>false</value>
</property>

3、接下來可以看到oldWALs目錄下佔用空間已經被逐漸清理爲空。

 


再來記錄學習下HBase啓動命令

 

單獨啓動 | 停止一個HMaster進程:

bin/hbase-daemon.sh start | stop master

單獨啓動 | 停止 一個HRegionServer進程:

bin/hbase-daemon.sh start | stop  regionserver


再記錄學習下HBase中一些相關的目錄結構:


hbase.rootdir
根目錄,在hbase-site.xml文件中配置;

/hbase/WALs
被HLog實例管理的WAL文件;

/hbase/WALs/a12,16020,1582597804834
對於每個HregionServer,日誌目錄中都包含一個對應的子目錄;

/hbase/WALs/a12,16020,1582597804834/a12%2C16020%2C1582597804834.1582602694764
因爲日誌滾動,在每個子目錄下可能有多個HLog文件;

/hbase/oldWALs
當/hbase/WALs 中的HLog文件被持久化到存儲文件中,不再需要日誌文件時,它們會被移動到/hbase/oldWALs目錄;

/hbase/oldWALs/a12%2C16020%2C1582597804834.1582602694764
具體的oldWALs文件;

/hbase/hbase.id
集羣的唯一ID;

/hbase/hbase.version
集羣的文件格式版本信息;

/hbase/corrupt
損壞的日誌文件,一般爲空;

/hbase/archive/
存儲表的歸檔和快照,HBase 在做 Split或者 compact 操作完成之後,會將 HFile 移到archive 目錄中,然後將之前的 hfile 刪除掉,該目錄由 HMaster 上的一個定時任務定期去清理。

存儲表的歸檔和快照具體目錄:
/hbase/archive/data/default/表名/region名/列簇名/具體文件名

/hbase/.tmp
當對錶做創建或者刪除操作的時候,會將表move 到該 tmp 目錄下,然後再去做處理操作;

/hbase/data
hbase存儲數據的核心目錄; 

/hbase/data目錄下含有兩個命名空間default和hbase,其中default是默認命名空間,如果創建的表未指定命名空間,將存放在該命名空間下,habse是系統命名空間,
他們分別對應default和hbase目錄,其中剛開始default目錄爲空,而hbase目錄結構如下:
/hbase/data/hbase/meta
/hbase/data/hbase/namespace
namespace 中存儲了 HBase 中的所有 namespace 信息,包括預置的hbase 和 default。


/hbase/data/default/
該目錄存儲所有用戶數據表,如/hbase/data/default/表名


/hbase/data/default/表名/.tabledesc
表的元數據信息;

/hbase/data/default/表名/.tmp
中間臨時數據,當.tableinfo被更新時該目錄就會被用到

/hbase/data/default/表名/f569a17359edb2250cdf07964be606a7(由region的表名+Start Key+時間戳產生的hashcode)
表中每一個region的目錄

region 目錄

/hbase/data/default/表名/region名/.regioninfo
包含了對應region的HRegionInfo的序列化信息,類似.tableinfo。hbase hbck 工具可以用它來生成丟失的表條目元數據

/hbase/data/default/表名/region名/列族名
每個列族的所有實際數據文件

/hbase/data/default/表名/region名/列族名/文件名
hbase實際數據文件

/hbase/data/default/表名/region名/.tmp(按需創建)
存儲臨時文件,比如某個合併產生的重新寫回的文件。

 

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