如何刷新HBase中的表

时间:2017-01-11 15:33:06

标签: java hadoop hbase hdfs bigdata

使用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,为什么在电源关闭期间它会被损坏。

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

谢谢, HAR

1 个答案:

答案 0 :(得分:0)

几年前我得到的东西就是sync problem。我可以看到解决方案。 Here是另一种描述,带有put操作的序列图。

你的情况会怎样?也许那个put非常小,并且以内存存储结束,而不是在HFile中,在那里你要查看它是否已损坏"或不是。

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