아파치 하둡 : 단일 노드 설치
1. 개요
- 아파치 하둡의 설치 과정에 대한 이해를 목적으로 함
- 로컬(독립) 모드 및 의사 분산 모드만 기술함
2. 전제
- 가상머신 환경에서 수행 : VirtualBox 6.1
- 운영 체제 : ubuntu 16.04 LST
3. 사전에 설치 필요한 소프트웨어
3.1. java
- 권장되는 자바 버전 확인
. https://cwiki.apache.org/confluence/display/HADOOP2/HadoopJavaVersions
. https://cwiki.apache.org/confluence/display/HADOOP/Hadoop+Java+Versions
- java 설치 (openjdk8 설치함)
#apt 패키지 추가 및 업데이트 sudo add-apt-repository ppa:openjdk-r/ppa sudo apt-get update # openjdk8 설치 sudo apt-get install openjdk-8-jdk # 자바 path 설정 vi ~/.bashrc # 하단에 PATH 설정 추가 입력 export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 export PATH=$PATH:$JAVA_HOME/bin |
3.2. ssh
- 하둡 스크립트를 사용하여 원격의 하둡 데몬을 관리하기 위해서는 ssh가 설치되고 sshd가 실행되고 있어야 함
sudo apt-get install ssh |
4. 설치
- 다운로드 : http://www.apache.org/dyn/closer.cgi/hadoop/common/ 에서 최신의 안정적인 배포 버전 다운로드
- 다운로드한 파일을 압축을 풀고 나서 etc/hadoop/hadoop-env.sh 파일에 JAVA_HOME 설정
- 하둡이 설치된 디렉토리(HADOOP_HOME) 및 하둡 바이너리 디렉토리 추가
# 다운로드 wget http://mirror.navercorp.com/apache/hadoop/common/hadoop-3.2.1/hadoop-3.2.1.tar.gz # 압축 풀기 tar xvf hadoop-3.2.1/hadoop-3.2.1.tar.gz # 디렉토리 명 변경 mv hadoop-3.2.1/hadoop-3.2.1.tar.gz hadoop # JAVA_HOME 설정 vi hadoop/etc/hadoop/hadoop-env.sh export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 # HADOOP_HOME 및 path 추가 vi ~/.bashrc export HADOOP_HOME=/home/<username>/<any directory>/hadoop export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin |
5. 로컬(독립) 모드
- 기본적으로 Hadoop은 단일 Java 프로세스로 비 분산 모드에서 실행되도록 구성되어 있음
- 개발 단계에서 디버깅에 유용함
- 데몬을 실행하지 않기 때문에 추가 설정 불필요함
6. 의사분산 모드
- 모든 하둡 데몬을 별도의 자바 프로세스로 단일 노드에서 실행
- 작은 규모의 클러스터에서 실행하는 것과 같은 효과
- 데몬을 실행하기 위해 적합한 환경 설정 필요
6.1. 환경 설정
etc/hadoop/core-site.xml:
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://localhost:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/home/<username>/<any directory>/hadoop_tmp</value> </property> </configuration> |
etc/hadoop/hdfs-site.xml:
<configuration> <property> <name>dfs.replication</name> <value>1</value> </property> </configuration> |
6.2. 암호없는 ssh 설정
- 암호없이 localhost에 ssh 접속이 가능한지 확인
ssh localhost |
- 암호없이 접속이 불가능한 경우 아래 명령을 실행
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys chmod 0600 ~/.ssh/authorized_keys |
6.3. YARN 설정
- 몇 가지 매개 변수를 설정하고 ResourceManager 데몬 및 NodeManager 데몬을 추가로 실행하여 의사 분산 모드로 YARN에서 MapReduce 작업 실행 가능함
6.3.1. 파일시스템 포맷
hdfs namenode -format |
6.3.2. NameNode 데몬 및 DataNode 데몬 실행*1)
start-dfs.sh |
- $HADOOP_LOG_DIR 디렉토리 (디폴트 : $HADOOP_HOME/logs)에서 하둡 데몬 로그를 확인할 수 있음
6.3.3. 웹브라우저를 통해 NameNode 상태 확인
http://localhost:9870/ |
6.3.4. MapReduce 작업을 실행하는 데 필요한 HDFS 디렉토리 생성
hdfs dfs -mkdir /user hdfs dfs -mkdir /user/<username> |
6.3.5. 파라미터 설정
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_MAPRED_HOME</value> </property> </configuration> |
6.3.6. ResourceManager 데몬 및 NodeManager 데몬 실행
start-yarn.sh |
6.3.7. 웹브라우저를 통해 ResourceManger 상태 확인
http://localhost:8088/ |
*1) 실행 시 “rcmd: socket: Permission denied” 와 같은 에러 메시지 발생하면 아래와 같이 명령을 실행하여 문제 해결 가능
echo "ssh" | sudo tee -a /etc/pdsh/rcmd_default |
※ References
- Hadoop: Setting up a Single Node Cluster
- Hadoop The Definitive Guide(하둡 완벽 가이드) 4판 : Appendix A 아파치 하둡 설치하기
# 변경 이력
일자 |
변경 사항 |
2020-05-07 |
etc/hadoop/core-site.xml 파일에 hadoop.tmp.dir property 추가 하둡 재기동시에 namenode가 시작하지 않는 현상이 발생하여 확인해보니 hadoop.tmp.dir을 설정하지 않았을 경우의 기본 값이 /tmp/hadoop-${user.name}이 되는데 재기동시 해당 디렉토리의 내용이 삭제되면서 namenode가 실행되지 않는 것으로 판단되어 /tmp 이외에 다른 디렉토리 설정 |