如何在hbase中刷新表

qltillow  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(597)

我使用hbase(客户端为0.98,服务器为hbase 1.1.2),底层数据存储为hdfs。
我尝试使用以下代码刷新表,并且能够在hadoop中看到刷新到hfile位置的数据。

htable.put(puts);
            htable.close();
            admin.flush(tableName);

hadoop中的数据定位

./hadoop fs -du /hbase/data/default/tableName/

当我关闭电源并重新启动节点时,重启hadoop和hbase就可以看到hdfs中损坏的数据。
如果数据被正确地刷新到hfile,那么为什么它在关机时会被损坏。
我需要对刷新表的代码进行任何更改吗?
谢谢,哈尔

t5fffqht

t5fffqht1#

我几年前就得到了这样的东西,那是因为同步问题。我能看到解决办法。下面是另一个描述,带有put操作的序列图。
你的情况如何?可能这个put非常小,并且在内存存储中结束,而不是在hfile中,在hfile中您要检查它是否“损坏”。
尝试写25mb或更多—因为这是hadoop的页面大小,这会触发所有写入。这样你就可以简单地消除其他问题。如果这是可行的,那么您可以使用存储策略或只是等待更多时间。愚蠢的建议,但请注意,在正常的系统将有更多的写入,所以完全写入到hfile将触发无论如何。另一种选择是强制执行,但是您的产品可能会因为写入太多而出问题。

相关问题