Hadoopがスケール・アウトする仕組み
前回の記事では、Hadoopが膨大なデータをバッチ処理するための「インフラ」としての性質を備えていること、情報爆発時代の新たなインフラとして普及しつつあることを説明しました。その中で、情報爆発時代に必要とされるインフラは、「スケール・アウトが可能であること」という条件を備えていなければならないことを示しました。サーバーの台数を増やすことで容易にシステムの処理性能が増やせることは、Hadoopの重要な特徴です。今回は、Hadoopがどのようにしてスケール・アウトを可能にしているかを、「分散ファイル・システム」と「MapReduceフレームワーク」の2つの観点から解説します。
スケール・アウトとは?
コンピュータ・システムを新たに構築するときは、必ず「運用」のことを考えておく必要があります。システム・トラブルが発生した場合の対応策を決めたり、将来の仕様変更に備えてプログラムに拡張性を持たせたりすることが求められます。中でも重要なポイントが、「システムの必要処理能力の見積もり」です。将来数年間にわたる運用期間中、システムの処理データ量がどれくらい増加するのか、バッチ処理にかかる最長時間はどれくらいか、などのさまざまな要素を予測した上で、調達するサーバーなどのスペックを決めなければなりません。
ビジネスに使われるコンピュータ・システムの場合は、将来ビジネスが成長していくことを見込んで、ある程度処理性能に余裕を持たせた調達を行うのが普通です。年10%程度の成長率であれば、若干の余裕をもたせて現時点で必要とされる能力の2倍程度の処理能力のシステムを調達すれば、数年間の運用期間に十分耐えることができます。
しかし、情報爆発の状況にある現在では、年数百%ものスピードで処理すべきデータ量が増えていくコンピュータ・システムも珍しくなくなりました。例えば、利用者向けに無料で提供され広告収入によって運営されるWebサイトでは、大勢の人々の注目を集めてアクセスが急増することが十分あり得ます。このようなコンピュータ・システムは、余裕を持たせた調達が困難です。十分に売り上げがない状況で巨額の投資をして高性能のシステムを調達することには大きなリスクが伴います。一方、当初の見込み以上にデータ量が増えてしまうと、システムを早めにリプレースしなければならなくなり、大きな無駄が生じてしまいます。
それに加えて、もう1つ重大な問題があります。「コンピュータの処理性能と価格は比例しない」という問題です。図1に、1台のコンピュータの性能と価格の関係を示します。性能が上がれば上がるほど、コンピュータの価格が飛躍的に上昇してしまうのです。すなわち、コンピュータ・システムのコスト・パフォーマンスが悪化してしまうことになります。
図1: 1台のコンピュータの性能と価格の関係 |
そこで、1台の高性能のサーバーで必要処理能力をまかなうのではなく、安価でそこそこの性能のサーバーを多数組み合わせて1つの大きなコンピュータ・システムを実現するという方法が求められるようになりました。この方法が使えれば、コスト・パフォーマンスの極めて良いシステムができることになります。さらに、最初は最低限の処理能力でシステムを立ち上げ、必要に応じて台数を増やして能力を増強することもできるようになるため、無駄のないシステム投資が可能になります。
このように、サーバーの台数を増やすことでシステムの処理能力を増強することを、「スケール・アウト」といいます。必要処理能力が急速に増大していくコンピュータ・システムを構築する際には、スケール・アウト可能な構成にすることが強く求められます。