0. 시작 이전에
- VMware는 설치되어 있다는 가정하에 포스팅을 작성하였다.
- 작성자는 Hadoop 핵 초보이므로 틀린 곳이 있을 수 있다.
- 환경 : VMware 12 Pro , 호스트 : Windows 10 64 Bit (Master) / Windows 7 64 Bit (Slave), 게스트 : CentOS7 64 Bit
- 네트워크 구성도
1. 공통 설정
Vagrant를 사용해보려 했으나 Vmware는 라이선스가 필요해 사용이 어려웠다. 때문에 내 컴퓨터에서 Slave 친구들은 전부 세팅해준 후 다른 PC로 옮겼다. 별다른 건 해주지 않고 java 세팅과 yum upgrade만 해주었다.
마스터 친구는 JAVA 세팅만 일단 해주었다. VMware로 하둡을 구축할 때 호스트 피씨가 한 대라면 네트워크를 신경쓸 필요 없지만 여러 대라면 브리지를 사용하는 것이 편하다.
(네트워크 설정 그림)
/etc/hosts 파일을 수정하고 ping을 확인해본다.
2. SSH 키 배포
연결에 문제가 없다면 SSH 키를 배포에 Master에서 Slave들을 접근할 수 있게 해준다.
ssh-keygetn -t rsa
생성된 ssh key를 authorized key로 복사하여 배포해준다.
이 때에 slave 들에게 mkdir ./.ssh 폴더를 만들어주고 권한을 부여해주어야 한다.
배포 이후 ssh 접속을 확인한다.
3. Hadoop 설치
나는 2.9.2 버전을 사용하였다.
http://apache.tt.co.kr/hadoop/common/hadoop-2.9.2/
wget으로 받아준 후 적당한 곳에 둔다. tar -xvzf hadoop-2.8.2.tar.gz 로 압축을 풀어준다. 이후 환경설정을 진행한다.
/etc/profile 수정후 source /etc/profile로 적용해준다.
export JAVA_HOME=/usr/local/jdk1.8
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export JAVA_OPTS="-Dfile.encoding=UTF-8"
export CLASSPATH="."
export HADOOP_HOME=/home/centos/hadoop-2.9.2
export HDFS_NAMENODE_USER="root"
export HDFS_DATANODE_USER="root"
export HDFS_SECONDARYNAMENODE_USER="root"
export HDFS_RESOURCEMANAGER_USER="root"
export YARN_RESOURCEMANAGER_USER="root"
export YARN_NODEMANAGER_USER="root"
이후 hadoop version으로 명령어를 확인한다.
4. Hadoop 환경설정
4-1. hadoop-env.sh (master)
[root@master hadoop]# pwd
/home/centos/hadoop-2.9.2/etc/hadoop
[root@master hadoop]# vi hadoop-env.sh
25 : export JAVA_HOME=/usr/local/jdk1.8
113 : export HADOOP_PID_DIR=/home/centos/hadoop-2.9.2/pds
4-2 core-site.xml (all)
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
</configuration>
4-3 hdfs-site.xml (master)
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.permission</name>
<value>false</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/kih/hadoop-2.9.2/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/hoem/kih/hadoop-2.9.2/datanode</value>
</property>
</configuration>
4-4 hdfs-site.xml (slave)
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.permission</name>
<value>false</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/hoem/kih/hadoop-2.9.2/datanode</value>
</property>
</configuration>
4-5 mapred-site.xml (all)
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
4-6 yarn-site.xml (all)
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
</configuration>
4-7 masters/slaves (master)
vi etc/hadoop/masters
master
vi etc/hadoop/slaves
master
slave01
slave02
slvae03
각 slave 마다 hadoop 명령어를 확인한다.
5. 구동
$HADOOP_HOME/bin/hdfs namenode -format
systemctl stop firewalld.service
systemctl disable firewalld.service
namenode 포맷 후 모든 애들의 방화벽을 내려준다.
start-dfs.sh
start-yarn.sh
명령어로 시작해준다.
jps
명령어를 사용하여 제대로 떠있는지 확인해준다.
웹인터페이스에 접속해 확인해본다.
Hadoop : http://master:50070
yarn : http://master:8088
6. 실험
하둡에서 제공하는 분석 프로그램을 실행하여 제대로 작동하는지 확인한다.
[root@master hadoop-2.9.2]# hdfs dfs -mkdir /user
[root@master hadoop-2.9.2]# hdfs dfs -mkdir /user/root
[root@master hadoop-2.9.2]# hdfs dfs -mkdir /user/root/conf
[root@master hadoop-2.9.2]# hdfs dfs -mkdir /input
[root@master hadoop-2.9.2]# hdfs dfs -copyFromLocal /home/centos/hadoop-2.9.2/README.txt /input
[root@master hadoop-2.9.2]# hdfs dfs -ls /input
Found 1 items
-rw-r--r-- 2 root supergroup 1366 2019-04-04 17:46 /input/README.txt
[root@master hadoop-2.9.2]# hadoop jar s
sbin/ share/
[root@master hadoop-2.9.2]# hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.9.2.jar wordcount /input/README.txt ~/wordcount-output
map과 reduce로 진행상황을 확인할 수 있다.
결과를 조회해본다.
hdfs dfs -ls ~/wordcount-output
hdfs dfs -cat ~/wordcount-output/part-r-00000
구축이 성공적으로 이루어진 것을 확인할 수 있다.
'미분류 > Hadoop' 카테고리의 다른 글
Hadoop - Oozie 설치하기 (0) | 2019.04.10 |
---|---|
Hadoop - Zookeeper 설치하기 (0) | 2019.04.10 |
Hadoop - Pig 설치하기 (0) | 2019.04.09 |
Hadoop 실습 - jar 파일을 만들어 hdfs 사용해보기 (0) | 2019.04.05 |
CentOS7 기반으로 Hadoop Standalone 설치하기 (0) | 2019.04.01 |