Hadoop: 단일 노드 클러스터 설정
Hadoop: 단일 노드 클러스터 설정
이 문서는 단일 노드 Hadoop 설치를 설정·구성해 Hadoop MapReduce와 HDFS(Hadoop Distributed File System)로 간단한 작업을 빠르게 수행하는 방법을 설명합니다.
출처: 문서
중요: 모든 운영용(production) Hadoop 클러스터는 Kerberos를 사용해 호출자를 인증하고 HDFS 데이터 접근을 보호하며 컴퓨테이션 서비스(YARN 등)에 대한 접근을 제한합니다. 이 지침은 Kerberos 서비스와의 통합을 다루지 않습니다. 운영 클러스터를 구성하는 모든 사람은 자사 조직의 Kerberos 인프라에 연결하는 것을 배포의 핵심 부분으로 포함해야 합니다.
보안 방법에 대한 자세한 내용은 Security 문서를 참고하세요.
전제 조건 (Prerequisites)
지원 플랫폼 (Supported Platforms)
- GNU/Linux는 개발 및 운영 플랫폼으로 지원됩니다. Hadoop은 2000개 노드의 GNU/Linux 클러스터에서 입증되었습니다.
필수 소프트웨어 (Required Software)
Linux에 필수 소프트웨어는 다음과 같습니다.
Java™를 설치해야 합니다. 권장 Java 버전은 HadoopJavaVersions에서 설명합니다.
ssh를 설치해야 하며, 선택적인 시작/중지 스크립트를 사용하려면 원격 Hadoop 데몬을 관리하는 Hadoop 스크립트를 사용하기 위해 sshd가 실행 중이어야 합니다. 또한 더 나은 ssh 리소스 관리를 위해 pdsh도 설치하는 것이 권장됩니다.
소프트웨어 설치 (Installing Software)
클러스터에 필수 소프트웨어가 없다면 설치해야 합니다.
예를 들어 Ubuntu Linux에서:
$ sudo apt-get install ssh
$ sudo apt-get install pdsh
다운로드 (Download)
Hadoop 배포판을 얻으려면 Apache Download Mirrors 중 하나에서 최근 안정 릴리스를 다운로드합니다.
Hadoop 클러스터 시작 준비
다운로드한 Hadoop 배포판의 압축을 풉니다. 배포판에서 etc/hadoop/hadoop-env.sh 파일을 편집해 다음과 같이 몇 가지 파라미터를 정의합니다:
# set to the root of your Java installation
export JAVA_HOME=/usr/java/latest
다음 명령을 시도해 보세요:
$ bin/hadoop
이 명령은 hadoop 스크립트의 사용법 문서를 표시합니다.
이제 세 가지 지원 모드 중 하나로 Hadoop 클러스터를 시작할 준비가 되었습니다.
- 로컬(스탠드얼론) 모드
- 유사 분산(Pseudo-Distributed) 모드
- 완전 분산(Fully-Distributed) 모드
스탠드얼론 동작 (Standalone Operation)
기본적으로 Hadoop은 단일 Java 프로세스로 비분산 모드에서 실행되도록 구성됩니다. 이는 디버깅에 유용합니다.
다음 예시는 압축을 푼 conf 디렉터리를 입력으로 복사한 다음 주어진 정규식의 모든 일치 항목을 찾아 표시합니다. 출력은 주어진 출력 디렉터리에 기록됩니다.
$ mkdir input
$ cp etc/hadoop/*.xml input
$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.5.0.jar grep input output 'dfs[a-z.]+'
$ cat output/*
유사 분산 동작 (Pseudo-Distributed Operation)
Hadoop은 각 Hadoop 데몬이 별도의 Java 프로세스로 실행되는 유사 분산 모드로도 단일 노드에서 실행할 수 있습니다.
설정 (Configuration)
다음을 사용합니다.
etc/hadoop/core-site.xml:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
etc/hadoop/hdfs-site.xml:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
패스프레이즈 없는 ssh 설정 (Setup passphraseless ssh)
이제 암호 없이 localhost에 ssh할 수 있는지 확인합니다:
$ ssh localhost
암호 없이 localhost에 ssh할 수 없으면 다음 명령을 실행합니다:
$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ chmod 0600 ~/.ssh/authorized_keys
실행 (Execution)
다음 지침은 MapReduce 작업을 로컬로 실행하는 방법입니다. YARN에서 작업을 실행하려면 YARN on Single Node를 참고하세요.
파일시스템을 포맷합니다:
$ bin/hdfs namenode -format
NameNode 데몬과 DataNode 데몬을 시작합니다:
$ sbin/start-dfs.sh
hadoop 데몬 로그 출력은 $HADOOP_LOG_DIR 디렉터리(기본값 $HADOOP_HOME/logs)에 기록됩니다.
NameNode 웹 인터페이스를 탐색합니다. 기본적으로 다음에서 사용할 수 있습니다.
- NameNode - http://localhost:9870/
MapReduce 작업 실행에 필요한 HDFS 디렉터리를 만듭니다:
$ bin/hdfs dfs -mkdir -p /user/<username>
입력 파일을 분산 파일시스템에 복사합니다:
$ bin/hdfs dfs -mkdir input
$ bin/hdfs dfs -put etc/hadoop/*.xml input
제공된 예시 중 일부를 실행합니다:
$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.5.0.jar grep input output 'dfs[a-z.]+'
출력 파일을 검사합니다: 출력 파일을 분산 파일시스템에서 로컬 파일시스템으로 복사해 살펴봅니다:
$ bin/hdfs dfs -get output output
$ cat output/*
또는
분산 파일시스템에서 출력 파일을 봅니다:
$ bin/hdfs dfs -cat output/*
완료되면 다음으로 데몬을 중지합니다:
$ sbin/stop-dfs.sh
단일 노드의 YARN (YARN on a Single Node)
몇 개의 파라미터를 설정하고 ResourceManager 데몬과 NodeManager 데몬을 추가로 실행하면 유사 분산 모드에서 YARN 위에 MapReduce 작업을 실행할 수 있습니다.
다음 지침은 위 지침의 1~4 단계가 이미 실행되었음을 가정합니다.
파라미터를 다음과 같이 설정합니다:
etc/hadoop/mapred-site.xml:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.application.classpath</name>
<value>$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*:$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*</value>
</property>
</configuration>
etc/hadoop/yarn-site.xml:
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.env-whitelist</name>
<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_HOME,PATH,LANG,TZ,HADOOP_MAPRED_HOME</value>
</property>
</configuration>
ResourceManager 데몬과 NodeManager 데몬을 시작합니다:
$ sbin/start-yarn.sh
ResourceManager 웹 인터페이스를 탐색합니다. 기본적으로 다음에서 사용할 수 있습니다.
- ResourceManager - http://localhost:8088/
MapReduce 작업을 실행합니다.
완료되면 다음으로 데몬을 중지합니다:
$ sbin/stop-yarn.sh
완전 분산 동작 (Fully-Distributed Operation)
완전 분산의 비사소한 클러스터 설정에 대한 정보는 Cluster Setup을 참고하세요.
Docker 컨테이너의 Hadoop
공식 릴리스를 사용하든 main 소스 코드를 사용하든 docker에서 hadoop을 설정하는 방법은 Hadoop Docker를 확인하세요.