我正在开发MapReduce应用程序,我想知道我正在运行的工作的进度。我已经熟悉job.mapprocess和job.reducerprocess方法。这些方法仅在作业完成时起作用的问题。

有什么方法可以让您在作业运行时(不仅是完成时)实时地进行作业进度。

最佳答案

在新的Hadoop API中,您可以通过以下方式从mapper或reducer类中的Context对象访问progress值:

public class MyMapper extends Mapper<Writable, Writable, Writable, Writable> {

    @Override
    public void map(Writable key, Writable value, Mapper<Writable, Writable, Writable, Writable>.Context context) throws IOException, InterruptedException {
        context.getProgress();
}

08-05 06:59