Develop and Download Open Source Software

OpenSource Downloads

7-Zip  (4,014)  
HandBrake Japanese Language Version  (2,964)  
CrystalDiskInfo  (1,714)  
Boookends  (1,269)  
CrystalDiskMark  (874)  
Tera Term  (825)  
CotEditor  (626)  
FFFTP  (593)  
えこでこツール  (532)  
10  ffdshow  (524)  
11  SMPlayer  (503)  
12  Cabos  (492)  
13  ギコナビ  (475)  
14  Rappelz Server  (471)  
15  MergeDoc  (457)  
More >>

最近ブックマークされた記事

Hadoopを用いたクラスタコンピューティング環境の構築

2008年10月24日 10:06 Amit Kumar Saha 1 2 3 4

 ペタバイト規模のデータを格納させる分散コンピューティング用プラットフォームを探しているのであれば、そのフレームワークとして Hadoop の使用を検討すべきだろう。HadoopはJavaベースで作成されているため、Linux、Windows、Solaris、BSD、Mac OS Xにて使用できる。こうしたHadoopを実際に採用している組織に共通するのは、安価(特殊なハードウェアが不要)かつ効率的でスケーラビリティと信頼性を兼ね備えたプラットフォームによる、膨大な量のデータ処理を必要としているという点だ。

 Hadoopでは、こうした膨大な量のデータを格納するために、Hadoop Distributed File System(HDFS)を採用している。実際、HDFSのマスタ/スレーブアーキテクチャは、Hadoopのクラスタ機能の中核を成している。ここでサポートされているのは、ファイルシステムのメタデータ管理用マスタサーバとして機能する1つのNameNodeおよび、実際のデータ群を格納する多数のDataNodesという基本構成だ。

 ただしNameNodeは単一点障害(single point of failure)となる危険性があるため、HadoopではSecondary NameNodeを用意することで、名前空間の定期チェックをさせると同時に、NameNodeに保持させるHDFSの変更ログファイルを一定サイズ以下にするようにしている。こうしたHDFSのアーキテクチャについては、ダイヤグラムを用いた解説ドキュメントが公開されており、また「HDFS User Guide」というユーザの視点に立った包括的なHDFSの導入ガイドも参考になるだろう。

 Hadoopにおけるデータ分散処理のベースとなっているのは、Googleにより提唱されたMapReduceというプログラミングモデルだ。このモデルをHadoopの場合は、各ノードにおけるJobTrackerプロセスが、クラスタのジョブスケジューラおよびアロケータとして機能し、個々のクラスタノードにおけるTaskTrackerへのジョブ割り当てを行うという方式にて実装している。つまりJobTrackerとTaskTrackerの関係は、前者がMapReduceマスタで、後者がMapReduceスレーブという位置付けと見ればいいだろう。

 Hadoopクラスタの機能ユニットである、NameNode、DataNodes、JobTracker、TaskTrackerは、いずれもデーモンとして実装される。そしてすべてのノードには、クラスタの状態をチェックするためのWebサーバが組み込まれるようになっている。NameNodeにおけるこうしたWebサーバの役割は、DataNodesのステータス情報をレポートすることであり、これによって、ライブおよびデッド状態のノード、分散ファイルシステムの容量など、様々な情報を確認できる。TaskTrackerおよびその上で実行中のタスクに関するステータス情報は、JobTrackerにて動作するWebサーバにより監視できる。

 本来Hadoopは、Nutchプロジェクト用のインフラストラクチャとして作成されたもので、これはインターネット上のWebページ群を巡回して検索エンジン用のインデックスを構築する、クローラとしての用途が意図されていた。このような背景を有しているHadoopにとって、膨大な量のデータを対象に同様のプロセスを実施するというタスクは、非常に親和性の高い分野なのである。

 Hadoopは、3つの動作モードにて実行させることができ、その1つであるデフォルト状態のHadoopでは、分散型モデルではなく単一のJavaプロセスとして動作するように設定されている。これは実用には適さない設定ではあるが、複数のコンピュータを準備する必要がないため、Hadoopの操作法を学習するのには役立つはずだ。またこれと同様の目的で、Hadoopのデーモン群を1つのノード内で動作させつつ、Javaプロセスとしては各デーモンが個別に動作するという、疑似分散モードも用意されている。最後に残された完全分散モードの場合、当然ながらHadoopを実行するノード群では、NameNode、JobTracker、DataNodes、TaskTrackerを実際に分散させた形で使用することになる。なお、こうした分散モードによるHadoopのセットアップには、最低3つのノードが必要だ。

最終更新:2008年12月24日 17:07