Sparkは今後10年における極めて重要な技術
「IBMは2015年6月にSparkに本腰を入れると発表しました。今後10年、アナリティクスの領域でSparkが極めて重要な技術になると位置づけています」
IBMシステムズ ハードウェア事業本部 ソリューション事業部 先進テクノロジー・センター シニアITスペシャリストの藤岡英典氏は、Sparkに注力するIBMの姿勢をこう強調する。
この発表以降、IBMでは自社ソフトウェア製品をSparkに対応させ、さらに自社のクラウドサービスであるBluemix上でSparkを利用できる「Spark as a Service」の提供もいち早く開始した。
「IBMでは、すでに世界の3,500名を越えるエンジニアを、Sparkに関わるプロジェクトに投入しています。米国サンフランシスコには『Sparkテクノロジー・センター』も開設し、データサイエンティストや開発者とのコミュニケーションの場となっています。実はIBMがテクノロジー・センターを開設するのは、Java、Linuxに続いてSparkが3つ目です。IBMは、それだけSparkが企業ITインフラにとって価値が高いと期待しているのです」(藤岡氏)
Sparkテクノロジー・センターからは、各種情報の発信を積極的に行っている。またSparkコミュニティへの貢献は他にもある。たとえば、IBM内で実績のあった機械学習技術「IBM SystemML」をオープンソース化し、Sparkコミュニティに提供している。
「Sparkにはすでに機械学習ライブラリが実装されていますが、IBMからも技術提供することで、より機械学習の精度向上に貢献できると考えています」(藤岡氏)
Sparkを最初に開発したのはカリフォルニア大学バークレー校のAMPLabだ。最初にここに資金を提供したのもIBMだった。そのAMPLabと協力し、すでに100万人以上のデータサイエンティストとエンジニアがアナリティクス関連の教育機会を得ているという。
ソフトだけでなくハード面からもSparkを盛り上げる
Sparkとは、大量データを並列分散処理技術で高速処理するソフトウェアだ。このソフトウェアの性能を引き出すには、ハードウェアとどう組み合わせるかも重要となる。
IBMでは、ハードウェア面からも積極的にSparkに関わっている。その一つとして、IBMのプロセッサーである「POWER8」を搭載するマシンで、Sparkの処理を最適化する作業を行っている。そして、POWER8を活用した場合の性能ベンチマークの結果もすでに公開している。
「Spark SQL、機械学習のMLlib、グラフデータ分析のGraphXなどを使ったSparkのベンチマークツールをGitHubで公開しています。これを使って、同程度のコア数となるCPUを搭載したPOWER8とx86のマシンを比較し、POWER8が平均で2倍以上の性能を発揮することが分かっています」(藤岡氏)
POWER8がSparkの処理に向いている理由は、1コアで8スレッドが利用できるスレッド性能の高さがある。さらにはメモリバンド幅が広いことも有利に働く。Sparkはインメモリで処理を行うので、CPUとメモリ間のやり取りが速ければ速いほど、処理の高速化につながる。
IBMシステムズ ハードウェア事業本部 ソリューション事業部 先進テクノロジー・センター 部長の髙田充康氏は、「IBMでは、自社のPOWERプロセッサーをオープン化しOpenPOWER Foundationというオープンなイノベーションを行なう団体をGoogle、Mellanox、NVIDIA、Tyanと共に立ち上げて活動を行っています(*注:2016年5月現在、会員は200を超える)。ここでは、様々な組織とエコシステムを築いています。そのエコシステムで、よりSparkに最適化したハードウェアを提供することにも取り組んでいます」と述べる。
実際にGPUベンダーのNVIDIAなどと協力し、インメモリの並列処理をさらに高速化するハードウェア開発も行っている。
プライベートクラウド環境でもSparkの活用を容易に
アナリティクス領域でのSparkの活用には、大きく分けて2つの用途が考えられる。ひとつが高速なバッチ処理による大量データの加工や集計だ。これは従来Hadoopが得意としてきたところだが、より複雑で高度な処理、繰り返し処理が多い機械学習などをSparkならインメモリの分散処理で高速に行える。
もうひとつは、ビッグデータに対するアドホックな分析だ。データサイエンティストなどの分析担当者が、Sparkが提供するシェルを利用することで、様々な分析アルゴリズムを手軽に試行錯誤できるようになる。バッチ処理やアドホックな分析の環境を簡単に利用でき、かつ分析環境が独立して他のユーザーの環境の影響を受けないようにしたい。
そういったニーズを満たすための一つの答えが、Bluemix上の「Spark as a Service」だ。Sparkで分析するデータをクラウド上に用意できれば、すぐに分析が可能だ。BluemixのSparkではEGOという分散処理エンジンを利用しており、YARNやMesosなどSparkで一般的に使われるスケジューラーをこのEGOに置き換えている。
「EGOはIBMがハイパフォーマンス・コンピューティングの世界で培ってきたスケジューリング技術を搭載しており、より柔軟で詳細なスケジューリングが行えます」(藤岡氏)
このようにSpark as a Serviceは便利で使いやすい環境だが、一方でコンプライアンスの制限から自社のデータをパブリッククラウドに置けない場合もある。さらには、大規模なバッチ処理をするような場合も、ビッグデータをパブリッククラウドに移動しなければならず、Spark as a Serviceには向いていない。
こうした場合、パブリックではなくプライベートクラウドのSpark環境が欲しくなる。それを実現するのが「IBM Platform Conductor for Spark」(以下Platform Conductorと略記)だ。
現状、Sparkを利用しようとすればHadoopのクラスタを構築し、その上にSparkを搭載するのが普通だ。その際、大規模なクラスタを構築し運用するのは大変なので、ユーザーや分析用途ごとに少ないノード数のサイロ化したクラスタ環境を構築してしまうのが現実だ。これではクラスタの管理も煩雑になり、計算資源も有効利用できない。これでは、多ノードで分散処理し高速化するSpark本来のメリットも十分に享受できない。
この課題を解消するにはHadoopクラスタにSparkを導入し、さらにその上にマルチテナントを実現できる仕組みも搭載しなければならない。これは、規模の違いはあるが「Spark as a Service」の環境を企業内に作るのと同じことになる。
そう考えると、一般の企業でそれだけの環境を用意するのはそう簡単ではないだろう。そもそもSparkはまだまだ新しい技術でもあり、Hadoop環境にSparkを載せるだけでもそれなりに手間がかかり面倒なものだ。
「Platform Conductorを使えば、プライベートクラウドでのSpark環境を容易に実現できます。ユーザーはSparkを使いたいのですが、そのために必ずしもHadoopを運用したいわけではありません。実際、Hadoopのコンポーネントはたくさんあり、Sparkとそれらを適切に組み合わせるのは容易ではありません。Platform Conductorを使えば、SparkのためにHadoopを別途導入する必要はなく、基本的にはPlatform Conductorのファイル1つを配布するだけですぐに使えるようになります」(藤岡氏)
Platform Conductorでは、Bluemixと同様に分散処理のエンジンにEGOを用いている。さらにクラスタの運用管理には、GUIツールも用意されており、そこから容易にユーザーごとに利用するインスタンスグループを作ったり、そのノード数の増減を行ったりすることが可能だ。
またSparkのランタイムは、現状3ヶ月に1度くらいの頻度で更新されている。Platform Conductorではこのランタイムの更新も、GUIを使って簡単に行える。さらにSparkの環境はPlatform Conductorの上で完全に独立した形で運用できるので、ユーザーごとにランタイム更新を行うかどうかなども柔軟に制御可能だ。これで、ユーザーがどのバージョンのランタイムを使うかは自由に選ぶことができる。
もう1つPlatform Conductorの特徴となっているのが、HDFSと互換性のあるIBM独自のIBM Spectrum Scale(旧GPFS)という分散ファイルシステムがあることだ。「IBM Spectrum ScaleはIBMのスーパーコンピュータの技術であるグリッドコンピューティングの成果」(藤岡氏)であり、HDFSよりも柔軟性が高く、OSから直接ファイルシステムをマウントして利用することも可能だ。
そのためPOSIXのコマンドなどを用いファイルシステムへ直接アクセスすることもできる。「Hadoopの面倒な作法なしで、データを直接IBM Spectrum Scaleに入れられるのもかなり便利です。Platform Conductorで、ユーザーにはSparkのためにHadoopよりも優れた足回りを提供できます」と藤岡氏は強調する。
データサイエンティストの“1人に1つ”のSpark環境を
「IBM Platform Conductorを使うことで、ITスキルの高くないような人にも、もっとSparkを使ってもらいたい」(髙田氏)
IBMでは、Sparkは使いたいけれどそのための足回りは触りたくないユーザーに、まずはすぐに使えるSpark as a Serviceを提供する。Spark利用の効果が認められ、企業内データで本格的な利用へと移行する段階となれば、IBMは企業のIT環境に応じた複数の製品を提供している。
1つ目は、前述のIBM POWERプロセッサーの高速性を生かしたアプライアンス製品「IBM Data Engine for Hadoop and Spark」、2つ目は、さらに柔軟性と拡張性の高いSparkのプライベートクラウド環境を構築できる「IBM Platform Conductor for Spark」だ。
また、企業の重要なデータの分析も視野に入れ、データサイエンティストや開発者がIBMメインフレームz Systems上のデータへリアルタイムかつセキュアに接続するためのz/OS Platform for Apache Sparkも提供している。
IBMは、企業でのSpark利用を推進するために、Spark利用の各段階における多様なユーザーニーズに応えるための選択肢を準備している。こうした対応からも、IBMの本気度を垣間見ることができる。
「ビッグデータ分析のニーズはあるけれど、実績のない新しいアーキテクチャとなる分散システムの導入をためらっている。そんな場合には、是非ともPlatform Conductorを検討してもらいたいです」(藤岡氏)
「人工知能や機械学習に興味があるような研究機関などにも、Platform Conductorで積極的にSparkを活用してもらいたいです」(髙田氏)
今後IBMでは、Sparkを使いこなすための教育にもさらに力を入れる。さらには、Platform Conductorを含むSparkのベストプラクティスといったものの情報も積極的に提供していく予定だ。
「これらのサービスを活用し、データサイエンティストの一人一人が、いつでも自分専用のSpark環境で分析できる環境を提供していく。これをIBMでは実現したい」と最後に藤岡氏は強調した。