2015-02-10 3 views
0

Я разрабатываю приложение MapReduce, и я хочу знать ход выполнения работы, которую я выполняю. Я уже знаком с методами job.mapprocess и job.reducerprocess. Проблема в том, что эти методы работают только при завершении задания.Прогресс mapreduce job

Есть ли какой-либо метод, который даст вам ход выполнения задания в реальном времени во время работы, а не только после его завершения.

+0

вы можете проверить прогресс в веб-интерфейсе, IP: 8088 –

ответ

0

Если вы имеете в виду программный доступ, то вам нужно использовать 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"); 
... 
1

В новом Hadoop API, вы можете получить доступ к значению хода от объекта 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(); 
} 
Смежные вопросы