2013-05-27 3 views
2
나는 끊임없이 매퍼 '및 감속기'실행 시간을 얻을 필요가

제출. 나는 다음과 같이 일자리를 제출했다. 나는이 프로그램을 실행하면 작업이 제출 매퍼는 결코 시작하지처럼하둡 작업

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

submitJob() 메소드가 리턴는 하둡 작업이 시작 기다리지 않고 호출 프로그램으로 즉시 훨씬 덜 완전한 제어 할 수 있습니다. 당신이 대기 할 경우 하둡 작업이 완료된 후에 만 ​​반환 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"); 
}  
+0

, 당신이 원하는 당신의 코멘트에 응답합니다. 즉, 구직자 웹 인터페이스에서 찾을 수있는 정보가 필요합니다. –