mapreduce作业的进度



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

有没有任何方法可以在作业运行时实时向您提供作业的进度,而不仅仅是在作业完成时。

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

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();
}

如果您指的是编程访问,那么您需要使用JobClient API:

https://hadoop.apache.org/docs/current/api/org/apache/hadoop/mapred/JobClient.html

https://hadoop.apache.org/docs/current/api/org/apache/hadoop/mapred/RunningJob.html

你可以通过JobClient:提交你的工作

JobClient jobClient = new JobClient(jobConf);
RunningJob job = jobClient.submitJob(jobConf);
float mapProgress = job.mapProgress();
float redProgress = job.reduceProgress();

或者可以查找现有作业:

JobClient jobClient = new JobClient(jobConf);
RunningJob job = jobClient.getJob("your_job_id");
...

相关内容

  • 没有找到相关文章

最新更新