0
会員になると、いいね!でマイページに保存できます。
高速分散処理のフレームワークである「Apache Spark(以下、Spark)」が、開発者やITベンダーの大きな注目を集めている。その特徴は、高速でのインメモリ処理を実現し、ビッグデータの分析に大きく寄与すること。これからSparkは、情報管理やアナリティクスの領域でどのような役割を果たすことになるのか。ガートナー リサーチ部門 リサーチディレクターのニック・ヒューデカー氏が解説する。
Sparkはインメモリ技術により高速なデータ処理を実現するもの
現在Sparkは、新たなデータ処理の方法を提供するものとして大いに人気が高まっている。既にいくつかの分析ツールやプラットフォームに組み込まれており、またデータ管理用の製品の中にも組み込まれている。
「ガートナー ビジネス・インテリジェンス、アナリティクス&情報活用サミット2016」で登壇したヒューデカー氏は、「今なぜこれだけSparkに注目が集まっているのか。それはSparkがデータ処理、そしてインメモリの技術において最先端の領域を切り開いているからだ」と説明する。
「Sparkは、ガートナーの2015年の高度アナリティクス/データサイエンスのハイプサイクルにおいて、“過度な期待”のピーク期を迎える直前の段階にいる。まだ新しい技術であることも事実だ。過熱はしているものの、広い範囲で普及しているとはいえない」
通常のデータ処理では、まずデータをハードディスクに保存し、その一部をメモリに移して処理を行い、その中間結果を再度ディスクに保存し、次のステップに進むという形を採る。
「しかしSparkではこの通常のデータ処理のプロセスを踏まない。ディスクに対するキャッシングが不要だ。ほとんど、あるいはなるべく多くのデータをインメモリで処理する。それがSparkの大きなメリットだ。これによりデータをより迅速に処理することができるようになる」
Sparkのメリット
幅広い処理モデル:
-バッチ、インタラクティブ、ストリーミング
幅広い言語をサポート
多彩なライブラリ
複数の導入シナリオ:
-スタンドアロン、YARN、Mesos、組み込み、クラウド
コミュニティと民間企業の関与が活発
元々Sparkは、カリフォルニア大学バークレー校で開発されたデータ処理の仕組みで、その後、オープンソースソフトウェア(OSS)として公開され、SQLとのインターフェースやグラフ計算の能力、ストリーミング処理の能力などさまざまな機能が追加されてきた。
「今、最も典型的なSparkの環境はHadoopだ。SparkはHadoopのインフラにプラグインされていく。これによりHadoopの環境に保存されたデータを活用することができ、またHadoopが提供する実行環境を活用することができる。そのため現在、SparkがHadoop上に設置されているのはよく見られるケースで、ビッグデータの処理を高速化する、あるいは新しいプロセスをHadoop上で実現するためにSparkは活用されている」
ただしSparkは、Hadoopの環境に制約されているわけではないし、ビッグデータだけで活用されるものでもない。マイクロソフトやMongoDBなどが自社の製品に組み込んでおり、今あるDBMSのプラットフォーム上でもSparkを運用することは可能だ。
SparkとHadoopはどう違うのか
Sparkが提供するメリットは、インメモリで高速なデータ処理ができるというだけではない。
「Sparkは、バッチ処理もサポートする。またインタラクティブなクエリをSQLで実現できるし、プロセシングのストリーミングも可能だ。そしてSparkは、これら3つの処理を1つのプログラミング言語で実現することができる。異なるスキルセット、違ったインフラを整備することは不要だ」
またSparkはプログラム的に見ても他のデータ処理の方法、たとえばMapReduceと比べても簡素化されている。ソースコードの行数はMapReduceのコード行数より少なくて済む。
さらにSparkは、幅広い言語をサポートすると共に、データ統計用のR言語や、データ処理に利用されるスクリプト言語のPythonとも統合することができるし、スタンドアロンやクラウド、その他の組み込み型の仕組みでも活用することができる。
「Sparkは一見Hadoopのように見えるが、SparkはHadoopを置き換えるものではなく、MapReduceを置き換えるものだ」
MapReduceでは、必要なデータを抽出するmap処理と、実際のデータ処理を行うreduce処理という2段階のタスクを行うことになるが、各タスク間ではデータがハードディスクに書かれていく。
「そのためMapReduceでは、データ処理のスピードが遅くなる。たとえばある企業で4時間かかっていたデータ処理があったが、それをSparkにポーティングしたところ、90秒で完了した。インメモリでのデータ処理による劇的なパフォーマンスの改善だ。ただしすべてのデータ処理をSparkにポートするかといえば、それはケースバイケースだ。Sparkはまだ新しい技術であり、今も変化し続けている」
【次ページ】Sparkは、データ分析で2つの役割を担う
関連タグ