只有在MapReduce作业完成后,TableReducerJob中添加的HBase行才可用吗?

时间:2011-12-09 01:14:32

标签: mapreduce hbase

我目前正在运行一个长MapReduce个作业,其TableReducer正在写入HBase表。我在同一张桌子上有另一个独立程序扫描。 MapReduce作业已完成87%+,但我在扫描程序中看不到表中的任何新行。

只有在整个MapReduce作业完成后,MapReduce作业添加的行才可见吗?

2 个答案:

答案 0 :(得分:0)

TableOutputFormat通过调用table.setAutoFlush(false)启用客户端缓冲机制。当作业完成时,table.flushCommits()会调用TableRecordWrter.close()。默认缓冲区大小为2MB,您可以更改属性hbase.client.write.buffer

的值

我认为HBase服务器不知道修改是否由MapReduce作业提交

答案 1 :(得分:0)

在您的情况下,理想的做法是在MR作业中添加内部计数器,这些计数器将在作业跟踪器上显示内部计数器。您可能希望根据您对HBase的“Puts”数量来更新这些计数器。

http://diveintodata.org/2011/03/15/an-example-of-hadoop-mapreduce-counter/

这篇文章可能对您有所帮助。