hod 가 동작하기 위해서는 최소 3개의 노드가 필요하다. contrabass, cello, viola 세개의 노드로 구성을 한다고 가정한다.
이 중 contrabass 는 마스터 및 계산노드 역할을 하고, 나머지 cello, viola 는 계산노드 역할만 한다.
/opt/hadoop 디렉토리에 hadoop 이 설치되어 contrabass 가 namenode 가 되어 file system port 8020, web info port 50070 의 설정으로 hdfs 가 동작중이라 가정한다.
위의 설정을 따르는 /opt/hadoop/conf/hadoop-site.xml 파일의 내용이다.
<?xml-stylesheet type=”text/xsl” href=”configuration.xsl”?>
<!– Put site-specific property overrides in this file. –>
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://contrabass</value>
</property>
<property>
<name>mapred.job.tracker</name>
<value>cello:9001</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
</configuration>
여기서는 이렇게 정적으로 미리 설정된 hdfs 위에 map reduce 만 동적으로 클러스터가 구성되게 설정을 한다.
ubuntu(8.10) 에 패키징되어 있는 torque 를 설치할 때는 아래와 같은 몇가지 추가 작업을 해 주어야 한다.
마스터에 대해 (contrabass)
torque-server를 설치 하면 pbs_server를 실행 시키지 못하고 설치 스크립트가 종료한다. pbs_server -t create 를 손으로 실행을 해서 환경 설정을 해줘야 한다. 패키지 설치 스크립트에 이 부분이 빠진 듯.
dpkg –configure torque-server 를 하면 정상적으로 설치를 마무리 하고 torque-server 를 띄운다. 이걸 안해주면 synaptic 이나 update manager 를 열때마다 정상적으로 설치가 안된 패키지가 있다고 자꾸 알림 박스를 띄우니 꼭 해 준다.
sudo pbs_server -t create
sudo killall pbs_server
sudo dpkg –configure torque-server
sudo apt-get install torque-scheduler
계산노드들 각각에 대해 (contrabass, cello, viola)
torque-mom을 설치 하면 pbs_mom를 실행 시키지 못하고 설치 스크립트가 종료한다. jobs 디렉토리와 config 파일을 생성해준다. 패키지 설치 스크립트에 이 부분이 빠진 듯.
이 참에, torque 서버 지정까지 해 준다.
dpkg –configure torque-mom 을 하면 정상적으로 설치를 마무리 하고 torque-mom 를
띄운다. 이걸 안해주면 synaptic 이나 update manager 를 열때마다 정상적으로 설치가 안된 패키지가 있다고 자꾸
알림 박스를 띄우니 꼭 해 준다.
sudo mkdir /var/lib/torque/mom_pri/jobs
sudo touch /var/lib/torque/mom_priv/config
#pbs_server가 동작하는 서버 이름
contrabass
모든 노드들에 대해
/var/lib/torque/spool 디렉토리에 t 권한 설정 및 쓰기 권한을 준다. 그렇지 않으면 나중에 클러스터를 구성해주는 hod allocate 명령이 실패한다. 패키지 설치 스크립트에 이 부분이 빠진 듯.
sudo chmod 1777 /var/lib/torque/spool
설치는 이로써 마쳤고, 아래는 torque 설정에 대한 내용이다.
마스터에 대해 (contrabass)
qmgr -c create queue batch
qmgr -c set queue batch queue_type = Execution
qmgr -c set queue batch enabled = True
qmgr -c set queue batch started = True
qmgr -c set server scheduling = True
${변수} 부분을 시스템 설정에 맞게 바꾼다
vi ~/.hod/hodrc
[hod]
stream = True
java-home = /usr/lib/jvm/java-6-sun
# 사용할 노드들을 묶을 이름
cluster = orchestra
cluster-factor = 1.8
xrs-port-range = 32768-65536
debug = 4
allocate-wait-time = 3600
temp-dir = /tmp/hod
[ringmaster]
register = True
stream = False
temp-dir = /tmp/hod
http-port-range = 8000-9000
work-dirs = /tmp/hod/1,/tmp/hod/2
xrs-port-range = 32768-65536
debug = 4
[hodring]
stream = False
temp-dir = /tmp/hod
register = True
java-home = /usr/lib/jvm/java-6-sun
http-port-range = 8000-9000
xrs-port-range = 32768-65536
debug = 4
[resource_manager]
# 위에서 만든 queue 이름
queue = batch
batch-home = /usr
id = torque
#env-vars = HOD_PYTHON_HOME=/foo/bar/python-2.5.1/bin/python
[gridservice-mapred]
external = False
pkgs = /opt/hadoop
tracker_port = 8030
info_port = 50080
[gridservice-hdfs]
# 미리 정적으로 구성된 hdfs 를 사용하기 위해 True로 설정한다.
# hdfs 도 동적으로 사용하려면 그대로 False 로 두면 된다.
external = True
pkgs = /opt/hadoop
# 추가
host = contrabass
fs_port = 8020
info_port = 50070
~/.hod/hodrc 에서 정의한 cluster 이름을 노드의 호스트 명 옆에 적어준다.
contrabass orchestra
cello orchestra
viola orchestra
위에서 설정할 내용으로 torque 서버 재시작
계산노드가 모두 연결되었는지 확인
hdfs 를 띄운다
map reduce 클러스터를 3개의 노드로 구성을 한다