드디어 정리를 해서 올리게 됐습니다. 

하둡 (Hadoop) 클러스터링(Clustering) 은 가-분산 방식 으로 설치가 되어 있다는 가정하에 진행하겠습니다.

nobody1 -> master , namenode 
nobody2 -> datanode , secondary-namenode
nobody3 -> datanode
nobody4 -> datanode

이런 형식으로 설정을 할려고 합니다. 모든 서버는 전부 같은 계정 (예를 들면 hadoop )으로 세팅이 되어 있다고 가정합니다.

그리고 모든 서버는 서로 서로 password 없이 ssh 로 로그인이 된다는 가정이 필요합니다.

nobody1 서버에서 세팅을 하고 나머지 서버로 rsync 를 이용해서 동기화를 시켜줄 것입니다. 하둡은 설정파일에 기재되어 있는대로 동작을 하기 때문에 마스터건 슬레이브 이던간에 동일하게 동작합니다. 이들을 구분 짓는 것은 nobody1~4 만으로 구분 지을 것입니다.

conf/core-site.xml

 1<?xml version="1.0"?>
 2<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
 3
 4<!-- Put site-specific property overrides in this file. -->
 5
 6<configuration>
 7    <property>
 8        <name>fs.default.name</name>
 9        <value>hdfs://nobody1:9000</value>
10    </property>
11</configuration>

필히 바꾸어 줘야 할 중요한 설정파일입니다. fs.default.name 즉 네임노드가 저장될 위치를 지정하는 부분입니다. 기존 가-분산 방식에서 지정된 localhost 를 nobody1 으로 수정해 주면 됩니다.

conf/hdfs-site.xml

 1<?xml version="1.0"?>
 2<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
 3
 4<!-- Put site-specific property overrides in this file. -->
 5
 6<configuration>
 7    <property>
 8        <name>dfs.replication</name>
 9        <value>3</value>
10    </property>
11
12    <property>
13        <name>dfs.name.dir</name>
14        <value>/home/hadoop/work/hadoop-1.0.1/name</value>
15    </property>
16
17    <property>
18        <name>dfs.data.dir</name>
19        <value>/home/hadoop/work/hadoop-1.0.1/data</value>
20    </property>
21
22    <property>
23        <name>dfs.support.append</name>
24        <value>true</value>
25    </property>
26
27    <property>
28        <name>dfs.datanode.max.xcievers</name>
29        <value>4096</value>
30    </property>
31</configuration>
dfs.replication 의 값이 변경됐습니다. (기존 1 -> 3 으로) 복제셋의 갯수를 지정해 주는 곳입니다. 복제 셋은 한 시스템 (노드)가 다운됐을 때의 Fail Over 나 한 서버에 몰리는 부하를 나누어 주는 역할을 합니다. 3 이라고 하면 같은 데이타를 3곳으로 나누어서 (같은 데이타 3번)저장하라는 것입니다.

conf/mapred-site.xml

 1<?xml version="1.0"?>
 2<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
 3
 4<!-- Put site-specific property overrides in this file. -->
 5
 6<configuration>
 7    <property>
 8        <name>mapred.job.tracker</name>
 9        <value>nobody1:9001</value>
10    </property>
11    <property>
12        <name>mapred.system.dir</name>
13        <value>/home/hadoop/work/hadoop-1.0.1/mapred/system</value>
14    </property>
15</configuration>

mapred.job.tracker 의 값은 현재 맵-리듀스 작업을 할 때 그 작업을 각 테스크별로 분배해주는 기능을 하는 서버의 위치를 지정하게 되어 있습니다 . 네임노드가 위치한 곳과 같은 곳을 지정하게 해줍니다.

conf/masters

nobody2

masters 파일은 네임노드의 위치를 적어주는 것이라고 착각하기 쉽습니다. 정확히는 secondary name-node 의 위치를 기억시키는 파일입니다. secondary name-node 는 네임노드 (name-node) 가 죽었을 때 보조적으로 네임노드의 기능을 대신하는 서버 입니다.

conf/slaves

nobody2
nobody3
nobody4

slaves 파일은 데이터노드 (datan-node) 가 저장될 서버들을 기입해 주면 됩니다.

이제 모든 설정은 끝났습니다. 이제 분산화를 처리할 각 서버로 위의 설정파일들과 내용들을 동기화 해주면 됩니다.

$ cd /home/hadoop/work/hadoop-1.0.1
$ rsync -av . hadoop@nobody2:/home/hadoop/work/hadoop-1.0.1/
$ rsync -av . hadoop@nobody3:/home/hadoop/work/hadoop-1.0.1/
$ rsync -av . hadoop@nobody4:/home/hadoop/work/hadoop-1.0.1/


+ Recent posts