如何刷新HBase中的表

Har*_*rry 5 java hadoop hbase bigdata hdfs

使用HBase(客户端为0.98,服务器为HBase 1.1.2),底层数据存储为HDFS.

我尝试使用以下代码刷新表,并且能够看到在Hadoop中刷新到HFile位置的数据.

            htable.put(puts);
            htable.close();
            admin.flush(tableName);
Run Code Online (Sandbox Code Playgroud)

Hadoop中的数据位置

./hadoop fs -du /hbase/data/default/tableName/ 
Run Code Online (Sandbox Code Playgroud)

当我关闭电源并重新启动节点时,重启Hadoop和HBase能够看到HDFS中的数据被破坏.

如果数据被正确刷新到HFile,为什么在电源关闭期间它会被损坏.

我是否需要对代码进行任何更改才能刷新表格?

谢谢,哈

Mic*_*ski 0

几年前我就遇到过类似的情况,那是由于同步问题造成的。我可以看到解决方案。是另一个描述,带有 put 操作的序列图。

你的情况会发生什么?也许该 put 非常小,并以内存存储结束,而不是在 HFile 中,您要在其中检查它是否“损坏”。

尝试写入 25MB 或更多 - 因为这是 hadoop 的页面大小,并且会触发所有写入。这样你就可以简单地消除其他问题。如果有效 - 那么您可以使用存储策略或只是等待更多。愚蠢的建议,但请注意,在正常系统中会有更多写入,因此无论如何都会触发对 HFile 的完整写入。另一种选择是强制它,但是您的生产可能会因写入次数过多而变差。