gpt4 book ai didi

hadoop - 在HBase中恢复

转载 作者:行者123 更新时间:2023-12-02 21:55:09 24 4
gpt4 key购买 nike

HBase支持单行原子事务。
用于实际检查。我写了下面的代码

    Increment inc=new Increment();//For writing it to WAL
inc.getWritetoWAL();
Put p = new Put(Bytes.toBytes("name10"));
p.add(Bytes.toBytes("cf"), Bytes.toBytes("name"),Bytes.toBytes("Some Value 10"));
table.setAutoFlush(false);
table.put(p);
table.close();

为了检查恢复,我在执行(在Eclipse中调试) 表后立即停止了hbase。当我重新启动hbase时,放了(p),新的行没有在表中更新。根据HBase中的文档,一旦将其写入memstore(cache),就可以恢复,尽管会发生崩溃,但是尽管已启用WAL,但这里无法恢复.....
我的理解有什么错误.....
预先感谢您的回复.....

最佳答案

上面的代码发生的事情是,客户端永远不会将put提交到服务器,因此HBase永远不会将其写入WAL,这样它就无法恢复...

您在看跌期权上方的行中有table.setAutoFlush(false)。如果您check out the documentation它说:

"When performing a lot of Puts, make sure that setAutoFlush is set to false on your HTable instance. Otherwise, the Puts will be sent one at a time to the RegionServer. Puts added via htable.add(Put) and htable.add( Put) wind up in the same write buffer. If autoFlush = false, these messages are not sent until the write-buffer is filled. To explicitly flush the messages, call flushCommits. Calling close on the HTable instance will invoke flushCommits."



因此,在这种情况下,通常将AutoFlush设置为false会很好,这意味着该看跌期权尚未发送到服务器。

关于hadoop - 在HBase中恢复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15427857/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com