YARN 공유 캐시에 대한 MR 지원

YARN 공유 캐시에 대한 MR 지원

YARN 공유 캐시에 대한 MapReduce 지원은 MapReduce 작업이 추가 리소스 캐싱을 활용할 수 있게 해줘요. 이것은 작업 제출 클라이언트와 YARN 클러스터 자체 내부 양쪽에서 네트워크 대역폭을 절약해요. 작업 제출 시간과 전체 작업 실행 시간을 줄여줘요.

출처: 문서

본문

개요 (Overview)

YARN 공유 캐시에 대한 MapReduce 지원은 MapReduce 작업이 추가 리소스 캐싱을 활용할 수 있게 해줘요. 이것은 작업 제출 클라이언트와 YARN 클러스터 자체 내부 양쪽에서 네트워크 대역폭을 절약해요. 이것은 작업 제출 시간과 전체 작업 실행 시간을 줄여줘요.

공유 캐시 활성화/비활성화 (Enabling/Disabling the shared cache)

먼저 YARN 클러스터에 공유 캐시 서비스가 실행 중이어야 해요. 공유 캐시 서비스 설정 방법은 YARN 문서를 참고하세요.

MapReduce 사용자는 리소스 유형에 따라 어떤 리소스가 공유 캐시에 업로드될 자격이 있는지 지정할 수 있어요. 이것은 mapred-site.xml의 구성 파라미터로 수행돼요:

<property>
    <name>mapreduce.job.sharedcache.mode</name>
    <value>disabled</value>
    <description>
       A comma delimited list of resource categories to submit to the
       shared cache. The valid categories are: jobjar, libjars, files,
       archives. If "disabled" is specified then the job submission code
       will not use the shared cache.
    </description>
</property>

리소스 유형이 나열되면 공유 캐시에 그 리소스가 이미 있는지 확인해요. 있으면 캐시된 리소스를 사용하고, 없으면 리소스를 비동기적으로 업로드해야 한다고 지정해요.

캐시용 리소스 지정 (Specifying resources for the cache)

MapReduce 사용자는 MapReduce 작업의 리소스를 지정하는 3가지 방법이 있어요:

  1. 제네릭 옵션 파서를 통한 명령줄 (The command line via the generic options parser, 즉 -files, -archives, -libjars): 명령줄을 통해 리소스가 지정되고 그 리소스 유형이 공유 캐시에 대해 활성화되어 있으면, 그 리소스는 공유 캐시를 사용해요.
  2. 분산 캐시 API (The distributed cache api): 분산 캐시를 통해 리소스가 지정되면, 그 리소스 유형이 공유 캐시에 대해 활성화되어 있는지와 무관하게 공유 캐시를 사용하지 않아요.
  3. 공유 캐시 API (The shared cache api): org.apache.hadoop.mapreduce.Job API에 추가된 새로운 메서드 집합이에요. 사용자가 파일을 공유 캐시에 추가하거나, 공유 캐시와 클래스패스 양쪽에 추가하거나, archive를 공유 캐시에 추가할 수 있게 해줘요. 이 리소스들은 분산 캐시에 배치되고, 리소스 유형이 활성화되어 있으면 클라이언트도 공유 캐시를 사용해요.

리소스 명명 (Resource naming)

MapReduce 작업의 각 리소스가 고유한 파일 이름을 갖도록 하는 것이 중요해요. 이것은 컨테이너 시작 시 YARN 컨테이너가 MapReduce 태스크를 실행할 때 로컬화(localize)되는 동안 심링크 충돌을 방지해요. 사용자는 URI의 프래그먼트(fragment) 부분을 사용해 자신의 리소스 이름을 지정할 수 있어요. 예를 들어 명령줄에 지정된 파일 리소스의 경우 다음과 같이 보일 수 있어요:

-files /local/path/file1.txt#foo.txt,/local/path2/file1.txt#bar.txt

위 예제에서 file1.txt라는 이름의 두 파일은 foo.txt와 bar.txt라는 두 개의 서로 다른 이름으로 로컬화돼요.

리소스 가시성 (Resource Visibility)

공유 캐시의 모든 리소스는 PUBLIC 가시성을 가져요.

공유 캐시를 사용할 수 없을 때의 MapReduce 클라이언트 동작 (MapReduce client behavior while the shared cache is unavailable)

공유 캐시 관리자를 사용할 수 없는 경우 MapReduce 클라이언트는 fail-fast 메커니즘을 사용해요. MapReduce 클라이언트가 공유 캐시 관리자에게 연락하는 데 실패하면 클라이언트는 그 작업 제출의 나머지 동안 공유 캐시를 더 이상 사용하지 않아요. 이것은 MapReduce 클라이언트가 공유 캐시에서 리소스를 확인하려고 시도할 때마다 타임아웃되는 것을 방지해요. MapReduce 클라이언트는 빠르게 기본 동작으로 되돌아가 공유 캐시가 처음부터 활성화된 적이 없던 것처럼 Job을 제출해요.

더 알아보기 (Learn more)