Hadoop Hbase memstore手动刷新

Hadoop Hbase memstore手动刷新,hadoop,hbase,hdfs,Hadoop,Hbase,Hdfs,根据Hbase的设计,Hbase使用memstore存储写操作,最终当memstore达到大小限制时,它会将其刷新到HDFS。这个刷新练习是在主题后面自动进行的 在我的例子中,我想做一个hdfs迁移,从一个集群迁移到另一个集群,在关闭源集群中的hbase进程之前,我需要确保内存中没有任何内容。不管怎样,我们可以手动强制刷新,即使memstore没有达到限制 ==已添加问题== 进一步的问题:您如何知道刷新已完成?通过metrics?从shell中,您只需执行以下操作:刷新“tableName”

根据Hbase的设计,Hbase使用memstore存储写操作,最终当memstore达到大小限制时,它会将其刷新到HDFS。这个刷新练习是在主题后面自动进行的

在我的例子中,我想做一个hdfs迁移,从一个集群迁移到另一个集群,在关闭源集群中的hbase进程之前,我需要确保内存中没有任何内容。不管怎样,我们可以手动强制刷新,即使memstore没有达到限制

==已添加问题==


进一步的问题:您如何知道刷新已完成?通过metrics?

从shell中,您只需执行以下操作:刷新“tableName” 刷新内存存储

但是,如果您想通过hdfs备份/hbase/table文件夹,方法是: -禁用表:(从shell中:禁用“tableName”) -复制文件:hadoop fs-cp/hbase/tableName/hbase backup/tableName -启用表:(从shell中:启用“tableName”)


也可以使用CopyTable或导出工具(http://hbase.apache.org/book/ops.backup.html)

由于要将hbase迁移到整个数据库,您可能需要执行批禁用操作:

disable_all '.*'
这将迫使hbase清除memstore并将所有内容写入HFiles。 您还将注意到,即使在禁用之后,您仍然会在
/hbase/WALs
下看到一些WAL,但不要担心,这是因为hbase有一个WAL ttl,即使在刷新到HFiles之后,它也会将WAL保留一段时间。
要回答您的问题“如何验证刷新是否完成”:
转到Hbase用户界面->区域->内存

您将看到
Memstore Size
,确保它们都是“0”s.

禁用该表将刷新内存。是的,很抱歉,禁用表“停止”要提供的整个表。这意味着memstore刷新、不接受对表的读写操作等等。