4.今回使用したノード構成
今回はc0-0をmasterノード、それ以外(c0-1~ c0-23)をslaveノードという構成でセットアップします。今回用いたHadoopのバージョンは、2008/6/17現在のstable版である0.16.4です。これをホーム直下のhadoopというディレクトリに解凍します(図2)。なお、以降はこのディレクトリのパスを [HADOOP INSTALL]という記法で表します。
[kzk@c0-0 ~]$ tar zxf hadoop-0.16.4.tar.gz [kzk@c0-0 ~]$ mv hadoop-0.16.4 hadoop
4.1. 前準備
Hadoopのインストールを行う前に、すべてのノードにおいて次の2つの作業を行ってください。
4.1.1. /etc/hostsの設定
まずは、すべてのノードにおいて、他のノードのIPアドレスをホスト名から取得できるようにしてください。
具体的には/etc/hostsを編集します。c0-0(192.168.0.1)とc0-1(192.168.0.2)の2台構成のクラスタでは、図3のような内容を各ノードの/etc/hostsに追加すれば良いでしょう。
# /etc/hosts 192.168.0.1 c0-0 192.168.0.2 c0-1
4.1.2. sshの設定
次に、sshの設定も行います。masterからmaster、masterからすべてのslaveに対してノーパスワードでssh接続ができることを確認してください(図4)。
[kzk@c0-0 ~]$ ssh c0-0 Last login: Tue Jun 17 18:52:58 2008 from c0-0 [kzk@c0-0 ~]$ [kzk@c0-0 ~]$ ssh c0-1 Last login: Tue jun 17 18:53:42 2008 from c0-0 [kzk@c0-1 ~]$
4.2. Hadoopのインストール
それでは実際にHadoopをセットアップします。手順は次のとおりです。
- Hadoopのインストール
- [HADOOP INSTALL]/conf/mastersの編集
- [HADOOP INSTALL]/conf/slavesの編集
- [HADOOP INSTALL]/conf/hadooop-site.xmlの編集
- slaveノードへのhadoopディレクトリ配布
- NameNodeのフォーマット
4.2.1. Hadoopのインストール
まず、c0-0(master)にHadoopをインストールします。具体的な手順は、前回記事を参考にしてください。
4.2.2. [HADOOP INSTALL]/conf/mastersの編集
c0-0(master)の[HADOOP INSTALL]/conf/mastersを編集します。[HADOOP INSTALL]/conf/mastersファイルにmasterノードのホスト名を記述してください(図5)。
[kzk@c0-0 ~]$ cat hadoop/conf/masters c0-0
4.2.3. [HADOOP INSTALL]/conf/slavesの編集
c0-0(master)の[HADOOP INSTALL]/conf/slavesファイルに slaveノードのホスト名を列挙します (図 6)。今回は負荷を考慮してmaster用に1つのノードを用いましたが、slavesファイルにmasterノード自身の名前を追加すると、masterノードにもslaveノードの役割も持たせる事ができます。ノード数が少ない場合はこの方法が有効でしょう。
c0-1 c0-2 c0-3 c0-4 c0-5 c0-6 c0-7 c0-8 c0-9 c0-10 c0-11 c0-12 c0-13 c0-14 c0-15 c0-16 c0-17 c0-18 c0-19 c0-20 c0-21 c0-22 c0-23
4.2.4. [HADOOP INSTALL]/conf/hadooop-site.xmlの編集
c0-0(master)の[HADOOP INSTALL]/conf/hadooop-site.xmlを編集します。fs.default.name
とmapred.job.tracker
の値を次のように設定してください (図7)。
<property> <name>fs.default.name</name> <value>hdfs://c0-0:54310</value> <description>The name of the default file system. A URI whose scheme and authority determine the FileSystem implementation. The uri’s scheme determines the config property (fs.SCHEME.impl) naming the FileSystem implementation class. The uri’s authority is used to determine the host, port, etc. for a filesystem.</description> </property> <property> <name>mapred.job.tracker</name> <value>c0-0:54311</value> <description>The host and port that the MapReduce job tracker runs at. If "local", then jobs are run in-process as a single map and reduce task. </description> </property>
4.2.5. slaveノードへのhadoopディレクトリ配布
最後に、c0-0(master)から他のノードすべてにhadoopディレクトリをコピーします。今回使用したクラスタでは、/home以下はNFSで共有されているのでこの操作は必要ありませんでしたが、共有されていない場合はrsync
コマンドで[HADOOP INSTALL]ディレクトリをすべてのノードにコピーしてください。
図8で紹介しているスクリプトファイルをmasterノードで実行すると良いでしょう。
#!/bin/sh for i in ‘seq 1 23‘; do rsync --progress -av /home/kzk/hadoop c0-$i:/home/kzk/; done;
4.2.6. NameNodeのフォーマット
masterノードにてNameNodeが使用する領域のフォーマットを行います(図9)。
[kzk@c0-0 ~]$ ./hadoop/bin/hadoop namenode -format
以上でインストールは完了です。
4.3. Hadoopの起動
それでは実際に起動してみましょう。Hadoopの起動には「[HADOOP INSTALL]/bin/start-all.sh」を、停止には「[HADOOP INSTALL]/bin/stop-all.sh」を使用します(図10)。この操作はmasterノードで行う必要があります。
[kzk@c0-0 ~]$ ./hadoop/bin/start-all.sh # Hadoopの起動 [kzk@c0-0 ~]$ ./hadoop/bin/stop-all.sh # Hadoopの停止
start-all.shとstop-all.shは、mastersファイルとslavesファイルを元にssh経由でサーバを起動・停止するスクリプトです。各サーバの起動状況は、各ノードにてjps
コマンドを実行した際のプロセスの有無で確認できます。もし何か問題が発生している場合は、各ノードの「HADOOP LOG DIR([HADOOP INSTALL]/conf/hadoop-env.shで指定)」にログファイルが吐かれているはずなので、それを元に問題を探ってみてください。