検索
連載

Apache Sparkに注力するIBM、目指すは「データ分析のOS」Database Watch(2015年7月版)

北米トヨタ販売子会社での採用事例の発表などもあり、日本国内でも注目を集めつつある「Apache Spark」。具体的にはどんな特徴があって、何ができるのだろうか。Sparkへの大規模投資を発表したIBM(日本IBM)を取材した。

Share
Tweet
LINE
Hatena

連載バックナンバー

Apache Sparkとは何か?

 2015年7月8日、日本IBMは「Sparkプロジェクトへの取り組みに関する記者説明会」を行いました。Sparkとは「Apache Spark」(以下、Spark)のことで、分散環境で計算処理を並列実行するソフトウエアです。2015年6月に米国で開催された「Spark Summit 2015」で、米国におけるトヨタ自動車の販売子会社である米国トヨタ自動車販売(Toyota Motor Sales, U.S.A.)などが採用事例講演を行ったこともあり、ビッグデータの分析基盤として日本でも注目が集まっています。

 Sparkの源流をたどると、メモリ上に分散した変換処理に適したデータセット(Resilient Distributed Dataset:RDD)に関する、ある論文に行き着きます。もともとは米カリフォルニア大学バークレー校のAMPLabで開発が始まったもので、「源流」となる論文は2010年10月に開催された「USENIX '10」で、当時、AMPLabに所属していたMatei Zaharia氏らによって発表されています(発表時のタイムテーブル論文(PDF))。

 AMPLabの開発メンバーは2013年にDatabricks社を起業し、今ではここがSparkの開発の中心になっています。私企業が開発の中心を担っていますが、プロダクト自体はオープンソースソフトウエアとしてApache Software Foundationのプロジェクトになっています。現在ではApacheのトップレベルプロジェクトの一つに昇格しています


日本IBM アナリティクス事業部 第二テクニカル・セールス(Big Data担当)瀬島一海氏

 記者説明会では、日本IBM アナリティクス事業部 第二テクニカル・セールス(Big Data担当)瀬島一海氏がSparkについて解説しました。同氏はSparkの特徴として「高速性」「汎用性」「使いやすさ」の3点を挙げています。以降ではそれぞれの詳細を見ていきましょう。

Sparkの特徴(1)高速性

 Sparkでは、分散処理技術に加えて、インメモリのキャッシング技術を実装することで高速処理を可能にしています。瀬島氏は「『MapReduce』と比較した場合、Sparkは10〜100倍高速」と話していました。なお、前述の論文ではSparkとHadoopのロジスティック回帰性能を検証しており、「Hadoopでは複数回処理を実行しても毎回127秒かかるのに対して、Sparkは一回目の処理では174秒かかったが、二回目以降はキャッシュデータの再利用により6秒に短縮される」との結果が出ています。

 Sparkの高速性を特徴付ける実装はメモリ上での処理にあるため、メモリに乗り切らないほどのデータ量になると、あまり強みを発揮できないと考えていいでしょう。

 瀬島氏によると、Sparkは「特にメモリ上で同じデータを繰り返し処理したり、小さな変換処理を連続して行ったりする用途に向いている」とのことです。

Sparkの特徴(2)汎用性

 Sparkの二つ目の特徴である「汎用性」について、瀬島氏は「Sparkはさまざまなワークロードに対応しています」と説明しました。「ワークロードへの対応」とは、Sparkの上位層で多様な処理ができるように、周辺技術やインターフェースが充実していることを意味します。さまざまな用途のアプリケーションからアクセスできるということになります。

 具体的には、構造化データと同様のSQLクエリを使うことができるSparkモジュール「Spark SQL」、IoTなどの機器から送られてくるデータをストリーミング処理するための「Spark Streaming」、機械学習ライブラリの「MLlib」、グラフ処理のためのAPI「GraphX」、統計分析用のプログラミング言語「R」からSparkを使うための「SparkR」などです。

 以上のように、Sparkへのアクセス環境は複数用意されているので、多様なワークロードに対応することができるのです。

