我目前正在运行一个长MapReduce
个作业,其TableReducer
正在写入HBase表。我在同一张桌子上有另一个独立程序扫描。 MapReduce
作业已完成87%+,但我在扫描程序中看不到表中的任何新行。
只有在整个MapReduce
作业完成后,MapReduce
作业添加的行才可见吗?
答案 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/
这篇文章可能对您有所帮助。