Apache Hadoop 3.2.3를 설치하고 환경설정을 진행한다.
하둡 클러스터를 사용하기 위해서는 hdfs-site.xml, core-site.xml, yarn-sit.xml, mapred-site.xml, Hadoop-env.sh, workers, masters를 편집해야 한다.
Hadoop 설치 및 환경설정
# EC2 Ubuntu terminal
# 설치파일 관리용 디렉토리 생성
sudo mkdir /install_dir && cd /install_dir
# Hadoop 3.2.2 설치
sudo wget https://dlcdn.apache.org/hadoop/common/hadoop-3.2.3/hadoop-3.2.3.tar.gz
# Hadoop 3.2.2 압축 해제
sudo tar -zxvf hadoop-3.2.3.tar.gz -C /usr/local
# Hadoop 디렉토리 이름 변경
sudo mv /usr/local/hadoop-3.2.3 /usr/local/hadoop
# Hadoop 시스템 환경변수 설정
sudo vim /etc/environment
# 아래 내용 추가 후 저장
PATH 뒤에 ":/usr/local/hadoop/bin" 추가
PATH 뒤에 ":/usr/local/hadoop/sbin" 추가
HADOOP_HOME="/usr/local/hadoop"
# 시스템 환경변수 활성화
source /etc/environment
# Hadoop환 사용자 환경변수 설정
sudo echo 'export HADOOP_HOME=/usr/local/hadoop' >> ~/.bashrc
sudo echo 'export HADOOP_COMMON_HOME=$HADOOP_HOME' >> ~/.bashrc
sudo echo 'export HADOOP_HDFS_HOME=$HADOOP_HOME' >> ~/.bashrc
sudo echo 'export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop' >> ~/.bashrc
sudo echo 'export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop' >> ~/.bashrc
sudo echo 'export HADOOP_YARN_HOME=$HADOOP_HOME' >> ~/.bashrc
sudo echo 'export HADOOP_MAPRED_HOME=$HADOOP_HOME' >> ~/.bashrc
# 사용자 환경변수 활성화
source ~/.bashrc
hdfs-site.xml 파일 편집
HDFS에서 사용할 환경 정보를 설정하는 파일이다. hdfs-site.xml 에 설정 값이 없을 경우 hdfs-default.xml을 기본으로 사용한다.
# EC2 Ubuntu terminal
# hdfs-site.xml 편집
sudo vim $HADOOP_HOME/etc/hadoop/hdfs-site.xml
# 아래 내용으로 수정 후 저장
<configuration>
<!-- configuration hadoop -->
<!-- HDFS 파일 블럭 복제 개수를 지정한다. -->
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<!-- NameNode에서 관리할 데이터 디렉토리 경로를 지정한다. -->
<property>
<name>dfs.namenode.name.dir</name>
<value>/usr/local/hadoop/data/nameNode</value>
</property>
<!-- DataNode에서 관리할 데이터 디렉토리 경로를 지정한다. -->
<property>
<name>dfs.datanode.data.dir</name>
<value>/usr/local/hadoop/data/dataNode</value>
</property>
<!-- JournalNode는 NameNode의 동기화 상태를 유지한다.
특정 시점에 구성된 fsimage snapshot 이후로 발생된 변경 사항을 editlog라 하며,
해당 데이터의 저장 위치를 설정한다.-->
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/usr/local/hadoop/data/dfs/journalnode</value>
</property>
<!-- Hadoop 클러스터의 네임서비스 이름을 지정한다.-->
<property>
<name>dfs.nameservices</name>
<value>my-hadoop-cluster</value>
</property>
<!-- Hadoop 클러스터 네임 서비스의 NameNode 이름을 지정한다.
(","콤마로 구분하여 기재한다.)-->
<property>
<name>dfs.ha.namenodes.my-hadoop-cluster</name>
<value>namenode1,namenode2</value>
</property>
<!-- 클러스터 네임서비스에 포함되는 NameNode끼리 RPC통신을 위해,
NameNode의 통신 주소를 지정한다.(8020포트 사용)
<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>
<!-- NameNode(nn)의 WEB UI접속 주소를 지정한다(50070포트 사용)
<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>
<!-- NameNoderk editlog를 쓰고/읽을 JournalNode URL이다.
Zookeeper가 설치된 서버와 동일하게 JournalNode를 설정하면 된다.-->
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://nn1:8485;nn2:8485;dn1:8485/my-hadoop-cluster</value>
</property>
<!-- HDFS 클라이언트가 Active NameNode에 접근할 때 사용하는 Java class를 지정한다.-->
<property>
<name>dfs.client.failover.proxy.provider.my-hadoop-cluster</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<!-- Failover 상황에서 기존 Active NameNode를 차단할 때 사용하는 방법을 기재한다.-->
<property>
<name>dfs.ha.fencing.methods</name>
<value>shell(/bin/true)</value>
</property>
<!-- ha.fencing.method를 sshfence로 지정하였을 경우,
ssh를 경유하여 기존 Active NameNode를 죽이는데,
이때, passphares를 통과하기 위해 SSH Private Key FIle을 지정해야 한다.
<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>
core-site.xml 파일 편집
Hadoop 시스템 설정 파일이다. 네트워크 튜닝, I/O 튜닝, 파일 시스템 튜님, 압출 설정 등 Hadoop시스템 설정을 할 수 있다. HDFS와 MapReduce에서 공통적으로 사용할 환경 정보를 입력할 수 있다.
# EC2 Ubuntu terminal
# core-site.xml 편집
sudo vim $HADOOP_HOME/etc/hadoop/core-site.xml
# 아래 내용으로 수정 후 저장
<configuration>
<!-- HDFS의 기본 통신 주소를 지정한다-->
<property>
<name>fs.default.name</name>
<value>hdfs://nn1:9000</value>
</property>
<!-- HDFS 기본 파일시스템 디렉토리 경로를 지정한다.-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://my-hadoop-cluster</value>
</property>
<!-- Zookeeper가 설치되어 동작할 서버의 주소를 기재한다.-->
<property>
<name>ha.zookeeper.quorum</name>
<value>nn1:2181,nn2:2181,dn1:2181</value>
</property>
</configuration>
yarn-site.xml 파일 편집
Resourc Manage 및 Node Manager에 대한 구성을 정의한다.
# EC2 Ubuntu terminal
# Hadoop yarn-site.xml 파일 설정
sudo 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 어플리케이션 설정 파일이다.
# EC2 Ubuntu Terminal
# Hadoop mapred-site.xml 파일 설정
sudo 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 파일 편집
# EC2 Ubuntu terminal
# Hadoop hadoop-env.sh 파일 설정
sudo vim $HADOOP_HOME/etc/hadoop/hadoop-env.sh
# 아래 내용 수정 후 저장
# Java
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
# Hadoop
export HADOOP_HOME=/usr/local/hadoop
Hadoop workers 편집
Hadoop의 worker로 동작할 서버 호스트 이름을 설정한다.
# EC2 Ubuntu terminal
# Hadoop workers 편집
sudo vim $HADOOP_HOME/etc/hadoop/workers
# 아래 내용 수정 후 저장
# localhost << 주석 처리 또는 제거
dn1
dn2
dn3
Hadoop master 편집
Hadoop의 master로 동학할 서버 호스트 이름을 설정한다.
# EC2 Ubuntu terminal
# Hadoop masters 편집
sudo vim $HADOOP_HOME/etc/hadoop/masters
# 아래 내용 수정 후 저장
nn1
nn2
'빅데이터' 카테고리의 다른 글
빅데이터_Chapter05_Spark (0) | 2022.05.02 |
---|---|
빅데이터_Chapter05_Spark 설치 및 환경설정 (0) | 2022.04.27 |
빅데이터_Chapter03_Java 설치 및 환경설정 (0) | 2022.04.27 |
빅데이터_Chapter06_Zookeeper (0) | 2022.04.14 |
빅데이터_chapter02_하둡과 데이터과학 (0) | 2022.03.18 |