완전 분산 모드에서는 두대 이상의 컴퓨터를 이용해 실제 분산 환경을 구축한다.
우분투 10.04 LT 를 마스터, 윈도우 XP 32bit를 슬레이브로 완전 분산 모드를 구축해보았다.
윈도우 비스타, 7에서는 cygwin_sshd 서비스를 시작하는데 문제가 있어 xp를 사용하였다.
1. 마스터 파일 설정
1) conf/core-site.xml 파일 수정
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://마스터IP:9000</value>
</property>
</configuration>
2) conf/hdfs-site.xml 파일 수정
<configuration>
<property>
<name>dfs.name.dir</name><value>/hdfs/name</value>
</property>
<property>
<name>dfs.data.dir</name><value>/hdfs/data</value>
</property>
<property>
<name>dfs.replication</name><value>2</value>
</property>
<property>
<name>dfs.block.size</name><value>1048576</value>
</property>
</configuration>
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
</configuration>
3) conf/mapred-site.xml 파일 수정
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>마스터ip:9001</value>
</property>
<property>
<name>mapred.system.dir</name>
<value>/hdfs/mapreduce/system</value>
</property>
<property>
<name>mapred.local.dir</name>
<value>/hdfs/mapreduce/local</value>
</property>
</configuration>
4) masters 파일 수정
마스터ip
5) slaves 파일 수정
마스터ip
슬레이브ip
2. 슬레이브 파일 설정
1) conf/core-site.xml 파일 수정
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://마스터IP:9000</value>
</property>
</configuration>
2) conf/hdfs-site.xml 파일 수정
<configuration>
<property>
<name>dfs.name.dir</name>
<value>/hdfs/name</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/hdfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.block.size</name>
<value>1048576</value>
</property>
</configuration>
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
</configuration>
3) conf/mapred-site.xml 파일 수정
<configuration>
<property>
<name>mapred.job.tracker </name>
<value>슬레이브ip:9001</value>
</property>
<property>
<name>mapred.system.dir</name>
<value>/hdfs/mapreduce/system</value>
</property>
<property>
<name>mapred.local.dir</name>
<value>/hdfs/mapreduce/local</value>
</property>
</configuration>
4) masters, slaves
수정 안해도 됨
3. 암호문 없이 ssh 접속 가능하게 설정 (마스터와 슬레이브 모두 시행)
(아래 명령어를 이용해 localhost를 신뢰관계로 등록한다.
$ ssh-keygen
엔터
엔터
엔터
$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
4. 상호간 ssh 접속 가능하게 설정
1) 서로 신뢰관계 등록
마스터의 ~/.ssh/authorized_keys에 슬레이브의 id_dsa.pub파일 내용을 붙인다.
슬레이브의 ~/.ssh/authorized_keys에 마스터의 id_dsa.pub파일 내용을 붙인다.
2) 포트 개방
윈도우 클라이언트의 방화벽에서 22번 포트를 예외로 등록한다.
리눅스 클라이언트의 방화벽에서 22번 포트를 예외로 등록한다.
(sudo apt-get install firestarter 명령어를 통해 firestarter를 설치하고 policy에 포트를 추가하면 된다.)
3) 테스트
마스터와 슬레이브에서 ssh 마스터, ssh 슬레이브 명령어를 통해 접속에 이상없는지
여부를 테스트 한다.
5. 실행
1) 마스터에서 새로운 분산 파일 시스템 포맷 (슬레이브에서는 실행안함)
$ bin/hadoop namenode -format
2) Hadoop 데몬 실행
$ bin/start-all.sh
4. 확인
1) jps 명령어를 통한 하둡 데몬 확인
$ jps
(마스터 - Jps, NameNode, SecondaryNameNode,
TaskTracker, JobTracker, DataNode)
(슬레이브 - Jps, DataNode, TaskTracker)
2) 네임노드 및 잡 트랙커를 웹 브라우져를 통해 확인
http://localhost:50070/ - NameNode
http://localhost:50030/ - JobTracker
3) 테스트
$ ./bin/hadoop fs -put conf input
(인풋 파일을 분산 파일 시스템에 복사)
$ ./bin/hadoop jar hadoop-0.20.2-examples.jar grep input output 'dfs[a-z.]+'
3) 출력 파일 검사
$ bin/hadoop fs -get output output
(아웃풋 파일을 분산 파일 시스템에서 로컬 파일 시스템으로 복사)
$ cat output/*
or 분산 파일 시스템에서 아웃풋 파일을 직접 볼 수 있다.
$ bin/hadoop fs -cat output/*
5. 종료
$ bin/stop-all.sh
(데몬 종료)