Hadoop Archive Logs 가이드

Hadoop Archive Logs 가이드

YARN 집계 로그(aggregated logs)가 많은 클러스터에서 작은 파일의 수를 줄여 NameNode에 가해지는 부담을 줄이기 위해, 이 로그들을 hadoop archive로 결합할 수 있어요. 이 도구는 이를 쉽게 해주는 방법을 제공해요.

출처: 문서

본문

개요 (Overview)

집계 로그가 많은 클러스터에서는 로그들을 hadoop archive로 결합하면 작은 파일의 수를 줄여서 NameNode의 부담을 낮출 수 있어요. 이 도구는 그 작업을 쉽게 해주는 방법을 제공해요.

hadoop archive 안의 집계 로그는 여전히 Job History Server와 yarn logs 명령으로 읽을 수 있어요. hadoop archive에 대한 자세한 내용은 Hadoop Archives 가이드를 참고하세요.

로그를 아카이브하는 방법 (How to Archive Logs)

사용법:

mapred archive-logs

옵션:

  • -force: 기존 작업 디렉터리가 발견되면 강제로 다시 생성해요. 다른 인스턴스가 현재 실행 중이 아니라는 것을 알 때만 사용해야 해요.
  • -help: 이 메시지를 출력해요.
  • -maxEligibleApps <n>: 처리할 자격 있는(eligible) 앱의 최대 수 (기본값: -1 (전체))
  • -maxTotalLogsSize <megabytes>: 자격을 갖추기 위해 필요한 전체 로그 크기의 최대값 (megabytes 단위) (기본값: 1024)
  • -memory <megabytes>: 각 컨테이너에 할당할 메모리 (megabytes 단위) (기본값: 1024)
  • -minNumberLogFiles <n>: 자격을 갖추기 위해 필요한 최소 로그 파일 수 (기본값: 20)
  • -noProxy: 지정하면 모든 처리가 이 명령을 실행하는 사용자(또는 DefaultContainerExecutor를 사용 중이라면 YARN 사용자)로 수행돼요. 지정하지 않으면 모든 처리가 그 애플리케이션을 소유한 사용자로 수행되며, 이 명령을 실행하는 사용자가 그 사용자로 impersonate할 수 없으면 실패해요.
  • -verbose: 더 많은 세부 정보를 출력해요.

이 도구는 충돌을 방지하기 위해 한 번에 한 클러스터에서 인스턴스 하나만 실행하는 것을 지원해요. HDFS의 yarn.nodemanager.remote-app-log-dir 아래에 archive-logs-work라는 디렉터리가 존재하는지 확인하는 방식으로 이 동작을 수행해요 (기본값: /tmp/logs/archive-logs-work). 어떤 이유로 그 디렉터리가 제대로 정리되지 않아 도구가 실행을 거부하면 -force 옵션으로 강제할 수 있어요. -help 옵션은 사용법 정보를 출력해요.

이 도구는 다음 절차로 동작해요:

  1. 다음 기준에 따라 자격 있는 애플리케이션 목록을 결정해요:
    • 아직 아카이브되지 않음
    • 집계 상태가 성공적으로 완료됨
    • 최소 -minNumberLogFiles 개의 로그 파일을 보유
    • 로그 파일 크기의 합이 -maxTotalLogsSize megabytes 미만
  2. -maxEligibleApps보다 많은 애플리케이션이 발견되면 가장 새로운 애플리케이션은 제외돼요. 이들은 다음에 처리할 수 있어요.
  3. 자격 있는 애플리케이션을 기반으로 셸 스크립트를 생성해요.
  4. Distributed Shell 프로그램이 앞서 언급한 스크립트로 실행돼요. -maxEligibleApps 개의 컨테이너(각각 한 애플리케이션을 처리)와 -memory megabytes의 메모리로 실행돼요. 각 컨테이너는 단일 애플리케이션에 대해 hadoop archives 명령을 실행하고, 집계 로그 파일을 결과 archive로 대체해요.
  5. -noProxy 옵션은 도구가 현재 실행 중인 사용자(또는 DefaultContainerExecutor를 사용 중이면 YARN 사용자)로 모든 것을 처리하게 해요. 지정하지 않으면 모든 처리가 그 애플리케이션을 소유한 사용자로 수행되며, 이 명령을 실행하는 사용자가 그 사용자로 impersonate할 수 없으면 실패해요.

이것은 impersonation을 활성화하지 않고 관리자 사용자가 모든 집계를 처리하게 하고 싶을 때 유용해요. -noProxy를 쓰면 결과 HAR 파일은 원래 로그를 소유한 사람이 아니라 도구를 실행한 사람이 소유하게 돼요. -verbose 옵션은 도구가 수행 중인 작업에 대한 더 많은 세부 정보를 출력하게 해요.

더 알아보기 (Learn more)