Apache Hadoop — HDFS 와 YARN 을 한 파드에 세우고 운영한다 · YARN 컨테이너와 대기열 · 퀴즈
퀴즈: 컨테이너 크기와 대기열
6문항. 정답과 해설은 풀어 본 뒤에 보여 드립니다.
yarn-default.xml 기본값에서 AM 이 메모리 300MB 짜리 컨테이너를 요청하면 무엇을 받는가?
- 정확히 300MB 짜리 컨테이너를 받는다
- 최소 할당인 1024MB 짜리 컨테이너를 받는다
- 요청이 최소 할당보다 작아 거절된다
- 최대 할당인 8192MB 짜리 컨테이너를 받는다
YARN 구조에서 실패한 맵 태스크를 다시 띄우도록 챙기는 쪽은?
- ResourceManager 의 Scheduler
- 태스크를 띄웠던 NodeManager
- 그 잡의 ApplicationMaster
- HDFS 의 NameNode
NodeManager 가 컨테이너에 1024MB 를 내주는 노드에서 MapReduce 잡이 AM 조차 띄우지 못했다. mapred-default.xml 기본값으로 설명되는 원인은?
- AM 기본 요청이 1536MB 라 1024MB 노드에 들어가지 않는다
- AM 기본 요청이 256MB 라 최소 할당에 걸려 거절된다
- 맵 태스크 기본 요청이 8192MB 라 AM 보다 먼저 자리를 차지한다
- 리듀서 기본 개수가 0 이라 잡이 시작 조건을 채우지 못한다
Capacity Scheduler 에서 root 아래 default·etl·adhoc 세 대기열의 capacity 를 50·30·30 으로 적었다. 무엇이 문제인가?
- 대기열은 두 개까지만 root 아래에 둘 수 있다
- capacity 는 백분율이 아니라 MB 로만 적어야 한다
- default 대기열은 capacity 를 적으면 안 된다
- 한 층의 capacity 합이 100 이 아니라 110 이다
capacity-scheduler.xml 에 새 대기열을 더했다. ResourceManager 를 재시작하지 않고 반영하려면?
- yarn node -refresh 로 NodeManager 를 다시 읽힌다
- yarn rmadmin -refreshQueues 로 대기열 설정을 다시 읽힌다
- hdfs dfsadmin -refreshNodes 로 설정을 다시 읽힌다
- 잡을 낼 때 -D 로 새 대기열 정의를 함께 넘긴다
yarn logs -applicationId 로 끝난 앱의 로그를 읽으려 했는데 아무것도 나오지 않는다. yarn-default.xml 기본값으로 설명되는 이유는?
- 컨테이너 로그는 원래 ResourceManager 메모리에만 있다
- yarn logs 는 실행 중인 앱의 로그만 보여 준다
- 로그 모으기가 기본으로 꺼져 있어 HDFS 로 옮겨지지 않았다
- 로그는 잡 이력 서버가 있어야만 파일로 쓰인다