自分用メモ

クラスタセットアップ手順

N台の端末を用いてクラスタをセットアップする場合の手順。
クラスタの構成はmasterがtest1、slaveがtest2,test3,…,testNとする。

1.準備

1.すべての端末にUbuntuをインストール
2.ssh,sshd,rsyncがインストールされていることを確認。なければ以下を実行。
sudo apt-get install ssh
sudo apt-get install openssh-server
sudo apt-get install rsync
3.masterの/etc/hostsを編集
IPアドレスとノード名の対応関係を記入。
(例)
123.123.123.1 test1
123.123.123.2 test2
123.123.123.3 test3
  :

4.sshの設定
    • パスフレーズなしのsshをセットアップするため、masterにおいて以下を実行(これによりmaster→masterの通信が可能となる)
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
    • masterの~/.ssh/id_dsa.pubをslaveの~/.ssh/authorized_keysに加える(これによりmaster→slaveの通信が可能となる)
      下記のシェルスクリプトを適当に書き換えて、ssh-copy.shとして保存。アクセス権を変更して実行。
#!/bin/sh
for i in `seq 2 N`
do
ssh-copy-id -i ~/.ssh/id_dsa.pub test$i
done
(参考)シェルスクリプト入門

5.masterからmaster、masterからすべてのslaveに対してノーパスワードでssh接続ができることを確認
ssh test1
ssh test2
  :

2.Hadoopの入手(masterのみ)

Hadoopをホームディレクトリにダウンロードする。
1.ホームディレクトリにHadoop用のディレクトリ作成
mkdir /home/test/hadoop

2.下記サイトからHadoop安定版を入手し、~/hadoopに解凍
http://ftp.riken.jp/net/apache/hadoop/core/stable/

3.Hadoopの設定(masterのみ)

1. ~/conf/hadoop-env.sh内のJAVA_HOMEを編集
2. ~/conf/core-site.xmlの編集
<configuration>
  <property>
   <name>fs.default.name</name>
   <value>hdfs://test1:9000</value>
  </property>
</configuration>

3. ~/conf/hdfs-site.xmlの編集
<configuration>
  <property>
    <name>dfs.replication</name>
    <value>1</value>
  </property>
</configuration>

4. ~/conf/mapred-site.xmlの編集
<configuration>
  <property>
    <name>mapred.job.tracker</name>
    <value>test1:9001</value>
  </property>
</configuration>

5. ~/conf/mastersの編集
test1

6. ~/conf/slaveの編集
test2
test3
  :

4.slaveにHadoopディレクトリを配布

下記のシェルスクリプトを適当に書き換えて、hadoop-rsync.shとして保存。アクセス権を変更して実行。
ファイルになにか変更があった場合も、これを用いて同期する。
#!/bin/sh
for i in `seq 2 N`
do
rsync -au /home/test/hadoop test$i:/home/test/
done
Hadoopディレクトリの場所はすべてのノードで同じでなければならない。

管理人/副管理人のみ編集できます