オープンソースフレームワークであるApache Spark、およびそのエコシステム(周辺ソフトウエア)であるMLlibを活用することで、高速かつ柔軟な機械学習処理を実現できる。本稿では、Apache Sparkを用いた機械学習の特徴や歴史を紹介する。

Apache Sparkとは?

 本稿では、「ポストHadoop」の最右翼と言われているApache Sparkのエコシステムである、MLlibライブラリを用いた機械学習システムについて説明する。

 オープンソースソフトウエアであるApache Sparkは、2014年2月にApacheのトップレベルプロジェクトに昇格したほか、ビッグデータ分野のリーディングカンパニーである米クラウデラがサポートを行うなど、安定的な発展が見込まれている。

 Apache SparkはHadoopと同じく、計算処理を分散環境で並列実行するための基盤である。RDD(Resilient Distributed Dataset)という独自の分散キャッシュ機構(複数のマシンが連携して、メモリー上にデータを保持する仕組み)を持つことが特徴だ。

 Hadoopの場合は、計算に必要なデータの入出力が全てディスクアクセスとなるため、冗長なディスクアクセスが発生する場合があった。特に機械学習のような、特定のデータに対して繰り返しアクセスする処理に対してその傾向が顕著だった。Apache Sparkでは、RDDによってその負荷が減少しているため、性能向上が見込める。

Apache Sparkのエコシステム

 Apache Sparkが持つエコシステムを図1に示す。「Spark Core」がApache Sparkの心臓部である。ジョブを管理するスケジューラやRDDなど、分散処理のフレームワーク基盤を担っている。

図1●Apache Sparkのエコシステム
図1●Apache Sparkのエコシステム
[画像のクリックで拡大表示]

 その下回りとして、Apache Sparkは「Apache Mesos」や「YARN」と連携できる。MesosやYARNは共にリソース・マネジメント・ソフトウエアであり、利用可能なマシンリストの管理や、アプリケーションへのリソース(CPUやメモリー)割り当ての管理を担当するなど、複数マシンによるクラスター環境でリソースを有効活用する際に活躍する。