LabHub
배우기 러닝패스 코스

Apache Hadoop — HDFS 와 YARN 을 한 파드에 세우고 운영한다 · Hadoop Streaming · 퀴즈

퀴즈: 스트리밍의 계약

LabHub 에서 이어서 보기

6문항. 정답과 해설은 풀어 본 뒤에 보여 드립니다.

  1. 스트리밍 맵퍼가 탭 문자가 없는 줄 `GET /index.html 200` 을 표준 출력에 썼다. 프레임워크는 이 줄을 어떻게 받는가?

    1. 첫 공백 앞의 GET 이 키, 나머지가 값이 된다
    2. 형식이 틀린 줄로 보고 버린 뒤 카운터를 올린다
    3. 줄 전체가 키가 되고 값은 비어 있는 쌍이 된다
    4. 태스크가 실패로 처리되어 다시 시도된다
  2. 자바 리듀서와 달리 스트리밍 리듀서 스크립트가 반드시 직접 해야 하는 일은?

    1. 입력 줄을 키로 다시 정렬하는 일
    2. 앞 줄의 키를 기억해 키가 바뀌는 경계를 찾는 일
    3. 다른 리듀서와 통신해 같은 키를 넘겨받는 일
    4. 맵 출력 파일을 HTTP 로 직접 받아 오는 일
  3. 접근 로그의 깨진 줄을 세면서도 잡은 끝까지 돌게 하는 방법으로 옳은 것은?

    1. 깨진 줄을 만나면 stderr 에 reporter:counter:logs,malformed,1 을 쓰고 건너뛴다
    2. 깨진 줄을 만나면 stdout 에 reporter:counter:logs,malformed,1 을 쓰고 건너뛴다
    3. 깨진 줄을 만나면 종료 코드 1 로 끝내 프레임워크가 그 줄만 건너뛰게 한다
    4. 깨진 줄을 만나면 예외를 던지고 재시도 4번 안에 통과되기를 기다린다
  4. 키가 `날짜.상태코드` 모양일 때 같은 날짜의 줄을 모두 같은 리듀서로 보내고, 그 안에서는 전체 키로 정렬되게 하려면?

    1. 리듀서 수를 날짜 수와 똑같이 맞추면 저절로 날짜별로 나뉜다
    2. 컴바이너를 걸어 날짜별 소계를 맵 쪽에서 미리 만들어 둔다
    3. stream.map.output.field.separator 만 . 으로 바꾸면 날짜로 나뉜다
    4. KeyFieldBasedPartitioner 에 -k1,1 을 주고 키 필드 수를 2로 둔다
  5. 기본 설정에서 한 맵 태스크의 스크립트가 매번 0 아닌 종료 코드로 끝난다. 잡은 어떻게 되는가?

    1. 종료 코드는 무시되고 그때까지의 출력으로 태스크가 성공한다
    2. 그 맵 태스크만 건너뛰고 나머지 맵으로 잡이 성공한다
    3. 태스크가 실패로 처리되어 재시도되고, 4번 실패하면 잡이 실패한다
    4. ResourceManager 가 스크립트를 다른 언어로 바꿔 다시 돌린다
  6. 스트리밍 명령에서 `-files map.py,reduce.py` 를 `-mapper` 와 `-reducer` 뒤에 두었더니 명령이 실패했다. 이유는?

    1. -files 는 하나의 파일만 받아 쉼표 목록을 넘기면 실패한다
    2. -files 같은 일반 옵션은 스트리밍 옵션보다 앞에 와야 하기 때문이다
    3. -files 로 넘긴 파일은 HDFS 에 먼저 올라가 있어야 하기 때문이다
    4. -mapper 로 준 파일은 -files 로 넘기면 안 되고 -file 만 써야 한다