根据Hbase设计,Hbase使用memstore存储写入,最终当memstore达到大小限制时,它会将其刷新到HDFS。这个冲洗练习是在主题背后自动发生的。
在我的情况下,我想进行hdfs迁移,从一个集群迁移到另一个集群,我需要确保在我关闭源集群中的hbase进程之前没有任何内存留在内存中。无论如何,即使memstore没有达到限制,我们也可以手动强制刷新。
==问题添加==
进一步的问题:你怎么知道冲洗完成了?通过指标?
答案 0 :(得分:10)
: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”。