1.前回のおさらい
前回はHadoopを1台のマシンにインストールし、簡単なサンプルプログラムを実行しました。また、HDFSやMapReduceについても解説しました。今回は複数のPCへのインストールを行います。その後、大規模なデータを実際に処理し、その性能を測ってみたいと思います。
2.用意した環境
今回は、東京大学 理学部 情報科学科で学生用に解放されているクラスタを使用しました。このクラスタは24台のノード(c0-0 ~ c0-23)で構成されており、1GbpsのEthernetで相互に接続されています。また、すべてのノードの/homeディレクトリはNFSで共有されています。計算ノードのスペックは次のとおりです。
項目 | 内容 |
CPU | AMD Opteron Processor 252、 2.6GHz、 DualCore |
NIC | Broadcom NetXtreme BCM5704 Gigabit Ethernet |
HDD | SATA Disk |
OS | RedHat EL、 Linux 2.6.9-67.0.15.ELsmp |
今回は、上記の環境を利用した場合の手順を解説しますが、同じ要領で2台からセットアップできます。
3.Hadoopのサーバ構成
Hadoopは「JobTracker」「TaskTracker」「NameNode」「DataNode」という4つのサーバから構成されます。 JobTrackerとTaskTrackerはMapReduce処理、NameNodeとDataNodeは分散ファイルシステム機能を担当しています。
また、Hadoopを動かすクラスタでは1台が「masterノード」、その他のノードが「slaveノード」となります。 masterノードではJobTrackerとNameNode、slaveノードではTaskTrackerとDataNodeが起動されます (図1)。
「Job」はMapReduceプログラムの実行単位です。Jobは複数の「Task」に分割されます。Taskには「MapTask」と「ReduceTask」の2種類が有ります。MapReduceプログラムを開始すると、まずクライアントはJobTrackerにJobを「Submit」します。JobTrackerはSubmitされたJobをTaskに分割し、TaskTrackerに分配します。TaskTrackerは分配された Taskを処理します。
また、NameNodeはファイルの権限等のメタデータを管理するサーバです。DataNodeは実際にデータを保持する役割を持っています(前回記事参照)。
以上を踏まえた上で、実際にインストールしてみましょう。