7.1 맵리듀스 잡 실행 상세분석
- 클라이언트 : 맵리듀스 잡을 제출
- YARN 리소스 매니저 : 클러스터 상에 컴퓨팅 리소스의 할당을 제어
- YARN 노드 매니저 : 클러스터의 각 머신에서 컴퓨팅 컨테이너를 시작하고 모니터링함.
- MR 애플리케이션 마스터 : MR 잡을 수행하는 각 태스크를 제어함. AM과 MR 태스크는 컨테이너 내에서 실행되며, RM은 잡을 할당하고, NM은 태스크를 관리하게 됨.
- 분산 파일시스템 : 다른 단계 간에 잡 리소스 파일들을 공유하는 데 사용됨(보통 HDFS)
- 잡의 크기가 작다면, AM은 태스크를 자신의 JVM에 실행할 수도 있음
- 병렬 처리를 위해 새 컨테이너에 태스크를 할당하고 실행하는 오버헤드가 단일 노드에서 순차적으로 실행하는 방식에 비해 유리하다고 판단할 때
- 이를 우버되었다. (uberized) 고 표현하며, 우버 태스크로 실행된다고 하기도 함.. (오..)
- 작은 크기의 잡은 10개 미만의 매퍼와 하나의 리듀서, HDFS 블록 하나보다 작은 크기의 입력일 경우를 말함.
맵 리듀스의 진행 상황과 상태를 갱신하는 방법
- 잡 진행 과정에서 변경되는 상태 정보는 어떻게 클라이언트로 전송되는가?
7.2 실패
7.2.1 태스크 실패
- 태스크에서 exception이 발생하면, 태스크 JVM이 종료하기 전에 부모인 AM에 에러를 보고함.
- AM은 이를 실패로 표시하고, 해당 리소스를 다른 태스크가 쓸 수 있도록 컨테이너를 풀어줌.
- JVM이 실패하는 경우, JVM 버그일 수 있음.
- NM이 프로세스가 종료되었음을 파악하고, 이를 AM에 알려서 해당 시도가 실패했다고 표시 함.
- Hang이 걸린 경우, AM이 진행상황을 일정 시간동안 갱신받지 못하면, 해당 태스크를 실패로 표시함.
- 태스크 JVM프로세스는 일정 시간 후에 자동으로 강제 종료됨.
7.2.2 애플리케이션 마스터 실패
- YARN 내에 애플리케이션은 실패할 때
mapreduce.am.max-attempts
속성으로 설정된 횟수만큼 재시도를 시도함.
- 기본값은 2며, 그 이상 실패하면, 더 이상 시도하지 않고 실패로 끝난다.
- 클러스터 내의 모든 YARN AM에 대해 일괄 제한을 줄 수 있고,
yarn.resourcemanager.am.max-attemps
로 설정 가능. (상위 설정)