簡體   English   中英

Hbase memstore手動刷新

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM