[hadoop] Hadoop 3 클러스터 설치

somnode·2021년 2월 9일
0

5개의 컴퓨터를 사용해서 Hadoop 클러스터를 설치한다.
Hadoop 버전 : 3.3.0

|server01|server02|server03|server04|server05|
|:---:|:---:|:---:|:---:|:---:|
|NameNode|SecondaryNameNode||||
|NodeManager|DataNode|DataNode|DataNode|DataNode|
|ResourceManager||
|JobHistoryServer||

Java 설치

> sudo apt-get install openjdk-8-jdk -y

hosts 설정

  • /etc/hosts 파일
xxx.xxx.xxx.xxx server01
xxx.xxx.xxx.xxx server02
xxx.xxx.xxx.xxx server03
xxx.xxx.xxx.xxx server04
xxx.xxx.xxx.xxx server05

password 없이 ssh 접속 설정

> sudo apt-get install openssh-server -y
> ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
> cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
> chmod 0600 ~/.ssh/authorized_keys

모든 서버의 ~/.ssh/id_rsa 파일의 내용을 합쳐서 각각의 서버의 ~/.ssh/authorized_keys 파일에 추가한다.

Hadoop 다운로드

> wget https://downloads.apache.org/hadoop/common/hadoop-3.3.0/hadoop-3.3.0.tar.gz
> sudo mkdir -p /usr/local/hadoop && sudo tar -zvxf hadoop-3.3.0.tar.gz -C /usr/local/hadoop --strip-components 1
> sudo chown -R $USER:$USER /usr/local/hadoop

Hadoop 설정

환경변수 설정

  • ~/.bashrc 파일
JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
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

core-site.xml

  • $HADOOP_HOME/etc/hadoop/core-site.xml 파일
<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://server01: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>server02:50090</value>
    </property>
</configuration>

yarn-site.xml

  • $HADOOP_HOME/etc/hadoop/yarn-site.xml 파일

Container-level 설정

하나의 컨테이너에 할당할 수 있는 값

  • yarn.scheduler.maximum-allocation-vcores
  • yarn.scheduler.minimum-allocation-vcores
  • yarn.scheduler.maximum-allocation-mb
  • yarn.scheduler.minimum-allocation-mb

Cluster-level 설정

클러스터의 각 노드에서 컨테이너 운영에 설정할 수 있는 Vcores, 메모리 총량
메모리 최대값 설정 시 노드의 OS를 운영할 기본적인 용량(대략 4G)를 제외하고 설정

  • yarn.nodemanager.resource.cpu-vcores
  • yarn.nodemanager.resource.memory-mb
<configuration>
  <property>
    <name>yarn.resourcemanager.hostname</name>
    <value>server01</value>
  </property>
</configuration>

mapred-site.xml

  • $HADOOP_HOME/etc/hadoop/mapred-site.xml 파일
<configuration>
  <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
  </property>
</configuration>

hadoop-env.sh

  • $HADOOP_HOME/etc/hadoop/hadoop-env.sh 파일
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64

workers 설정

  • $HADOOP_HOME/etc/hadoop/workers 파일
server02
server03
server04
server05

Hadoop 실행

  • Namenode가 실행되는 마스터 노드에서만 수행하면 된다.
  • workers 노드에는 datanode 디렉터리를 생성해놓아야한다.
    • 단, namenode와 datanode 디렉터리 내부는 삭제할 것.
> $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 중지

  • Namenode가 실행되는 마스터 노드에서만 수행하면 된다.
> $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/*

모든 DataNode에서 rm -rf $HADOOP_HOME/data/datanode/* 명령을 수행한다.

Web UI

0개의 댓글