Shoeisha Technology Media

CodeZine(コードジン)

特集ページ一覧

新しいビッグデータ分析基盤「Apache Spark」登場の背景と、押さえておきたい活用ポイント

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加
2016/07/08 14:00

 ビッグデータ分析を行うための新しい基盤としてApache Sparkが注目を集めている。Hadoopがデータ分析基盤のデファクトスタンダードとして定着した今、なぜSparkが登場したのだろうか。その経緯やHadoopとの違い、IBMのSparkへの取り組み、そしてプラットフォーム選択における最適解について、日本アイ・ビー・エム 田中裕一氏、中島康裕氏に伺った。

日本アイ・ビー・エム IBMシステムズ・ハードウェア事業本部 ITスペシャリスト 中島康裕氏(左)、同 アナリティクス事業本部 田中裕一氏(右)

日本アイ・ビー・エム IBMシステムズ・ハードウェア事業本部 ITスペシャリスト 中島康裕氏(左)、
同 アナリティクス事業本部 田中裕一氏(右)

Hadoopの登場により本格的なビッグデータ時代が到来

 ビッグデータ分析や機械学習など、大規模データ処理のベースとなるのが分散コンピューティング技術である。しかし、以前の分散コンピューティングアーキテクチャは多くの課題を抱えていた。一つはプログラムが高度化・複雑化してしまうという問題だ。特に、データの同期や分散・並行処理においては、独自に機能を実装しなければならず、その傾向が顕著であった。また、対象のデータを1か所にまとめて格納しなければならない中央集中型のアーキテクチャが多く、ネットワークを介して大量のデータを転送する際に大きな負荷・長い時間がかかってしまう。複数台のサーバで並列処理を行うために、全体的に見るとサーバ単体で稼動する小規模システムより障害率が高くなるといった問題もあった。

 こうした課題を解決する新技術として登場したのが「Hadoop」だ。オープンソースの分散コンピューティングミドルウェアであるHadoopは、ユーザに並列・分散を意識させないフレームワークを提供しており、ユーザはアプリケーションの開発に専念できる。また、従来の中央集中型とは異なり、データを1か所にまとめることなく複数のサーバに分散して格納し、格納場所での処理が可能であるため、データ転送の負荷が発生しない。また、ノード追加により処理容量を容易に増やせる上、ノードに障害が発生してもシステム全体は停止せず、複製によりデータが保護されるなど、スケーラビリティ、耐障害性にも優れている。

Hadoopはデータが分散して格納された状態で処理を行う
Hadoopはデータが分散して格納された状態で処理を行う

 Hadoopを利用すると、スーパーコンピュータやHPC(High Performance Computing)がなくても複数のサーバを使って、これまでは不可能・非現実的と思われていた容量・頻度でデータを処理できる。すなわち、スパコンに投資できない企業でも、安価に大規模データ処理が可能になるということだ。Hadoopが本格的なビッグデータ時代の到来を大きく後押ししたと言っても過言ではないだろう。

より高度な処理への要望から生まれたSpark

 かつては、広告やネット系企業向けの技術というイメージが強かったHadoopだが、データの分析・活用の範囲が大きく広がる中、今では金融、製造、ヘルスケアなど数多くの業界でデータ活用のための技術として活用されている。しかし、活用が進むにつれ、新たな課題が見えてきた。Hadoop技術は、大容量のデータを処理できること、つまりスループットを重視した設計であるため、データ処理の際のレイテンシが比較的高く、機械学習などの繰り返し処理を多く含む処理では時間がかかるという課題だ。また、スケールアウトによるシステム増築の結果サーバ台数が増加し、運用が複雑になりがちといった課題も出てきた。

 そんな中、大規模データ処理をより速く短時間で行いたい、トライ&エラーでより手軽にデータ活用を模索したいといった新たな要件も出てくることになったのである。

事例1:PSAプジョー・シトロエン社(欧州の自動車メーカー)

 交通状況や生産情報、天候などの一般的な情報提供だけでなく、運転データをリアルタイムに分析して未然に事故を防止する"Connected Carサービス"を、Hadoop(IBM BigInsights)技術を活用していち早く実現。

 Hadoopによりデータの分析・活用の範囲が広がり、製造業、金融などの多くの分野で取り組みが始まっている。

欧州PSAプジョー・シトロエン社での事例
欧州PSAプジョー・シトロエン社での事例

 Sparkは、こういった状況を背景にカリフォルニア大学バークレー校のAMPLabによって開発され、のちにオープンソースとして公開された。複数のサーバで安価に大規模データ処理を実行できる点はHadoopと同様であるが、分散データを抽象化するRDD(Resilient Distributed Dataset)と複数の処理を記述可能なDAG(Directed Acyclic Graph)というプログラミングモデルを採用し、オンメモリでデータ処理を行うことで、高速化を実現している。近年メモリ単価が大きく下がっており、以前よりも低いコストで大容量のメモリを利用できるようになったことも、Sparkが注目を集めた理由の一つとなっている。

 Sparkは、RDDやメモリ管理、スケジュール管理といった基本機能を提供する「Spark Core」と、その上で動作する各種機能のライブラリで構成される。SQLインターフェースを提供する「Spark SQL」、グラフ化機能の「GraphX」、ストリーミングを扱う「Spark Streaming」、機械学習機能の「MLlib」という4つの標準ライブラリのほか、必要に応じて他のライブラリを組み合わせて利用することが可能だ。また、分散処理を記述するために80以上の演算子が用意されており、Java、Scala、Python、Rで容易にプログラムを作成できる。

Sparkの構成
Sparkの構成

続きはPDFで

 『新しいビッグデータ分析基盤「Apache Spark」登場の背景と、押さえておきたい活用ポイント』(PDF)の全文は、こちらから無料で入手いただけます。期間限定公開のため、ぜひお早めにダウンロードしてください。

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • 坂井 直美(サカイ ナオミ)

    SE、通信教育講座の編集、IT系出版社の書籍編集を経てフリーランスへ。IT分野で原稿を書いたり編集したり翻訳したり。

All contents copyright © 2005-2019 Shoeisha Co., Ltd. All rights reserved. ver.1.5