根據Hbase設計,Hbase使用memstore來存儲寫入,並最終在memstore達到大小限制時將其刷新到HDFS。這個沖洗練習是在主題背後自動發生的。Hbase memstore手動刷新
在我的情況下,我想做一個hdfs遷移,從一個集羣遷移到另一個集羣,我需要確保在將源集羣中的hbase進程關閉之前,內存中沒有剩餘內存。無論如何,即使存儲器尚未達到極限,我們也可以手動強制刷新。
==問題補充==
進一步的問題:你怎麼知道刷新完成?通過指標?
根據Hbase設計,Hbase使用memstore來存儲寫入,並最終在memstore達到大小限制時將其刷新到HDFS。這個沖洗練習是在主題背後自動發生的。Hbase memstore手動刷新
在我的情況下,我想做一個hdfs遷移,從一個集羣遷移到另一個集羣,我需要確保在將源集羣中的hbase進程關閉之前,內存中沒有剩餘內存。無論如何,即使存儲器尚未達到極限,我們也可以手動強制刷新。
==問題補充==
進一步的問題:你怎麼知道刷新完成?通過指標?
從shell中你可以做到:flush'tableName' 來刷新memstore。
,但如果你想通過HDFS做/ HBase的/表文件夾的備份做到這一點的方法是: - 禁用表:(從shell:禁用「表名」) - 複製文件:Hadoop的FS -cp/hbase/tableName/hbase-backup/tableName - 啓用表:(從shell:enable'tableName')
或者您可以使用CopyTable或Export工具(http://hbase.apache。 org/book/ops.backup.html)
由於您要遷移hbase整個數據庫,因此您可能需要執行批量禁用操作:
disable_all '.*'
這將強制hbase刷新內存並將所有內容寫入HFile。 您還會注意到,即使在禁用之後,您仍然會看到/hbase/WALs
下的一些WAL,但不用擔心,這是因爲hbase有一個WAL ttl,即使在衝入HFile之後,WAL也會保留一段時間。
回答你的問題「如何驗證清空完成」:
去HBase的UI - >區域 - >內存
你會看到Memstore Size
,確保它們都是「0」。
禁用表格會刷新我假設的內存。 – Shengjie
是的,對不起,禁用表「停止」整個表服務。這意味着memstore刷新,不接受表上的讀或寫,等等。 – th30z