データが大きくなりすぎてMapReduceのジョブトラッカーが死亡? そんな課題に対応するため、Facebookはジョブスケジューリングツールをゼロから構築、公開した。
米Facebookはユーザーベースの拡大に伴って生成される大量のデータ処理に対応するため、新しいスケジューリングフレームワークの「Corona」を開発し、11月8日にオープンソースとして公開したことを明らかにした。
Facebookはこれまで、データインフラ基盤としてApache HadoopのMapReduceを採用してきた。しかし、データウェアハウスで生成されるデータが24時間あたり0.5ペタバイトを超え、Hiveクエリの処理は1日当たり6万を超える中で、2011年初めごろからMapReduceのスケーラビリティが限界に達し始めたという。
MapReduceではジョブトラッカーが割り当てるタスクをタスクトラッカーが実行する仕組みになっているが、クラスタサイズとジョブの数が増えるに従い、ジョブトラッカーが作業を適切に処理できなくなり、負荷がピークに達するとスケジューリングのオーバーヘッドによってクラスタの利用率が激減してしまう問題が発生した。
さらに、プルベースのスケジューリングモデルの限界や、静的なスロットベースのリソース管理モデルの制約にも突き当り、ソフトウェアアップデートの間は実行中のジョブを全て中断するダウンタイムが必要とされることも問題になっていた。
こうした状況を改善するために開発された「Corona」は、クラスタリソース管理をジョブコーディネーションと切り離す設計にしている。Coronaのクラスタマネージャは、クラスタ内のノードとフリーなリソースの量を把握することのみを目的とし、個別のジョブごとに専用のジョブトラッカーを作成。小さなジョブではクライアントと同じプロセスで、大きなジョブの場合はクラスタ内の別のプロセスとして実行できるようにした。
さらに、プルベースではなくプッシュベースのスケジューリングを採用したことなどにより、Coronaではスケーラビリティの強化、遅延解消、ダウンタイムなしのアップグレード、リソース管理の向上という目標を達成したとしている。また、ジョブのリスタートの高速化、コードベースのスリム化、他のシステムとの連携といった機能も実現できたという。
MapReduceとCoronaを比較すると、クラスタの利用率は70%から95%強に向上し、テストジョブの遅延は50秒から25秒に半減しているという。現在、CoronaはFacebookのデータインフラに組み込まれており、全社でビッグデータ分析に活用されているという。
Copyright © ITmedia, Inc. All Rights Reserved.