繁体   English   中英

如何在HBase中刷新表

[英]How to flush the table in HBase

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

我需要对刷新表的代码进行任何更改吗?

谢谢哈

几年前我得到了类似的东西,那是由于同步问题 我可以看到解决方案。 是另一个描述,带有放置操作的时序图。

您的情况如何? 放置的内容可能很小,并且以内存存储结尾,而不是在您要检查其是否损坏的HFile中。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM