하둡 클러스터 설치

스르륵·2022년 9월 30일
0

The Ultimate Hands-On Hadoop: Tame your Big Data!

이 강의를 따라 Hadoop에 대해 공부하려고한다.

강의에서는 Ambari에서 배포하는 하둡 배포판을 사용하지만 직접 설치하여 구성하고 강의를 들어보려고 한다. 클러스터 구성도 싱글 노드가 아니라 5개의 서버로 구성했다.
일단 설치 후 간단하게 사용하면서 HDFS나 MapReduce 등에 대해 더 자세히 알아볼 것이다.

server01server02server03server04server05
NameNodeSecondaryNameNode
NodeManagerDataNodeDataNodeDataNodeDataNode
ResourceManager
JobHistoryServer

Java 설치

openjdk-11-jre를 설치했다.
apt-get install 혹은 소스를 받아 직접 설치하면 된다.
설치되어있던 java11을 사용한 것인데 하둡 3.3버전 이상부터 Java11 런타임 실행이 가능하다. 하둡 컴파일은 Java8으로만 가능하다

hosts 설정

/etc/hosts 파일에 하둡 서버들의 호스트명을 적어준다.

192.168.XX.XX hadoop-server-01
192.168.XX.XX hadoop-server-02
192.168.XX.XX hadoop-server-03
192.168.XX.XX hadoop-server-04
192.168.XX.XX hadoop-server-05

이때 ubuntu계정을 사용했는데 hosts 파일이 root 계정의 소유로 접근 불가해서 호스트명으로 노드간 통신에 에러가 있었다.

ssh 접속 password 없이 설정

ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop-server-01
ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop-server-02
ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop-server-03
ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop-server-04
ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop-server-05

마스터 노드의 역할을 할 1번 서버에서 key를 생성하고 모든 서버의 authorized_key 파일에 내용을 추가

하둡 다운로드 및 설치

Apache Hadoop

3.3.4 버전을 사용할 것이다. (Java11 설치했으니 3.3 버전 이상 사용해야 함)

sudo mkdir -p /usr/local/hadoop
sudo tar -xvzf /usr/local/hadoop-3.3.0.tar.gz -C /usr/local/hadoop --strip-components 1
sudo chown -R $USER:$USER /usr/local/hadoop

$HADOOP_HOME 으로 사용할 디렉토리를 만들어주고 다운받은 파일을 압축풀어주면 설치는 끝

모든 서버에 동일하게 진행해주면 된다.

Hadoop 설정

마스터에서만 해줘도 괜찮은 것 같다.

환경변수 설정

# .bashrc
JAVA_HOME=<JAVA 설치 디렉토리>
HADOOP_HOME=/usr/local/hadoop
YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop
HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop

export JAVA_HOME HADOOP_HOME YARN_CONF_DIR HADOOP_CONF_DIR
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HADOOP_HOME/lib/native
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

소스로 자바를 설치한 서버는 $JAVA_HOME을 당연히 알고 있었지만 깔려있던 곳은 알수가 없었다. 설정도 안되어있었고. 자바 실행에는 문제가 없지만 이후 하둡 실행 시 필요한 부분이기 때문에 여기서 알아두고 같이 설정할 필요가 있다.

# 자바 홈 디렉토리 찾기
java -XshowSettings:properties -version 2>&1 > /dev/null | grep 'java.home'

core-site.xml

# $HADOOP_HOME/etc/hadoop/core-site.xml
<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop-server-01:9000</value>
    </property>
</configuration>

hdfs-site.xml

# $HADOOP_HOME/etc/hadoop/hdfs-site.xml
<configuration>
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>   # 네임노드 경로
        <value>/usr/local/hadoop/data/namenode</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>   # 데이터노드 경로
        <value>/usr/local/hadoop/data/datanode</value>
    </property>
    <property>
        <name>dfs.namenode.secondary.http-address</name>   # 세컨더리 네임노드 설정
        <value>hadoop-server-02:50090</value>
    </property>
</configuration>

yarn-site.xml

# $HADOOP_HOME/etc/hadoop/yarn-site.xml
<configuration>
        <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>hadoop-server-01</value>
        </property>
      <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name>
        <value>org.apache.hadoop.mapred.ShuffleHandler</value>
    </property>
</configuration>

mapred-site.xml

# $HADOOP_HOME/etc/hadoop/mapred-site.xml
<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    <property>
      <name>yarn.app.mapreduce.am.env</name>
      <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
    </property>
    <property>
      <name>mapreduce.map.env</name>
      <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
    </property>
    <property>
    <name>mapreduce.reduce.env</name>
      <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
    </property>
</configuration>

hadoop-env.sh

export JAVAHOME=/MY/JAVA/HOME/DIRECTORY

하둡이 실행되면서 ssh 접속을 하게 되는데, 이때 환경변수가 초기화된다고 한다. 그래서 자바홈 변수를 설정해준다

worker 설정

# $HADOOP_HOME/etc/hadoop/worker
hadoop-server-02
hadoop-server-03
hadoop-server-04
hadoop-server-05

하둡 실행 및 중지

# 실행
$HADOOP_HOME/bin/hdfs namenode -format -force
$HADOOP_HOME/sbin/start-dfs.sh
$HADOOP_HOME/sbin/start-yarn.sh
$HADOOP_HOME/bin/mapred --daemon start historyserver
# 중지
$HADOOP_HOME/sbin/stop-dfs.sh
$HADOOP_HOME/sbin/stop-yarn.sh
$HADOOP_HOME/bin/mapred --daemon stop historyserver
rm -rf $HADOOP_HOME/data/namenode/*

Web UI 확인

profile
기록하는 블로그

0개의 댓글