Hadoopクラスタの完全分散モードでのセットアップ
今回私はHadoopを試用するにあたって、Debian "Lenny"ベータ2、Sun JDK 1.6、Hadoop 0.17.2.1をインストールした3台の標準的なLinuxマシンを用いて、3ノードクラスタをセットアップした。その他に必要なソフトウェアとしては、SSHクライアントおよびサーバを用意して個々のノードにて実行させなくてはならない。
まず最初に、gunzipを使ってHadoopのtarボールを展開するが、書き込み権限さえ有していれば、展開先は任意のディレクトリで構わない。ここでのディストリビューションのルートは、HADOOP_HOMEとして参照される。通常、クラスタ上で使われるすべてのコンピュータは、同一のHADOOP_HOMEパスを共有することになるので、例えば.bashrcなどのログインスクリプトにHADOOP_HOMEをエクスポートしておくと便利なはずだ。
Hadoopの設定情報は、HADOOP_HOME/conf/ディレクトリに格納された2つの設定ファイルによって管理される。このうちhadoop-default.xmlは、デフォルト設定を保持する読み取り専用のファイルであり、一方のhadoop-site.xmlは、ノード固有の設定情報を保持するという役割分担になっている。後者のファイルに具体的に何が記載されるかは、クラスタ内で果たすべきノードの役割によって変わってくるが、いずれにせよここに指定されたプロパティ設定は、デフォルト設定用ファイルでの指定よりも優先して適用される。なお配布用のtarボールには、空欄状態のdefault-site.xmlが用意されているので、これを基に各自のニーズに則した変更を施せばいいだろう。
同様に重要なファイルがconf/slavesである。このファイルはJobTrackerにて、TaskTrackerデーモンを始動させる必要のあるホストの一覧として機能する。同じくNameNodeでは、DataNodesデーモンを始動させる必要のあるホストの一覧として機能する。ただしこのファイルの管理作業は、多数のノードを扱うようにスケーリングさせた場合であっても、すべて手作業で行わなくてはならない。
その他、JAVA_HOMEを始めログやプロセスID群の保管先といった、各種の設定オプションを格納するconf/chadoop-env.shも重要なファイルである。
今回用いた試験用のセットアップでは、NameNodeおよびJobTrackerを1つ目と2つ目のノードに個別にインストールし、DataNodesおよびTaskTrackerは、まとめて3つ目のノードにインストールした。最初の2つのノードに置かれたconf/slavesファイルには、3番目のノードのIPアドレスが登録してあり、これら4つのデーモンが使用するconf/hadoop-site.xmlファイルは共通化してある(サンプルはここからダウンロード可能)。conf/hadoop-site.xmlには各種のプロパティ設定を施すことになるが、その詳細はオンラインドキュメントにまとめて解説されているので、そちらを参照して頂きたい。
その他に必要となるのが、ノード間におけるpassphraseless SSHのセットアップである。またノード参照をホスト名で行う場合は、各ノードの/etc/hostsファイルに対して、用いるホスト名とIPアドレスとのマッピング情報に関する設定をしなくてはならない。
