Skip to Content
Data EngineeringYARN 컨테이너 로그의 집계와 보관 경로
📊 Data Engineering2016년 9월 6일

YARN 컨테이너 로그의 집계와 보관 경로

#data-engineering#hadoop#historyserver#architecture#diagram

Hadoop 로그 수집 과정을 볼 때 실행 이력과 컨테이너 로그를 구분해야 했습니다. MapReduce JobHistoryServer의 작업 이력, Spark의 이벤트 로그, YARN 컨테이너 로그는 같은 파일이 아닙니다.

당시 그려 둔 로그 처리 흐름을 바탕으로, 여기서는 YARN 컨테이너 로그가 어디에 저장되고 어떻게 정리되는지 살펴봅니다. 설정 설명은 Hadoop 2.7.3을 기준으로 확인했습니다.

로그 집계 설정에 따른 분기

NodeManager는 컨테이너의 로컬 로그를 관리합니다. 이후 처리는 yarn.log-aggregation-enable 설정에 따라 달라집니다.

다이어그램 로딩 중...

이 그림은 기본 흐름을 설명하기 위한 요약입니다. 원격 로그를 한곳에 모으는 설정과 작업 실행 이력을 제공하는 HistoryServer 설정을 같은 것으로 보면 안 됩니다.

집계를 사용하는 경우

Hadoop 2.7.3의 기본 설정 설명에서는 애플리케이션이 완료된 뒤 컨테이너 로그를 원격 파일시스템으로 모으도록 안내합니다. 경로는 yarn.nodemanager.remote-app-log-dir과 관련 suffix 설정으로 정합니다.

집계 파일의 압축 방식은 yarn.nodemanager.log-aggregation.compression-type으로 설정합니다. 원격에 모인 로그의 보관 기간은 yarn.log-aggregation.retain-seconds를 확인해야 합니다.

집계를 사용하지 않는 경우

집계가 꺼져 있으면 로컬 로그의 보관 시간인 yarn.nodemanager.log.retain-seconds가 적용됩니다. 이 설정은 집계를 사용하는 경우의 원격 로그 보관 기간을 정하는 값이 아닙니다.

로그가 사라졌을 때는 어느 경로의 로그를 보고 있는지부터 확인해야 합니다. NodeManager의 로컬 파일과 원격 집계 파일은 보관 설정이 다릅니다.

애플리케이션 로그 조회

집계된 컨테이너 로그는 애플리케이션 ID를 기준으로 조회할 수 있습니다.

bash
yarn logs -applicationId application_0000000000000_0001

ID는 설명용 예시입니다. 실제 조회에서는 해당 애플리케이션의 ID와 실행 사용자, 조회 권한을 확인해야 합니다.

참고 자료

Last updated on