Apache Hadoop — HDFS 와 YARN 을 한 파드에 세우고 운영한다 · MapReduce · 퀴즈
퀴즈: 셔플·컴바이너·카운터
6문항. 정답과 해설은 풀어 본 뒤에 보여 드립니다.
서로 다른 맵 태스크가 같은 낱말을 내놓았는데도 그 낱말의 합계가 한 줄로 모이는 근거는?
- 맵 태스크가 끝날 때 서로의 출력을 비교해 합치기 때문
- ResourceManager 가 같은 키를 찾아 한 노드로 모아 주기 때문
- HDFS 가 같은 키를 담은 블록을 한 DataNode 에 두기 때문
- 분할기가 같은 키를 언제나 같은 번호의 리듀서로 보내기 때문
mapred-default.xml 기본값에서 맵 출력 버퍼가 디스크로 쏟기 시작하는 시점은?
- 버퍼 100MB 가 0.80 만큼 찼을 때 뒤쪽 스레드가 쏟기 시작한다
- 버퍼 128MB 가 가득 찼을 때 맵을 멈추고 한 번에 쏟는다
- 맵 태스크가 끝날 때 한 번만 쏟고 그 전에는 쏟지 않는다
- 레코드가 1만 건 쌓일 때마다 컴바이너를 거쳐 쏟는다
리듀서 코드를 그대로 컴바이너로 걸어도 결과가 안전한 계산은?
- 주문 금액의 평균, 평균의 평균도 평균이므로
- 낱말의 등장 횟수 합계, 여러 번 더해도 같으므로
- 값의 중앙값, 부분 중앙값으로 전체를 알 수 있으므로
- 값의 개수 비율, 부분 비율을 곱하면 되므로
리듀서를 3개로 두고 낱말 세기를 돌렸다. 결과 파일에 대한 설명으로 옳은 것은?
- 결과 파일은 하나이고 그 안에서 키가 전부 정렬되어 있다
- 결과 파일은 셋이고 세 파일을 이어 붙이면 전체가 정렬되어 있다
- 결과 파일은 셋이고 각 파일 안에서만 키 차례가 지켜진다
- 결과 파일은 맵 태스크 수만큼 생기고 정렬은 되어 있지 않다
클라이언트에서 낸 잡이 ResourceManager 화면에 전혀 나타나지 않는데 결과는 나왔다. 먼저 의심할 것은?
- mapreduce.framework.name 이 기본값 local 이라 로컬 JVM 에서 돌았다
- 잡 이력 서버가 꺼져 있어 ResourceManager 에 잡이 등록되지 않았다
- 리듀서 수가 기본값 1 이라 잡이 ResourceManager 를 거치지 않았다
- 컴바이너가 걸려 있어 맵 출력이 ResourceManager 를 우회했다
잡 이력 서버를 띄우지 않은 클러스터에서 끝난 잡의 .jhist 파일을 찾으려면 어디를 보는가?
- NodeManager 로컬 디스크의 컨테이너 로그 폴더 안
- NameNode 의 dfs.namenode.name.dir 아래 current 폴더 안
- ResourceManager 의 메모리, 재시작하면 사라진다
- HDFS 의 스테이징 아래 history/done_intermediate 폴더