분산모드로 설치해 보기
리눅스 서버(CentOs 5.6) - 마스터
윈도우 (cygwin) - 슬레이브
마스터 설정
리눅스에 jdk 설치 하자.
기존에 설치되어 있는 jdk도 있지만 lib 폴더 설정등이 불편해서 자바 홈피에서 RPM 버전을 받아서 설치했다.
source /etc/profile.d/java.sh
/etc/hosts 파일을 변경하자.
192.168.1.1 master
192.168.1.2 slave1
192.168.1.1 - Linux 아이피
192.168.1.2 - 윈도우즈 아이피
ssh 설정은 리눅스(마스터)에서 키를 생성하고 이를 윈도우즈(슬레이브)에 전달하도록 한다.
$ssh-keygen -t ras
$cat id_rsa.pub >> authorized_keys
$scp .ssh/authorized_keys hadoop@slave1:/home/inking/.ssh/authorized_keys
간혹 authorized_keys를 슬레이브에 복사했는데도 마스터에서 슬레이브로 접속할 때 비밀번호를 물어보는 경우가 있다.
이때는 슬레이브의 authorized_keys 파일권한을 변경하자.
$chmod 0600 authorized_keys
설정 파일을 수정해보자.
지난번 pseudo 모드를 설정할 때와 같이 별도의 conf폴더에 복사한다.
$cp -rf conf conf.cluster
pseudo 모드때와 별반 다른게 없다. hostname을 localhost에서 master로 변경한 정도.
core-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>fs.default.name</name> q
<value>hdfs://master:9000</value>
<description>The name of the default file system. A URI whose
scheme and authority determine the FileSystem implementation.
</description>
</property>
</configuration>
mapred-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>mapred.job.tracker</name> w
<value>master:9001</value>
<description>The host and port that the MapReduce job tracker runs
at.</description>
</property>
</configuration>hdfs-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
<description>The actual number of replications can be specified when the
file is created.</description>
</property>
</configuration>
위 설정에서는 파일복제 개수(dfs.replication)를 2로 해도 상관없겠지만 느려져서 그냥 1로 설정하고 실행했다.
그 밖의 환경설정 파일들
masters 파일 수정
master
slaves 파일 수정
master
slave1
$bin/hadoop namenode -format
만약에 이전에 pseudo 모드로 실행한 적이 있다면 파일시스템을 지우고 포멧을 해주는것이 오류가 발생하지 않는다.
파일시스템의 위치는 hdfs-site.xml 에 dfs.name.dir, dfs.data.dir 속성에 의해 지정할 수 있다.
그리고 format은 마스터에서만 수행하면된다. slave에서도 별도록 format을 수행하면 에러가 발생한다.
실행하기
$bin/start-all.sh
-------------------------------------------------------------------------------------------------------
그밖의 주의할점
슬레이브(윈도우 cygwin)에서도 hosts 파일에도 master, slave1의 ip를 등록해야한다.
그리고 conf/hadoop-env.sh 파일에 JAVA_HOME설정이 서로 다를 수 있으므로 수정해 주어야하겠다.