2017-01-11 89 views
5

我使用基础数据存储区中的HBase(0.98,服务器客户端为HBase 1.1.2)作为HDFS。如何刷新HBase中的表

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

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

当我做电源关闭并重新启动节点

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

数据位置,重新启动Hadoop和HBase的我能看到的数据中得到了HDFS损坏。

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

我是否需要对代码进行任何更改以清空表格?

感谢, 喀拉

+0

有几个问题:1.这是集群还是单节点安装? 2.在关闭机器之前,您是否优雅地关闭了namenode服务? 3.您如何知道数据已损坏? – Venkat

回答

0

我有类似的东西,几年前,这是由于sync problem。我可以看到解决方案。 Here是另一种描述,用于put操作的序列图。

你的情况会怎样?也许这个放置非常小,并且以内存存储结束,而不是在HFile中,在那里你正在检查它是否被“损坏”或不是。

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