Hbase memstore手动刷新

时间:2012-12-04 14:36:56

标签: hadoop hbase hdfs

根据Hbase设计,Hbase使用memstore存储写入,最终当memstore达到大小限制时,它会将其刷新到HDFS。这个冲洗练习是在主题背后自动发生的。

在我的情况下,我想进行hdfs迁移,从一个集群迁移到另一个集群,我需要确保在我关闭源集群中的hbase进程之前没有任何内存留在内存中。无论如何,即使memstore没有达到限制,我们也可以手动强制刷新。

==问题添加==

进一步的问题:你怎么知道冲洗完成了?通过指标?

2 个答案:

答案 0 :(得分:10)

从你可以做的shell

:flush'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)

答案 1 :(得分:0)

由于您要迁移hbase整个数据库,您可能希望进行批量禁用:

disable_all '.*'

这将强制hbase清除memstore并将所有内容写入HFiles。 您还会注意到,即使在禁用之后,您仍然会在/hbase/WALs下看到一些WAL,但不要担心,这是因为hbase有一个WAL ttl,即使在冲入HFile之后也会使WAL保持一段时间。登记/> 回答你的问题“如何验证冲洗完成”:
转到Hbase UI - >地区 - >内存
你会看到Memstore Size,确保它们都是“0”。