我目前正在运行一个长为MapReduce
的作业,其中有一个TableReducer
正在写入HBase表。我有另一个独立的程序从同一张桌子扫描。 MapReduce
工作完成了87%,但我没有在我的扫描程序中看到表中有任何新行。只有在MapReduce作业完成后,HBase行才能在TableReducerJob中添加吗?
只有在整个MapReduce
作业完成后,MapReduce
作业所添加的行才可见?
我目前正在运行一个长为MapReduce
的作业,其中有一个TableReducer
正在写入HBase表。我有另一个独立的程序从同一张桌子扫描。 MapReduce
工作完成了87%,但我没有在我的扫描程序中看到表中有任何新行。只有在MapReduce作业完成后,HBase行才能在TableReducerJob中添加吗?
只有在整个MapReduce
作业完成后,MapReduce
作业所添加的行才可见?
TableOutputFormat
通过调用:table.setAutoFlush(false)
启用客户端缓冲机制。当作业完成时table.flushCommits()
被TableRecordWrter.close()
调用。默认的缓冲区大小为中等2MB,您可以更改属性hbase.client.write.buffer
我觉得HBase的服务器不知道是否修改由MapReduce工作
在做的理想的事情犯的价值您的情况是在您的MR作业中添加内部计数器,以便在作业跟踪器上显示内部计数器。您可能希望根据您正在对HBase进行的“投入”数量更新这些计数器。
http://diveintodata.org/2011/03/15/an-example-of-hadoop-mapreduce-counter/
这篇文章可以帮助你更好。
是的,我已经有柜台了,我正在从MR作业写入HBase表,并试图从我的基于Web的HBase客户端同时读取它,但没有看到任何内容,所以我只想检查一下。 我还有另一个正在加载的MR作业,中途失败了,我不确定是否会从那个失败的作业中得到流浪的残余行,但看起来它很干净。 –