BigData

GCP에 Hadoop 3.2.1 설치하기

감동이중요해 2019. 12. 22. 16:05

GCP로 생성한 우분투 18.04 인스턴스에 하둡을 설치해보았다.

 

1. 설치 준비

 

Requirement Software

  • Java
  • SSH

Hadoop의 공식 홈페이지에 따르면 위의 두 가지를 반드시 설치하라고 안내되어 있다.

 

아래의 명령어를 입력하여 Java, ssh를 설치한다.

sudo apt update
sudo apt install openjdk-8-jdk
sudo apt install openssh-server
sudo apt install pdsh

 

sshd의 권한을 설정한다.

 

sudo vi /etc/ssh/sshd_config

32라인 근처
PermitRootLogin yes로 변경

권한이 설정되면 sshd 재시작, ssh 접속 시 password가 필요하지 않게끔 변경한다.

sudo service sshd restart
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys

sudo vi /etc/pdsh/rcmd_default (ssh 입력 후 저장)

ssh localhost

 

2. 다운로드

다음은 하둡 바이너리가 압축되어 있는 파일을 다운로드 받는다.

설치할 버전은 3.2.1이다.

cd ~
wget http://mirror.navercorp.com/apache/hadoop/common/hadoop-3.2.1/hadoop-3.2.1.tar.gz
tar zxvf hadoop-3.2.1.tar.gz

 

3. Standalone 설정

압축이 해제되면 하둡을 사용할 수 있도록 설정하는 단계를 거쳐야 한다.

 

아래의 명령어를 입력하여 output 디렉토리에 출력이 기록되도록 한다.

cd ~/hadoop-3.2.1
mkdir input
cp etc/hadoop/*.xml input
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.1.jar grep input output 'dfs[a-z.\+'

 

다음은 설정 파일을 변경한다.

 

~/hadoop-3.2.1/etc/hadoop/hadoop-env.sh 파일을 수정한다.

 

54번 줄 근처에 export JAVA_HOME이 주석되어 있는 것을 볼 수 있다.

 

주석을 해제하고 설치한 자바의 위치를 적어준다.

cd ~/hadoop-3.2.1/etc/hadoop
vi hadoop-env.sh

54줄 근처의 export JAVA_HOME 주석 해제 후 자바 위치 기입
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64

 

다음은 같은 디렉토리 아래 있는 xml 파일 두 개를 수정한다.

단일 노드 환경에서 작업하도록 설정하는 과정이다.

vi core-site.xml

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
    </property>
</configuration>
vi hdfs-site.xml

<configuration>
    <property>
    	<name>dfs.replication</name>
        <value>1</value>
    </property>
</configuration>

 

다음은 환경 변수 설정이다.

 

vi ~/bashrc
(최하단으로 이동)

아래 내용 삽입
-----
export HADOOP_HOME="hadoop디렉토리/hadoop-3.2.1"
export PATH=$PATH:HADOOP_HOME/bin
export PATH=$PATH:HADOOP_HOME/sbin
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=HADOOP_HOME

export HDFS_NAMENODE_USER="사용자이름"
export HDFS_DATANODE_USER="사용자이름"
export HDFS_SECONDARYNAMENODE_USER="사용자이름"
export YARN_RESOURCEMANAGER_USER="사용자이름"
export YARN_NODEMANAGER_USER="사용자이름"
-----

source ~/.bashrc  (변경사항 적용)

bashrc가 적용되면 hdfs를 명령어로 인식할 수 있다.

HDFS으로 포맷하고 동작을 확인한다.

hdfs namenode -format
start-dfs.sh

 

5. YARN 설치 및 설정

 

 

cd $HADOOP_HOME
hdfs dfs -mkdir /user
hdfs dfs -mkdir /user/사용자명

사용자 명은 자신이 쓰고 싶은 사용자명을 입력한다.

내가 사용한 사용자명은 'minstudy1'이다.

 

 

먼저 map reduce 설정 파일을 수정한다.

vi $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>

 

다음으로, yarn 설정 파일을 수정한다.

vi $HADOOP_HOME/etc/hadoop/yarn-site.xml

<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.nodemanager.vmem-check-enabled</name>
        <value>false</value>
    </property>
</configuration>

 

6. 동작 확인

jps라고 입력하면 JVM이 6개가 동작하고 있다는 것을 알 수 있다.

 

example을 실행하여 잘 동작하는지 확인해본다.

cd $HADOOP_HOME
yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.1.jar pi 16 1000

 

정상적으로 실행되었다면, example 종료 후 아래와 같은 문구가 나타난다.

 

Estimated value of Pi is 3.14250000000000000000