[英]Hbase memstore manual flush
根據Hbase設計,Hbase使用memstore存儲寫入,最終當memstore達到大小限制時,它會將其刷新到HDFS。 這個沖洗練習是在主題背后自動發生的。
在我的情況下,我想進行hdfs遷移,從一個集群遷移到另一個集群,我需要確保在我在源集群中關閉hbase進程之前沒有任何內存留在內存中。 無論如何我們可以手動強制刷新即使memstore沒有達到限制。
==問題添加==
進一步的問題:你怎么知道沖洗完成了? 通過指標?
你可以從shell中做到:刷新'tableName'來刷新memstore。
但是如果你想通過hdfs備份/ hbase / table文件夾,那么這樣做的方法是: - 禁用表:(來自shell:禁用'tableName') - 復制文件:hadoop fs -cp / hbase / tableName / hbase-backup / tableName - 啟用表:(來自shell:enable'tableName')
或者您可以使用CopyTable或導出工具(http://hbase.apache.org/book/ops.backup.html)
因為您要遷移hbase整個數據庫,所以您可能希望進行批量禁用:
disable_all '.*'
這將強制hbase清除memstore並將所有內容寫入HFiles。 您還會注意到,即使在禁用之后,您仍會在/hbase/WALs
WALs下看到一些WAL,但不要擔心,這是因為hbase有一個WAL ttl,即使在沖入HFile之后也能保持WALs一段時間。
回答你的問題“如何驗證沖洗完成”:
轉到Hbase UI - > Regions - > Memory
你會看到Memstore Size
,確保它們都是“0”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.