Mapreduce-Job-Process
맵리듀스 잡은 클라이언트가 잡 실행을 요청하는 단계, 해당 잡이 초기화되는 단계, 잡을 실행하기 위한 태스크를 할당하는 단계, 할당된 태스크가 실행되는 단계, 마지막으로 잡이 완료되는 단계로 구성됩니다.
1. 잡 실행 요청
맵리듀스 애플리케이션인 클라이언트가 잡 실행을 요청하면 아래와 같이 작업이 진행됩니다.
클라이언트는 org.apache.hadoop.mapreduce.Job의 waitForCompletion 메서드를 호출해 잡 실행을 요청합니다. 이때 클라이언트의 요청은 Job의 내부 컴포넌트인 JobClient에 전달됩니다.
JobClient는 잡트래커의 getNewJobId 메서트를 호출해 새로운 잡ID를 요청합니다. 잡트래커는 잡의 출력 파일 경로가 정상적인지 확인한 후 잡ID를 발급합니다. 참고로 JobClient와 잡트래커는 RPC로 통신하며, JobSubmissionProtocol에 정의된 프로토콜을 사용합니다.
클라이언트는 잡을 실행하는 데 필요한 정보를 잡트래커와 태스크트래커에게 공유해야 합니다. 그래서 JobClient는 다음과 같은 파일을 HDFS에 저장합니다.
- 입력 스플릿 정보
- JobConf에 설명된 정보
- 잡 클래스 파일 혹은 잡 클래스가 포함된 JAR 파일
JobClient는 잡트래커의 submitJob 메서드를 호출해 잡 실행을 요청합니다.