본문 바로가기
HADOOP

[ HADOOP ] 하둡 설치 (1.0.x) - Cluster Setup

by 정윤재 2012. 9. 19.

하둡 설치

 

1. http://hadoop.apache.org 에서 다운로드 받는다.

(내가 받을 때는 stable 버전은 1.0.x 버전 이었다.)

 

2. tar xvfz hadoop-1.0.1.tar.gz 로 압축을 푼다. (모든 장비에 설치)
(나는 huser 계정을 만들어서 /usr/local 하위에 풀었음)

 

3. cd ~ 로 사용자 home 디렉토리로 이동함
   vi .bashrc 로 환경 변수를 설정해 줌


   (grep root /etc/passwd 명령으로 사용쉘이 뭔지 확인 후)

   export JAVA_HOME=/usr/local/jdk1.6.0_32
   export HADOOP_INSTALL=/usr/local/hadoop-1.0.1
   export PATH=$PATH:$HADOOP_INSTALL/bin
  
   와 같이 환경 변수 설정을 해 준다.(모든 장비에 설정)

   source .bashrc 명령으로 적용해 준다.

 

3. hadoop version 명령으로 정상적인 소스인지 확인 한다.
(그림 참조)

 

 

4. hostname 을 설정 한다. (모든 장비에 설정)

vi /etc/hosts

예)

xxx.xxx.xxx.121 namenode
xxx.xxx.xxx.122 secondarynamenode
xxx.xxx.xxx.123 datanode1
xxx.xxx.xxx.124 datanode2
xxx.xxx.xxx.125 datanode3


5. ssh 환경 설정 (namenode에서 나머지 모든 서버에 접속 할 때

비밀번호 물어보지 않게 설정한다.)

 

하둡 파일시스템은 ssh 기반으로 동작하는데 비밀번호를 물어보게

되면 연결 될 때 문제가 생기므로 자동으로 로그인이 되도록

설정해 두어야 함 (namenode -> 모든 장비에 복제 함)

ssh-keygen -t rsa

ssh-copy-id -i ~/.ssh/id_rsa.pub huser@hostname또는 ip
(ssh 키 복제 하여 비밀번호 물어보지 않도록 설정)

//ssh 설정은 신경을 많이 써야 하는 부분이다. 보통 이것 때문에 시작이 안되서 엄청 헤매게 된다.
//SHUTDOWN_MSG: Shutting down DataNode at java.net.UnknownHostException: 와 같이 에러가 발생 하는 경우가
//보통인데 이 현상의 해결은 hostname 을 바꾸는 것이다. 아래 링크에서 다시 다루도록 하겠다.
//http://shonm.tistory.com/entry/Linux-hostname-변경
//일단 namenode -> 다른 서버들 , 다른 서버들 -> namenode 로 ssh 로 비밀번호 없이 접속 되는 상황이 기본이다.


6. /usr/local/hadoop-1.0.1/conf 의 hadoop-env.sh 파일 설정 변경 (모든 장비에 설정)

vi /usr/local/hadoop-1.0.1/conf/hadoop-env.sh (모든 장비에 설정)

export JAVA_HOME=/usr
export HADOOP_HOME=/usr/local/hadoop-1.0.1


7. conf/core-site.xml 파일을 설정 한다. (모든 장비에 설정)
(/usr/local/hadoop-1.0.1/src/core/core-default.xml 을 참조 해서 설정한다.)

vi /usr/local/hadoop-1.0.1/conf/core-site.xml

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>


<configuration>
<property>
  <name>hadoop.tmp.dir</name>
  <value>/tmp/hadoop-${user.name}</value>
</property>
<property>
  <name>fs.default.name</name>
  <value>hdfs://namenode:9000</value>
</property>
<property>
  <name>fs.checkpoint.dir</name>
  <value>/usr/local/hadoop-1.0.1/namesecondary</value>
</property>

</configuration>


8. hdfs-site.xml 파일을 설정 한다. (모든 장비에 설정)
(/usr/local/hadoop-1.0.1/src/hdfs/hdfs-default.xml 파일을 참고 한다.)

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
  <name>dfs.name.dir</name>
  <value>/usr/local/hadoop-1.0.1/name</value>
</property>
<property>
  <name>dfs.data.dir</name>
  <value>/home/huser/data1,/home/huser/data2</value>
</property>
<property>
  <name>dfs.replication</name>
  <value>3</value>
</property>
<property>
  <name>dfs.secondary.http.address</name>
  <value>secondarynamenode:9002</value>
</property>
</configuration>

 

9. conf/masters 파일에 secondary namenode 를 설정 한다. (모든 장비에 설정 - namenode 아님 secondary name node 임)
secondarynamenode

 

10. conf/slaves 파일에 datanode 들을 설정 한다. (모든 장비에 설정)
datanode1
datanode2
datanode3


11. 맵리듀스를 위한 conf/mapred-site.xml 파일을 설정 한다. (모든 장비에 설정)
(/usr/local/hadoop-1.0.1/src/mapred/mapred-default.xml 파일 참조)


<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
  <name>mapred.job.tracker</name>
  <value>namenode:9001</value>
</property>
<property>
  <name>mapred.system.dir</name>
  <value>/usr/local/hadoop-1.0.1/mapred/system</value>
</property>
<property>
  <name>mapred.child.java.opts</name>
  <value>-Xmx200m</value>
</property>
</configuration>

 

 

12. 지금 까지 설정 해 준 내용 (hadoop-env.sh,core-site.xml,hdfs-site.xml,mapred-site.xml)을
다른 노드들에도 다 설정해 준다. (나의 경우엔 hadoop-env.sh 파일은 수정 해 주고 나머지는 copy 했다)

 

 

13. 네임 노드 포맷 (namenode 장비에서만 해주면 된다)

bin/hadoop namenode -format

14. 하둡 및 맵리듀스 실행

bin/start-all.sh

15. 각 서버 마다 들어가서 jps 명령으로 정상 작동 하는지 확인 해 본다.

shell>jps

huser@namenode:~$ jps
19664 NameNode
20011 Jps
19836 JobTracker

[huser@secondarynamenode conf]$ jps
31904 Jps
31648 SecondaryNameNode

[huser@datanode1 conf]$ jps
31539 DataNode
31904 Jps
31744 TaskTracker

[huser@datanode2 conf]$ jps
5997 TaskTracker
5776 DataNode
6773 Jps

huser@datanode3:~$ jps
27114 Jps
26516 DataNode
26955 TaskTracker

 


16. 웹브라우저에서 http://master id:50070 , http://master id:50030 쳐서 정상적으로 실행 되고 있는지 확인

50070  예)

 

 

 

 

50030 예)

 



댓글