読者の中には、Apache Software Foundationのプロジェクトリストを見て、気が遠くなった人もいるのではないだろうか。このリストにはトップレベルの重要なプロジェクトから、立ち上がったばかりのプロジェクトまで、数多くのものが並んでいるが、すべてを把握するには数が多すぎる。リストをビッグデータ関連のプロジェクトに限ってさえ、その数はかなり多い。その上、Apache Software Foundationの傘下にはないが、把握しておくべきプロジェクトもある。
途方に暮れる読者のために、この記事では、把握しておく価値のある5つのプロジェクトを紹介する。
Apache Flink
「Flink」は、耐障害性のある「exactly once」品質のデータストリーミングエンジンを持ち、バッチ処理をストリーミングの特別なケースとして扱うストリームデータ処理プラットフォームだ。Flinkは機械学習とグラフ処理のライブラリを持っており、ほかの「Hadoop」コンポーネントのうち、「Apache Kafka」「HBase」と互換性がある。
Flinkは「Spark」に似ているように見えるかもしれないが、耐障害性と、ストリーミングを最優先している点で若干異なる。とはいえ、この2つのエンジンは、適用できるシナリオがかなり重なっており、結果として競争が起こる可能性もある。今後の展開を見守っていくべきだろう。
Apache Samza
「Samza」プロジェクトはストリーミングデータ処理に焦点を当てている。この分野には「Storm」やSpark、Flink(前述)があれば十分のように思えるかもしれないが、Samzaにはいくつか独自の特徴がある。SamzaはそのままでもKafkaおよび「YARN」と連携させることができるが、同プロジェクトのウェブサイトによれば、プラグインが利用できるアーキテクチャを採用しており、ほかのメッセージングエンジンや実行エンジンとも統合可能だ。
ストリーミングデータプラットフォームは現在、ハイプサイクルの頂点に来ている。ハイプサイクルの性質上、Samzaに対する期待の大きさと、Samzaによって実際に処理されているストリーミングデータの量は必ずしも比例しているわけではない。しかし、このプラットフォームはやはり重要性が高く、今後ストリーム処理をより一般的なものにする役割を果たす可能性がある。
KafkaとSamzaはどちらもLinkedInで開発されたものであり、その相性の良さは折り紙付きだ。このオープンソースプロジェクトの立ち上げ前に、そのコードが実際にLinkedInで使われていたという事実は、同社がビッグデータを扱う必要に迫られている大手ソーシャルメディア企業だということもあり、権威があるものと認められ、注目を浴びている。しかし、これがSpark Streamingの人気や、Stormの(特にHortonworksによる)幅広いサポートを超えられるほどのものかどうかはまだ不明だ。
Ibis(Clouderaによるインキュベーション)
筆者は前にも「Ibis」についての記事(英語)を書いたことがある。このClouderaがインキュベーションしているプロジェクトは、データサイエンティスト向けのもので、分散アプリケーションの世界にプログラミング言語Pythonを持ち込むことを狙ったものだ。Revolution Analytics(現在はMicrosoftの子会社)がR言語で行ったように、IbisのチームもPythonのコードを単一のワークステーションやサーバだけではなく、クラスタ内の複数のノードで実行するための手段を作ろうとしている。