복붙노트

[HADOOP] 하둡 작업 제출

HADOOP

하둡 작업 제출

매퍼와 감속기의 작동 시간을 지속적으로 가져와야합니다. 다음과 같이 작업을 제출했습니다.

 JobClient jobclient = new JobClient(conf);
 RunningJob runjob = jobclient.submitJob(conf);          


 TaskReport [] maps = jobclient.getMapTaskReports(runjob.getID());

 long mapDuration = 0;
 for(TaskReport rpt: maps){
    mapDuration += rpt.getFinishTime() - rpt.getStartTime();
 }

그러나 프로그램을 실행할 때 작업이 제출되지 않고 매퍼가 시작되지 않는 것 같습니다. JobClient.runJob (conf)를 어떻게 사용하고 여전히 실행 시간을 얻을 수 있습니까?

해결법

  1. ==============================

    1.submitJob () 메소드는 hadoop 작업이 시작될 때까지 기다리지 않고 호출 프로그램에 즉시 제어를 리턴합니다. 대기하려면 hadoop 작업이 완료된 후에 만 ​​리턴되는 waitForCompletion () 메소드를 사용하십시오. 제출 후 완료 전에 후속 코드를 실행하고 싶기 때문에 중간에 무언가를 원한다고 생각합니다.

    submitJob () 메소드는 hadoop 작업이 시작될 때까지 기다리지 않고 호출 프로그램에 즉시 제어를 리턴합니다. 대기하려면 hadoop 작업이 완료된 후에 만 ​​리턴되는 waitForCompletion () 메소드를 사용하십시오. 제출 후 완료 전에 후속 코드를 실행하고 싶기 때문에 중간에 무언가를 원한다고 생각합니다.

    후속 코드를 루프에 넣어 작업이 완료 될 때까지 계속하고 (해당 테스트에 isComplete () 메서드 사용) 작업이 진행됨에 따라 매퍼와 감속기를 관찰하십시오. 아마도 루프에 Thread.sleep (xxx)를 넣고 싶을 것입니다.

    귀하의 의견에 답변하기 위해

    job.waitForCompletion();
    TaskCompletionEvent event[] = job.getTaskCompletionEvents();
    for (int i = 0; i < event.length(); i++) {
        System.out.println("Task "+i+" took "+event[i].getTaskRunTime()+" ms");
    }    
    
  2. from https://stackoverflow.com/questions/16778939/submitting-a-hadoop-job by cc-by-sa and MIT license