(※ ssh 설치와 설정을 해주신 뒤 와주셔야 합니다.)
하둡에서는 namenode, jobtracker, datanode, tasktracker, secondarynamenode
등이 존재합니다.
이 글의 설치과정에서는
first - namenode, jobtracker
second - secondarynamenode
third - datanode, tasktracker
forth - datanode, tasktracker
위 처럼 설치를 해보겠습니다.
hadoop을 설치하기 위해 CentOS에 우선 hadoop 설치파일을 받도록 하겠습니다.
우선 wget이 필요하므로 설치가 안되신 분은 설치를 해주셔야 합니다.
# yum -y install wget
wget을 우선 설치하신 뒤,
wget으로 hadoop 설치파일을 받기위해 다운로드할 url을 알아봅시다.
위 사이트에서 Releases - Download - Download a release now!
까지 들어간 뒤
여러가지 링크 중 하나에 들어가신 뒤
현재 stable 버전을 찾아 다운로드 해주시면 됩니다.
제가 다운받을 때 stable 버전은 1.2.1이었습니다.
위에서 볼 때 다운로드 url은
http://apache.mirror.cdnetworks.com/hadoop/common/hadoop-1.2.1/hadoop-1.2.1.tar.gz
입니다.
이제 CentOS에서 받도록 하겠습니다.
위처럼
# wget http://apache.mirror.cdnetworks.com/hadoop/common/hadoop-1.2.1/hadoop-1.2.1.tar.gz
이란 명령어를 쳐주면 현재 폴더에 받을 수 있습니다.
이제 이 압축을 풀어보도록 하겠습니다.
위 사진처럼
# tar -xvzf hadoop-1.2.1.tar.gz
라고 명령어를 치시면 압축이 풀리고
hadoop-1.2.1이란 폴더가 생길 겁니다.
(선택사항)
# mv hadoop-1.2.1 /usr/local/hadoop
자신이 편한 장소로 파일을 옮겨 줍니다.
그 다음 환경설정을 해 줍니다.
위 명령어를 입력해 환경설정을 해줍니다.
파일 맨 밑에
# hadoop Environment
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
을 추가하고 저장해 줍니다.
그 뒤
# source /etc/profile
명령어를 입력해 환경설정을 적용해 줍니다.
그 다음
# cd /usr/lcoal/hadoop/conf
# vi hadoop-env.sh
위 사진처럼
export JAVA_HOME=/usr/local/java
export HADOOP_HOME_WARN_SUPPRESS="TRUE"
를 추가해 줍니다.
그 다음
#vi hdfs-site.xml
위 사진처럼
<property>
<name>dfs.name.dir</name>
<value>/usr/local/hadoop/dfs/name</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/usr/local/hadoop/dfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.http.address</name>
<value>first:9003</value> (address 변경)
</property>
위 내용을 추가해 줍니다.
그 다음
#vi core-site.xml
위 사진처럼
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop/tmp</value>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://first:9000</value> (namenode 설정)
</property>
추가해 저장해줍니다.
그 다음
#vi mapred-stie.xml
위 사진처럼
<property>
<name>mapred.job.tracker</name> (jobtracker 설정)
<value>first:9001<value>
</property>
<property>
<name>mapred.job.tracker.http.address</name> (address 변경)
<value>first:9002</value>
</property>
<property>
<name>mapred.local.dir</name>
<value>/usr/local/hadoop/mapred/local</value>
</property>
<property>
<name>mapreduce.jobtracker.staging.root.dir</name>
<value>/tmp</value>
</property>
를 추가하고 저장해 줍니다.
이제 master 파일과 slaves파일을 수정해 줍시다.
#vi masters (secnodary namenode 설정)
에는
second
를 입력해 주시고 저장해줍니다.
#vi slaves (task tracker, datanode 설정)
에는
third
forth
를 입력해 주시고 저장해줍니다.
위 처럼 해주시면 설정이 끝납니다.
이제 위 과정을 모든 가상머신에서 똑같이 해주셔야 합니다.
하지만 귀찮으므로 위 설정한 파일들을 다른 가상머신에 ssh를 이용하여 보내주도록 합시다.
#scp -r /usr/local/hadoop root@second:/usr/local/hadoop
#scp /etc/profile root@second:/etc/profile
-r을 붙여주시면 디렉토리의 모든 파일을 복사해주는 설정입니다.
위 명령어로 second 뿐만아니라 third, forth도 복사해 주셔야합니다.
(※ 각 가상머신에 자바도 설치되어 있어야 합니다.)
이제 방화벽을 풀어줍시다
#vi /etc/sysconfig/iptables
위 사진처럼
-A INPUT -m state -state NEW -m tcp -p tcp --dport 9000:90003 -j ACCEPT
-A INPUT -m state -state NEW -m tcp -p tcp --dport 50000:50010 -j ACCEPT
을 추가해 줍니다.
그뒤
#scp /etc/sysconfig/iptables root@호스트명:/etc/sysconfig/iptables
를 해서 모든 가상머신에 방화벽설정을 복사해 줍니다.
이제 각 가상머신에서
#service iptables restart
명령어를 입력해 주시면 방화벽 설정도 끝이 납니다.
위 설정을 다 끝내셨다면 이제 namenode를 포맷해 줍니다.
# hadoop namenode format
포맷을 해주신 뒤 이제 하둡을 시작해 봅시다.
# start-all.sh
이제 하둡이 시작되었습니다.
이제 host os에서
http://first의 ip:9002 (jobtracker를 볼 수 있음)
위 주소로 들어가시면 위 같은 사이트가 뜹니다.
http://first의 ip:9003 (dfs의 상태를 볼 수 있음)
위 주소로 들어가시면 위 같은 사이트가 뜹니다.
여기까지 되셨다면 성공입니다.
이제 테스트를 해봅시다.
#cd /usr/local/hadoop
#hadoop dfs -mkdir input
#hadoop dfs -put NOTICE.txt input
#hadoop jar hadoop-examples-1.2.1.jar wordcount input output
위 명령어까지 하시면 하둡이 돌아가시는 것을 보실 수 있고
#hadoop dfs -cat output/*
위 사진처럼 되신다면 성공입니다.