恢复如何在 HBase 中工作

Posted

技术标签:

【中文标题】恢复如何在 HBase 中工作【英文标题】:How Recovery works in HBase 【发布时间】:2013-03-18 05:09:31 【问题描述】:

我想实际观察 HBase 中的恢复是如何工作的,我使用了以下 sn-p 代码

    Put p=new Put(Bytes.toBytes("name10"));
    p.setWriteAheadLog(true);
    p.add(Bytes.toBytes("cf"), Bytes.toBytes("name"),Bytes.toBytes("Some Value 10"));
    table.setAutoFlush(true);
    table.put(p);

执行上述代码后,我重新启动了我的 VM (不停止 HBase) 并启动了 HBase,当我扫描此表时,Rowkey name10 没有出现。而当我正确停止 HBase 实例并重新启动 VM 时,它显示完美(因为 HBase 从 MemStore 将数据推送到 HBase 表中)。 虽然,我的 WAL 已启用,但它无法恢复。我的理解有什么不对吗? WAL 文件将存储在哪里?我在本地文件系统上使用 HBase 而不是 HDFS....我在哪里可以检查 WAL 文件?

【问题讨论】:

【参考方案1】:

试试这个:

将数据放入表中后。 从 hbase shell 运行“flush tablename”。 然后检查

【讨论】:

感谢您的回复......“flush tablename”工作正常......因为,“flush tablename”类似于正确关闭 HBase......我想检查 WAL 的恢复情况,如果我们不会正确刷新或停止 HBase...您知道日志文件将存储在本地文件系统中的什么位置以及如何读取它们吗? 希望存放在 hbase.rootdir/.logs 目录下。 hbase.rootdir 是你在 hbase-site.xml 中配置的目录 它们是什么类型的文件? 对于每个表都有一个相应的文件包含 -> 列族 -> 内部包含另外两个文件...对于这些文件没有扩展名...我试图在十六进制编辑器中打开它它没有显示任何信息..在属性中它显示 1kb 大小 我在 HDFS 上运行 HBase。我通过 hadoop UI 浏览了文件系统,我可以在那里读取日志文件的内容【参考方案2】:

WAL 文件存储在 .logs 文件夹中(隐藏)。在独立模式下,写入 WAL 需要时间,而在伪分布式模式下,它可以正常工作

【讨论】:

以上是关于恢复如何在 HBase 中工作的主要内容,如果未能解决你的问题,请参考以下文章

如何让别名在所有 shell 中工作?

如何解决 Http 401 错误,但在邮递员中工作,而不是在 xamarin 表单中工作

%符号如何在javascript中工作[重复]

如何使 PFQueryTableView 在 UIViewController 中工作

如何使用 ImagePicker 获取图像名称?我得到了图像名称,但它只在模拟器中工作,而不是在实际设备中工作

$packageName.$activityClass 如何在布局 XML 文件中工作?