빅데이터 분석 환경 구축(Docker 활용)

#2 JAVA 설치 및 Hadoop 설치

쵸비 2023. 6. 30. 16:06
728x90

Hadoop이란?

하둡(Hadoop)은 대용량 데이터를 처리하고 관리할 수 있는 오픈 소스 분산 컴퓨팅 시스템.

여러대의 컴퓨터로 이루어진 클러스터에서 데이터를 저장하고 처리하는데 사용되며, 빅 데이터를 분산하여 효율적인 처리가 가능하도록 해준다.

한 대의 컴퓨터로 처리하기 어려운 대규모 데이터를 쪼개 여러 기기에 나눠 처리함으로써 병렬적으로 데이터 처리가 가능해지고, 빠른 처리 시간을 달성할 수 있다.

주요 구성요소로는 HDFS(Hadoop Distributed File System) MapReduce가 있으며, 다양한 데이터 처리 작업에 적용됩니다.

 

HDFS는 실습하면서 자주 보게된다. JAVA를 설치하는 이유는 Hadoop이 JAVA기반으로 이루워진 분산 데이터 처리 프레임워크이기 때문에 설치가 필요하며 8버전과 호환되므로 우리는 8버전을 다운받아준다.

 

[java 8 설치]

# Java 8 설치
apt-get install -y openjdk-8-jdk

# Java 버전 확인
java -version

# Java 경로 확인
find / -name java-8-openjdk-amd64 2>/dev/null
# /usr/lib/jvm/java-8-openjdk-amd64

#java 폴더명 수정
mv /usr/lib/jvm/java-8-openjdk-amd64 /usr/lib/jvm/java

설치가 완료됐으면 환경설정을 해주자

[ Java 환경설정 ]

# Java 시스템 환경변수 등록 및 활성화
vim /etc/environment

# 아래 내용 추가 후 저장
PATH 뒤에 ":/usr/lib/jvm/java/bin" 추가
PATH 아래에 JAVA_HOME="/usr/lib/jvm/java"

# 시스템 환경변수 활성화
source /etc/environment

# 사용자 환경변수 등록
echo 'export JAVA_HOME=/usr/lib/jvm/java' >> ~/.bashrc

# 사용자 환경변수 활성화
source ~/.bashrc

시스템 환경변수를 등록해주는 이유는 시스템이 Java 설치 경로를 알 수 있도록 해주기 위함이며 PATH 뒤에 Java 실행이 가능한 디렉토리 경로를 시스템이 알 수 있게끔 해줍니다.

시스템 환경 변수와 사용자 환경 변수 모두 설정하면, 해당 애플리케이션 환경이 다양한 사용자 계정 및 시스템에서 일관성 있는 접근을 가능하게 해주기에 중요한 작업입니다!

항상 문제가 있었을 때 체크해보면 환경변수 설정문제가 많이 있으므로 잘 체크해보자

 

다음은 Apache Hadoop 3.2.3를 설치하고 환경설정을 진행

하둡 클러스터를 사용하기 위해서는 hdfs-site.xml, hdfs-site.xml, core-site.xml, yarn-site.xml, mapred-site.xml, ㅎgadoop-env.sh, workers, masters 를 편집해주자

 

[ Hadoop 설치 ]

  • Apache Hadoop 3.2.3 설치 및 압축 해제
# 설치파일 관리용 download폴더를 만들어 준다.
cd /
mkdir download
cd download

# Hadoop 3.2.2 설치
wget <https://dlcdn.apache.org/hadoop/common/hadoop-3.2.3/hadoop-3.2.3.tar.gz>

# Hadoop 3.2.2 압축 해제
tar -zxvf hadoop-3.2.3.tar.gz -C /usr/local

# Hadoop 디렉토리 이름 변경
mv /usr/local/hadoop-3.2.3 /usr/local/hadoop

[ Hadoop 환경설정 ]

# Hadoop 시스템 환경변수 설정
vim /etc/environment

# 아래 내용 추가 후 저장
PATH 뒤에 ":/usr/local/hadoop/bin" 추가
PATH 뒤에 ":/usr/local/hadoop/sbin" 추가
PATH 아래에 HADOOP_HOME="/usr/local/hadoop"

# 시스템 환경변수 활성화
source /etc/environment

# Hadoop환 사용자 환경변수 설정
vi ~/.bashrc

#PageDown을 입력해서 가장 하단으로 이동후 아래 내용 작성

export HADOOP_HOME=/usr/local/hadoop
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop
export HADOOP_YARN_HOME=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME

#insert가 없게 esc를 눌러주고 없다면 :wq를 눌러 저장하고 나오자

# 사용자 환경변수 활성화
source ~/.bashrc
  • hdfs-site.xml 파일 편집

: HDFS에서 사용할 환경 정보를 설정하는 파일이다. hdfs-site.xml 에 설정 값이 없을 경우 hdfs-default.xml 을 기본으로 사용한다.

# hdfs-site.xml 편집
vim $HADOOP_HOME/etc/hadoop/hdfs-site.xml

