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