Archive/하둡

아파치 하둡 : 단일 노드 설치

H2G2 2020. 3. 6. 14:16

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 이외에 다른 디렉토리 설정