HBase實現記錄定期定量刪除

Author:Pirate Leo

myBlog: http://blog.csdn.net/pirateleo/

myEmail: [email protected]

轉載請註明出處,謝謝。

文中可能涉及到的API:

Hadoop/HDFS:http://hadoop.apache.org/common/docs/current/api/

HBase: http://hbase.apache.org/apidocs/index.html?overview-summary.html

Begin!

HBase如何實現定期定量的刪除記錄?

使用場景分析:我們在HBase中存儲的記錄可能有一些是增速很快且又不需要永久保存的,比如大量的“系統日誌”,也許只需保存最近幾個月記錄便可。我們的存儲空間又很有限,尤其是HDFS這種多副本容災存儲。再加上HBase在存儲每一行數據時,分別要爲每一列保存一份rowKey,如果一行有10列,光rowKey就要存儲10份,開銷可想而知。因此定期定量刪除的功能也就成了普遍的需求。

一、如何定期刪除數據?

使用表格級的屬性:TTL(Time To Live),設置記錄的有效期,當前時間超過記錄有效期後該記錄將被自動刪除。記錄的有效期 = TimeStamp + TTL;

二、如何在數據超過閾值時刪除數據?

比如我們限定某張表最多佔用約1T的空間,當數據超過1T時就刪除表中最老的一部分數據。

1、在HDFS層面,獲取表格佔用空間。

通過Configuration實例創建FileSystem實例,調用Fs的getContentSummary(Path f)獲取表格目錄的ContentSummary實例,再調用getLength()便可獲得該表格的大小。

2、若表格大小超過閾值,刪除時間戳較小的一定量的記錄。

通過hbase api中scan的setTimeRange方法完成待刪除的數據篩選,然後刪之~


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