Hadoop 클러스터 설정

Hadoop 클러스터 설정

몇 대부터 수천 대에 이르는 Hadoop 클러스터를 설치하고 설정하는 방법을 다루는 문서예요. 각 데몬이 어디서 실행되는지, 핵심 설정 파라미터는 무엇인지, 클러스터를 어떻게 시작하고 모니터링하는지 큰 흐름을 잡아볼게요. 이 문서는 고가용성(High Availability) 같은 고급 주제는 다루지 않아요.

출처: Hadoop Cluster Setup (공식문서)

본문

Hadoop 데몬 구성(비보안 모드)

클러스터의 각 역할은 별도 데몬으로 실행돼요. 핵심 데몬과 그 설정 파라미터를 소개할게요.

YARN 자원 관리 관련 설정

파라미터 설명
yarn.acl.enable true / false ACL을 사용할지. 기본값은 false예요.
yarn.log-aggregation-enable false 로그 집계(aggregation)를 켜고 끔.
yarn.resourcemanager.hostname host 모든 yarn.resourcemanager*address 대신 단일 호스트명으로 지정. ResourceManager 컴포넌트의 기본 포트가 자동 설정돼요.
yarn.resourcemanager.resource-tracker.address host:port NodeManager들을 위한 ResourceManager 주소.
yarn.resourcemanager.admin.address host:port 관리 명령용 ResourceManager 주소.
yarn.resourcemanager.scheduler.class 클래스명 스케줄러 클래스. CapacityScheduler(권장), FairScheduler(역시 권장), FifoScheduler 중 하나. 예: org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler

NodeManager 자원 설정

파라미터 설명
yarn.nodemanager.resource.memory-mb 숫자(MB) 해당 NodeManager가 제공할 총 물리 메모리(MB). 실행 중인 컨테이너들이 쓸 수 있는 총 자원을 정의해요.
yarn.nodemanager.local-dirs 경로 목록 중간 데이터가 쓰이는 로컬 파일 시스템 경로(콤마 구분). 경로를 여러 개 두면 디스크 I/O가 분산돼요.
yarn.nodemanager.log-dirs 경로 목록 로그가 쓰이는 로컬 경로(콤마 구분).
yarn.nodemanager.aux-services mapreduce_shuffle MapReduce 애플리케이션이 필요로 하는 셔플 서비스.
yarn.nodemanager.log.retain-seconds 10800 로그 집계가 꺼져 있을 때 NodeManager가 로그를 보관하는 기본 시간(초).

리소스매니저·로그 관련 설정

파라미터 설명
yarn.log-aggregation.retain-seconds -1 집계된 로그를 보관할 기간을 초 단위로. -1이면 비활성화. 너무 작게 잡으면 네임노드에 부담을 줄 수 있어요.

MapReduce 작업 설정

파라미터 설명
mapreduce.framework.name yarn 실행 프레임워크를 Hadoop YARN으로 설정.
mapreduce.map.memory.mb 1536 맵의 더 큰 자원 한도.
mapreduce.reduce.memory.mb 3072 리듀스의 더 큰 자원 한도.
mapreduce.reduce.java.opts -Xmx2560M 리듀스 자식 JVM의 더 큰 힙 크기.
mapreduce.task.io.sort.mb 512 정렬 중 데이터에 쓸 더 높은 메모리 한도.
mapreduce.task.io.sort.factor 100 정렬 중 한 번에 병합하는 스트림 수를 늘림.
mapreduce.reduce.shuffle.parallelcopies 50 아주 많은 맵의 출력을 가져올 때 리듀스가 동시에 도는 병렬 복사 수.

MapReduce JobHistory Server

파라미터 설명
mapreduce.jobhistory.address host:port MapReduce JobHistory Server 주소. 기본 포트는 10020.
mapreduce.jobhistory.intermediate-done-dir /mr-history/tmp MapReduce 작업이 기록을 쓰는 디렉터리.
mapreduce.jobhistory.done-dir /mr-history/done MR JobHistory Server가 기록을 관리하는 디렉터리.

NodeManager 상태 확인

노드 상태 스크립트로 NodeManager의 건강 상태를 모니터링할 수 있어요.

파라미터 설명
yarn.nodemanager.health-checker.script.path 노드 상태 스크립트 노드의 건강 상태를 확인하는 스크립트.
yarn.nodemanager.health-checker.interval-ms 밀리초 상태 스크립트 실행 간격.

랙 인식(Rack Awareness)

Hadoop의 많은 컴포넌트는 랙 인식을 지원해서 네트워크 토폴로지를 성능과 안전에 활용해요. 데몬들은 관리자가 설정한 모듈을 호출해 워커의 랙 정보를 얻어요.

클러스터 운영

etc/hadoop/workers와 ssh 신뢰 접근이 설정돼 있으면(단일 노드 설정 참고) 유틸리티 스크립트로 YARN 전체 프로세스를 멈출 수 있어요. yarn 사용자로:

[yarn]$ $HADOOP_HOME/sbin/stop-yarn.sh

WebAppProxy 서버를 멈추려면 WebAppProxy 서버에서 yarn 사용자로 실행해요. 다중 서버에 로드 밸런싱을 쓰는 경우 각각에서 실행해야 해요:

[yarn]$ $HADOOP_HOME/bin/yarn stop proxyserver

MapReduce JobHistory Server는 지정된 서버에서 mapred 사용자로 다음과 같이 멈춰요.

웹 인터페이스

데몬 웹 인터페이스 설명
NameNode http://nn_host:port/ 기본 HTTP 포트는 9870.
MapReduce JobHistory Server http://jhs_host:port/ 기본 HTTP 포트는 19888.

더 알아보기