(※ 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을 알아봅시다.

 

http://hadoop.apache.org

위 사이트에서 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/*


 

위 사진처럼 되신다면 성공입니다.

 

참고 : http://blog.naver.com/adonis50/178774994

         http://blog.naver.com/gyrbsdl18/173310038

CentOS를 최소설치 한 경우에는 ssh가 설치 되어있지 않으므로

아래 처럼 설치를 하기위해 명령어를 입력해 줍니다.

 

 

# yum -y install openssh-server openssh-clients

 

위 명령어를 치시면 자동으로 설치가 됩니다.(인터넷이 연결되었을 경우입니다.)

위 설치를 ssh를 연결할 가상머신에 모두 설치해 줍니다.

 

이제 접속할 때 비밀번호를 묻지않고 접속이 가능하도록 각각의 가상머신의 공개키를 생성해 줍니다.


위 명령어를 입력한뒤

따로 입력하라는 명령은 전부다 엔터만 쳐서 넘어가 주시면 됩니다.

 


위 처럼 나오게 되면 성공입니다.

 

이제 공개키를 각 가상머신에 배포해야 합니다.

각 가상머신의 공개키 파일의 이름이 똑같으므로 이름을 바꿔주도록 하겠습니다.


# cd .ssh

# mv id_rsa.pub forth.pub

 

위 과정은 모든 가상머신에 필요한 과정입니다.

 

이제 연결할 가상머신들의 ip주소가 필요합니다.

저의 경우 4대의 가상머신을 연결할텐데요.

호스트명     ip

first            192.168.0.16

second      192.168.0.17

third           192.168.0.15

forth           192.168.0.14


위 네대의 가상머신을 연결해 보겠습니다.

 

우선 위 네대의 가상머신을 호스트명으로 인식할 수 있도록 설정해 봅시다.

 

우선 forth의 변경을 해보겠습니다.

 

 

# vi /etc/hosts

위 명령어를 입력하면

 

위 사진처럼 되어 있는 것을 볼 수 있습니다.


위 처럼 파일을 바꿔줍니다.

맨 윗줄의 localhost를 해당 가상머신에 해당하는 호스트명으로 바꿔주고

아래에 다른 가상머신들의 ip와 호스트명을 입력해 줍니다.

한줄당 한 가상머신의 'ip     호스트명' 순으로 입력해 줍니다.

 

그 다음 현재 가상머신의 호스트명을 바꿔줍니다.

다음 명령어를 입력해 줍니다.

 

# vi /etc/sysconfig/network

 


여기서 HOSTNAME='호스트명'

호스트명에 해당 가상머신의 호스트명을 적어주고 저장해 주면 됩니다.

그리고 가상머신을 다시 재부팅해주시면 호스트명이 바뀌게 됩니다.

 

이제 각각의 가상머신에서 만들었던 공개키를 다른 가상머신에게 보내봅시다.

 

위 사진처럼

 

# cd ~/.ssh

# scp 보낼파일명 계정명@호스트명:~/.ssh

(보낼파일은 위에서 만든 .pub파일입니다. 계정명과 호스트명는 보낼 가상머신의 계정명과 호스트명을 적습니다.)

명령어를 입력하면

yes/no를 물어보며 이 때는 yes

보낼 가상머신의 비밀번호를 넣으면 전송이 완료됩니다.

 

pub파일의 전송은 (위에서 말한 호스트명을 예로 설명드리겠습니다.)

first 에서 second, third, forth

second에서 first, third, forth

third에서 first, second, forth

forth에서 first, second, third

이렇게 위 전송을 시행해 줍니다.

 

그 뒤에는 공개키를 저장해야 합니다.


모든 가상장치에서

# cd ~/.ssh

# cat first.pub >> authorized_keys

# cat second.pub >> authorized_keys

# cat third.pub >> authorized_keys

# cat forth.pub >> authorized_keys

 

위 명령어들을 실행합니다.

 

그 다음

# ssh 호스트명

(접속할 호스트명을 넣으시면 됩니다.)

이라고 명령어를 입력하면 비밀번호를 묻지 않고 접속이 된다면 성공입니다.

이번엔 여러 가상머신의 CentOS와 연결하기 위한 네트워크 설정을 해보도록 하겠습니다.

※네트워크 설정1에서 설정한 NAT는 가상머신 끼리는 연결이 되지 않습니다.

 

우선 가상머신을 선택한 뒤, '설정(S)'버튼을 눌러줍니다.


 

'어댑터 2'를 클릭해 위 사진처럼

'브리지 어댑터'로 설정해 줍니다.

 


위 사진처럼

 

# cd /etc/udev/rules.d

# vi 70-persistent-net.rules
이라고 명령어를 치면


현재 연결된 네트워크 어댑터의 정보가 표시되는 파일입니다.

 


 

위 정보에서 보면 'eth0'와 'eth1'이 있습니다. 현재 저희는 브리지 어댑터를 어댑터 2에 연결하였으므로 브리지 어댑터의 정보는 eth1입니다.

위 파일에서 필요한 정보는 'eth1'의 'ATTR{address}'의 값이 필요합니다.

ATTR값을 잠시 저장해두고, 다음으로 갑니다.

 


 

 

위 사진처럼 

# cd /etc/sysconfig/network-scripts

# ls

명령어를 치면 위 사진처럼 나옵니다.

 

여기서 ifcfg-eth1이 있을 경우

# vi ifcfg-eth1

 

여기서 ifcfg-eth1이 없을 경우

# cp ifcfg-eth0 ifcfg-eth1

# vi ifcfg-eth1

 


 

위 사지처럼 'ifcfg-eth1'을 수정해 줍니다.

 


 

그 다음 위 사진처럼

# service network restart

라고 쳐주면 네트워크가 다시 시작됩니다.

 


 

다시

# ifconfig

위 명령어를 쳐주면

 

eth1이 추가된 것을 볼 수 있습니다.

이렇게 되면 성공입니다. 

+ Recent posts