# 아래 내용으로 수정 후 저장
<configuration>
    **<!-- configuration hadoop -->**
    <property>
        <name>dfs.replication</name>
        <value>2</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.journalnode.edits.dir</name>
        <value>/usr/local/hadoop/data/dfs/journalnode</value>
    </property>
    <property>
        <name>dfs.nameservices</name>
        <value>my-hadoop-cluster</value>
    </property>
    <property>
        <name>dfs.ha.namenodes.my-hadoop-cluster</name>
        <value>namenode1,namenode2</value>
    </property>
    <property>
        <name>dfs.namenode.rpc-address.my-hadoop-cluster.namenode1</name>
        <value>nn1:8020</value>
    </property>
    <property>
        <name>dfs.namenode.rpc-address.my-hadoop-cluster.namenode2</name>
        <value>nn2:8020</value>
    </property>
    <property>
        <name>dfs.namenode.http-address.my-hadoop-cluster.namenode1</name>
        <value>nn1:50070</value>
    </property>
    <property>
        <name>dfs.namenode.http-address.my-hadoop-cluster.namenode2</name>
        <value>nn2:50070</value>
    </property>
    <property>
        <name>dfs.namenode.shared.edits.dir</name>
        <value>qjournal://nn1:8485;nn2:8485;dn1:8485/my-hadoop-cluster</value>
    </property>
    <property>
        <name>dfs.client.failover.proxy.provider.my-hadoop-cluster</name>
        <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
    </property>
    <property>
        <name>dfs.ha.fencing.methods</name>
        <value>shell(/bin/true)</value>
    </property>
    <property>
        <name>dfs.ha.fencing.ssh.private-key-files</name>
        <value>/home/ubuntu/.ssh/id_rsa</value>
    </property>
    <property> 
        <name>dfs.ha.automatic-failover.enabled</name>
        <value>true</value>
    </property>
    <property>
        <name>dfs.name.dir</name>
        <value>/usr/local/hadoop/data/name</value>
    </property>
    <property>
        <name>dfs.data.dir</name>
        <value>/usr/local/hadoop/data/data</value>
    </property>
</configuration>

hdfs-site.xml 파일의 내용이 많아 나중에 따로 정리해보자..

 

  • core-site.xml 파일 편집

: Hadoop 시스템 설정 파일이다. 네트워크 튜닝, I/O 튜닝, 파일 시스템 튜닝, 압축 설정 등 Hadoop 시스템 설정을 할 수 있다. HDFS와 MapReduce에서 공통적으로 사용할 환경 정보를 입력할 수 있다. core-site.xml 설정 값이 없으면, core-default.xml 을 기본으로 사용한다.

# core-site.xml 편집
vim $HADOOP_HOME/etc/hadoop/core-site.xml

# 아래 내용으로 수정 후 저장
<configuration>
        <property>
                <name>fs.default.name</name>
                <value>hdfs://nn1:9000</value>
        </property>
        <property>
                <name>fs.defaultFS</name>
                <value>hdfs://my-hadoop-cluster</value>
        </property>
        <property>
                <name>ha.zookeeper.quorum</name>
                <value>nn1:2181,nn2:2181,dn1:2181</value>
        </property>
</configuration>
  • core-site.xml 파일 속성
    • fs.default.name: HDFS의 기본 통신 주소를 지정한다.
    • fs.defaultFS : HDFS 기본 파일시스템 디렉토리를 지정한다.
    • ha.zookeeper.quorum : Zookeeper가 설치되어 동작할 서버의 주소를 기재한다.(여기서 포트는 2181)

 

 

  • yarn-site.xml 파일 편집

: Resource Manager 및 Node Manager에 대한 구성을 정의한다.

# Hadoop yarn-site.xml 파일 설정
vim $HADOOP_HOME/etc/hadoop/yarn-site.xml

# 아래 내용으로 수정 후 저장
<configuration>
        <!-- Site specific YARN configuration properties -->
        <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>
        <property>
                <name>yarn.resourcemanager.hostname</name>
                <value>nn1</value>
        </property>
        <property>
                <name>yarn.nodemanager.vmem-check-enabled</name>
                <value>false</value>
        </property>
</configuration>
  • mapred-site.xml 파일 편집

: MapReduce 어플리케이션 설정 파일이다.

# Hadoop mapred-site.xml 파일 설정
vim $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파일 편집
# Hadoop hadoop-env.sh 파일 설정
vim $HADOOP_HOME/etc/hadoop/hadoop-env.sh

# 아래 내용 수정 후 저장
# Java
export JAVA_HOME=/usr/lib/jvm/java

# Hadoop
export HADOOP_HOME=/usr/local/hadoop

##필요에 따라 추가해주어야 하는 환경변수
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
export HDFS_JOURNALNODE_USER=root
export HDFS_ZKFC_USER=root

 

  • Hadoop workers 편집

: Hadoop의 worker로 동작할 서버 호스트 이름을 설정한다.

# Hadoop workers 편집
vim $HADOOP_HOME/etc/hadoop/workers

# 아래 내용 수정 후 저장
# localhost << 주석 처리 또는 제거
dn1
dn2
dn3

 

  • Hadoop masters 편집

: Hadoop의 master로 동작할 서버 호스트 이름을 설정한다.

# Hadoop masters 편집
vim $HADOOP_HOME/etc/hadoop/masters

# 아래 내용 수정 후 저장
nn1
nn2

 

여기까지 이상없이 성공했다면 JAVA와 Hadoop설치 완료

 

출처 : 빅공잼

728x90