Hadoopがスケール・アウトする仕組み
Hadoopができること、できないこと
前回と今回の記事では、Hadoopが情報爆発時代の新たなインフラとしての性質を備えていること、重要な性質である「スケール・アウト性」をどのように実現しているか、を示してきました。
しかし、Hadoopを使っても、既存のコンピュータ・システムをすべて置き換えることができるわけではありません。状況によっては、既存のリレーショナル・データベース管理システム(RDBMS)や、最近注目されている分散Key-Value Store(KVS)データベースが向いている場合もあります。HadoopとRDBMS、KVSを適切に組み合わせることで、極めて効率のよいコンピュータ・システムを構築できます。
どのようにソフトウエアを組み合わせるのが適切なのかを判断するためには、Hadoopができることとできないことを、きちんと理解しておく必要があります。
Hadoopは、巨大なデータのバッチ処理の性能を上げることを最優先に設計されています。まずは、これを押さえておいてください。バッチ処理の性能は、システムのスループット、すなわち時間あたりのデータ処理量に左右されます。言い換えると、Hadoopはスループット優先のシステムであるといえます。
また、MapReduceフレームワークが持っている柔軟性も、Hadoopの長所です。複数のmap関数とreduce関数を組み合わせると、時系列解析、検索インデックスの生成、言語モデルの構築、遺伝子配列のマッチングなど、さまざまな複雑な処理を実現できます。
一方、Hadoopのレイテンシ(遅延時間)、すなわちデータ転送などを要求してから結果が得られるまでの所要時間は大きくなってしまいます。また、インデックス検索機能などは実装されていないため、巨大なデータ集合から特定のデータのみを素早く抽出したり変更したりすることは不可能です。
よって、素早いレスポンスが求められるWebサービスのユーザー・インタフェースといった用途には向いていません。低いレイテンシが要求される場合は、RDBMSやKVSの利用を検討する必要があります。Hadoop上に構築されているKVSであるHBaseなども検討対象になります。
次回記事では、HadoopとRDBMS、KVSの違いを踏まえた上で、どのように3者を組み合わせていくべきかについて解説します。