Hadoop MultiNode 설치
준비
MultiNode를 설치를 시작하기 전에 Hadoop SingleNode 설치 을 참고하여 먼저 SingleNode 세팅 후 정상동작을 확인하고 MultiNode를 설정하도록 한다.
MultiNode이므로 hadoop1 서버는 namenode 서버이고, 나머지 노드는 datanode 서버로 설정한다.
1번 node는 namenode 와 datanode 모두 사용할 것이다.
서버 | 구성 |
---|---|
hadoop1 | namenode , datanode |
hadoop2 | datanode |
hadoop3 | datanode |
hadoop4 | datanode |
hadoop5 | datanode |
각각 node 에 /etc/hosts파일에 hostname을 등록한다.
#file : /etc/hosts
192.168.0.1 hadoop1
192.168.0.2 hadoop2
192.168.0.3 hadoop3
192.168.0.4 hadoop4
192.168.0.5 hadoop5
/etc/hosts 에 hostname이 잘 등록되었는지 확인한다.
[hadoop1]$ ping hadoop1;
[hadoop1]$ ping hadoop2;
[hadoop1]$ ping hadoop3;
[hadoop1]$ ping hadoop4;
[hadoop1]$ ping hadoop5;
설치 및 환경파일 setting
singleNode 구성 후, multiNode로 변경하는 경우이므로 singleNode 설치에 관한 내용은 Hadoop SingleNode 설치 참고
ssh공개키 인증을 통하여, 패스워드 없이 namenode(hadoop1)에서 각 node로 ssh 접속이 가능한지 확인한다.
[hadoop1]$ ssh hadoop@hadoop1;
[hadoop1]$ ssh hadoop@hadoop2;
[hadoop1]$ ssh hadoop@hadoop3;
[hadoop1]$ ssh hadoop@hadoop4;
[hadoop1]$ ssh hadoop@hadoop5;
패스워드 없이 ssh 접속이 불가능할 경우 각 node에서 ssh key 생성, namenode(hadoop1)의 ssh키를 각 node 에 배포해야 한다.
- 각 node에서 ssh-key생성 및 authorized_keys 파일 생성
# ssh-key 생성
[hadoop1]$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa;
....
[hadoop5]$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa;
# authorized_keys파일생성
[hadoop1]$ touch ~/.ssh/authorized_keys;
[hadoop1]$ chmod 0600 ~/.ssh/authorized_keys;
....
[hadoop5]$ touch ~/.ssh/authorized_keys;
[hadoop5]$ chmod 0600 ~/.ssh/authorized_keys;
- namenode의 ssh 공개키를 각 노드에 배포
[hadoop1]$ ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop@hadoop1;
[hadoop1]$ ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop@hadoop2;
[hadoop1]$ ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop@hadoop3;
[hadoop1]$ ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop@hadoop4;
[hadoop1]$ ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop@hadoop5;
- namenode에서 각 cluster node에 password 없이 접속 가능한지 확인
$ ssh hadoop@hadoop1; ... $ ssh hadoop@hadoop5;
namenode(hadoop1) 에서 설정파일을 아래와 같이 설정한다.
Hadoop SingleNode 설치 에서 설정한 내용을 바탕으로 없는
항목은 추가하여야 하고, 이미 설정된 항목에 대해서는 수정하여야 한다.
- $(HADOOP_HOME)/etc/hadoop/core-site.xml
<configuration>
<!-- fs.default.name 은 MultiNode Cluster 의 경우, namenode URI로 설정한다. -->
<property>
<name>fs.default.name</name>
<value>hdfs://hadoop1:9000/</value>
</property>
<!--
dfs.replication 설정은 node 갯수에 맞춰서 홀수로 설정한다.
파일이 생성될 때 실제 복제 수를 지정할 수 있습니다.
생성 시 복제가 지정되지 않은 경우 기본값이 사용됩니다.
-->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
</configuration>
masters File을 생성하고, masternode(namenode) 의 hostname을 등록한다.
[hadoop1]$ touch $HADOOP_HOME/etc/hadoop/masters;
- $HADOOP_HOME/etc/hadoop/masters
hadoop1
slaves File 을 생성하고, slavenode(datanode) 의 hostname을 등록한다.
[hadoop1]$ touch $HADOOP_HOME/etc/hadoop/slaves;
- $HADOOP_HOME/etc/hadoop/slaves
hadoop1
hadoop2
hadoop3
hadoop4
hadoop5
설정이 완료되었으면, 설정파일을 수정한 masternode(hadoop1)에서 $HADOOP_HOME 디렉토리를 압축하여 Cluster 의 모든 Node에 배포한다.
[hadoop1]$ tar -cvf hadoop.tar $HADOOP_HOME;
[hadoop1]$ scp ./hadoop.tar hadoop@hadoop2:~/hadoop.tar;
....
[hadoop1]$ scp ./hadoop.tar hadoop@hadoop5:~/hadoop.tar;
masternode(hadoop1) 에서 전송받은 압축파일을 각 node에서 압축해제 한다.
[hadoop2]$ tar -cvf ~/hadoop.tar;
....
[hadoop5]$ tar -cvf ~/hadoop.tar;
실행
실행 전 hadoop 을 설치하고 namenode 를 최초 기동하는 경우라면, 기동전에 namenode format 을 해줘야 한다.
[hadoop1]$ $HADOOP_HOME/bin/hdfs namenode -format;
모든 Node에서 hadoop을 실행한다.
# hadoop.sh 에서 masters, slaves 파일의 설정을 바탕으로 각 node 마다 알아서 namenode, datanode 가 실행된다.
[hadoop1]$ $HADOOP_HOME/sbin/hadoop.sh start;
....
[hadoop5]$ $HADOOP_HOME/sbin/hadoop.sh start;
Experience
Links
hadoop2,3 버전 port List 정리
core-default.xml 설정값
hdfs-default.xml 설정값