Sparkの特徴(3)使いやすさ

 Sparkの三つ目の特徴である「使いやすさ」について見てみましょう。Sparkでは「Java」「Scala」「Python」や「R」など、多様なプログラミング言語に対応しています。

 「Apache Hadoop 2(Hadoop)」では、分散ファイルシステム「HDFS(Hadoop Distributed File System)」の上にリソース管理機構「YARN(Yet Another Resource Negotiator)」があり、Sparkはその上で稼働させる使い方が主流ですが、それだけでなく、Apache Hadoop 2のクラスター管理機構である「Apache Mesos」上でも稼働します。さらに、「Cassandra」や「HBase」へもアクセスが可能で、環境を選ばないところは開発者にとってメリットとなりそうです。

 また、Amazon Web Servicesが提供する「Amazon EC2」上でSpark+HDFS環境を自動構築するスクリプトも用意されています。

SparkとHadoop、MapReduceの関係も整理しよう

 Sparkについては誤解しがちな点が二つあります。一つは「Spark自体はデータストアではない」ということです。SparkはHDFSなどの上で稼働するものであり、どちらかというとアプリケーション開発の基盤に近いものと理解すべきでしょう。

 もう一つは「分散処理基盤としてのHadoopとの関係」です。SparkはHadoopを基にしながらHadoopとMapReduceが持つ課題を改善するものではありますが、Hadoopの仕組みそのものを全て置き換えるものではありません。

 Hadoopでは、繰り返し処理を実行するときにMapReduceのバッチ処理で一定のI/O負荷が発生します。この部分がボトルネック(課題)である場合は、インメモリ分散処理が可能なSparkを利用することで、繰り返し処理の高速化が図れるようになっています。

 ですから、記者説明会でも参加者から「SparkはHadoopを置き換えるか?」という質問が出ましたが、その答えは「ノー」です。瀬島氏も「両者は補完関係にある」と話していました(むしろ置き換わる可能性があるのはHadoopではなくてMapReduceが担ってきた一部の処理になるかもしれません)。

Linux以来、最大規模の投資でSparkを推進

 さて、IBMはどうしてSparkに注力しているのでしょうか?

 日本で記者説明会を開催する前の2015年6月15日(米国時間)、米IBMでは「Apache Sparkプロジェクトに大量の投資を行う」と発表しています。具体的には、世界各地にあるIBMのR&D(研究開発)部門に3500人以上の研究者・開発者を配属、Spark関連のソフトウエア開発プロジェクトに従事させるといいます。加えて、100万人以上のSparkエンジニアを育成する「意向」も発表、サンフランシスコにはSparkテクノロジセンターを開設します。また、IBMが持つ機械学習技術もSparkの開発コミュニティに無償提供するとしています。

 実はIBMでは、Sparkの源流に当たるAMPLabのスポンサー企業の一社として、ラボ設立当初から支援を続けてきたといういきさつがあるのです。IBMによると、6月に発表したSparkプロジェクトへの支援体制はオープンソースコミュニティへの貢献としては「Linux以来最大」といい、かなりの肩入れぶりであることがうかがえます。

 この発表と同時にIBMが持つ分析やコマースプラットフォームの中核にSparkを組み込むこと、またIBMが展開するPaaS「Bluemix」上でもSparkをサービスとして提供することも宣言しました(現時点では準備中)。

 この他、「IBM BigInsights for Apache Hadoop V4.1」(日本では2015年7月から提供開始)では、同梱されるApache Hadoopディストリビューション「IBM Open Platform with Apache Hadoop」からSparkを利用可能です。

 IBMはSparkに技術や技術者を提供し投資するとともに、自らの製品やサービスにSparkを積極的に採り入れていこうとしています。IBMはSparkを、LinuxやJavaのような「メジャーで不可欠な技術」になると見ているようです。

 瀬島氏によると、IBMがSparkへの投資で目指すのは、「将来Sparkが“データ分析のOS(基本ソフトウエア)”になること」だそうです。数年後、多くのエンジニアがデファクトスタンダードとして使いこなす時代が来るのでしょうか? 今後が楽しみですね。

Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る