2014-04-08 1 views
1

나는 때문에, 나는 모든 작업이 성공하면, 내가 3 일에 약간의 폴링을 넣어 확인 그래서이hadoop -지도 작업 완료시 상태를 얼마나 오래 확인할 수 있습니까?

Job[] job = new Job[3]; 
. 
. 
. 
job[0].submit(); 
job[1].submit(); 
job[2].submit(); 

같은 짓을 한 병렬로 실행되는 3 개 맵리 듀스 작업을해야합니다.

boolean isAllFinished = false; 
while(!isAllFinished) { 
    for(int i = 0; i < 3; i++) { 
     log.debug("job["+i+"].isComplete() >> " + job[i].isComplete()); 
     isAllFinished = isAllFinished & job[i].isComplete(); 
    } 
    Thread.sleep(1000); 
} 

비록, 긍정적으로 수율, 그것이 내가 오류의 이러한 종류의 것 임의 차례 실패/로그 : 내가 생각하고

14/04/08 18:43:59 DEBUG FMS: job[0].isComplete() >> false 
14/04/08 18:44:00 DEBUG FMS: job[1].isComplete() >> false 
14/04/08 18:44:01 DEBUG FMS: job[2].isComplete() >> false 
14/04/08 18:44:12 INFO mapred.ClientServiceDelegate: Application state is completed. FinalApplicationStatus=SUCCEEDED. Redirecting to job history server 
14/04/08 18:44:13 INFO ipc.Client: Retrying connect to server: 0.0.0.0/0.0.0.0:10020. Already tried 0 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1 SECONDS) 
14/04/08 18:44:14 INFO ipc.Client: Retrying connect to server: 0.0.0.0/0.0.0.0:10020. Already tried 1 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1 SECONDS) 
14/04/08 18:44:15 INFO ipc.Client: Retrying connect to server: 0.0.0.0/0.0.0.0:10020. Already tried 2 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1 SECONDS) 

을 최대에 시간 제한이있는 경우 때 작업 클래스를 통해 작업 상태를 확인할 수 있습니다. 이것에 대한 어떤 생각이라도 감사하십시오!

답변

0

하둡 작업이 job.waitForCompletion(true);

당신은 다음과 같은 코드를 시도 할 수 있습니다 사용하여 완료까지 기다려야 구성 할 수 있습니다

job[0].waitForCompletion(true); 
job[1].waitForCompletion(true); 
job[2].waitForCompletion(true); 

당신이 제한 시간을 제공하려면, 다음 wait(timeout) 방법을 사용할 수 있습니다.

job[0].wait(1000); 
+0

에 동의하지만, 병렬로 3 개의 작업을 실행해야합니다. 그래서 나는 직업 클래스의 isComplete() 및 isSuccessful() 메소드를 활용하는 방법을 찾고 있습니다. – dansuzuki

+0

각 작업에 대한 스레드를 시작한 다음 스레드가 완료 될 때까지 차단하기 위해 왜 가입하지 않습니까? – climbage

관련 문제