日本アイ・ビー・エム IBMシステムズ・ハードウェア事業本部 ITスペシャリスト 中島康裕氏(左)、
同 アナリティクス事業本部 田中裕一氏(右)
Hadoopの登場により本格的なビッグデータ時代が到来
ビッグデータ分析や機械学習など、大規模データ処理のベースとなるのが分散コンピューティング技術である。しかし、以前の分散コンピューティングアーキテクチャは多くの課題を抱えていた。一つはプログラムが高度化・複雑化してしまうという問題だ。特に、データの同期や分散・並行処理においては、独自に機能を実装しなければならず、その傾向が顕著であった。また、対象のデータを1か所にまとめて格納しなければならない中央集中型のアーキテクチャが多く、ネットワークを介して大量のデータを転送する際に大きな負荷・長い時間がかかってしまう。複数台のサーバで並列処理を行うために、全体的に見るとサーバ単体で稼動する小規模システムより障害率が高くなるといった問題もあった。
こうした課題を解決する新技術として登場したのが「Hadoop」だ。オープンソースの分散コンピューティングミドルウェアであるHadoopは、ユーザに並列・分散を意識させないフレームワークを提供しており、ユーザはアプリケーションの開発に専念できる。また、従来の中央集中型とは異なり、データを1か所にまとめることなく複数のサーバに分散して格納し、格納場所での処理が可能であるため、データ転送の負荷が発生しない。また、ノード追加により処理容量を容易に増やせる上、ノードに障害が発生してもシステム全体は停止せず、複製によりデータが保護されるなど、スケーラビリティ、耐障害性にも優れている。

Hadoopを利用すると、スーパーコンピュータやHPC(High Performance Computing)がなくても複数のサーバを使って、これまでは不可能・非現実的と思われていた容量・頻度でデータを処理できる。すなわち、スパコンに投資できない企業でも、安価に大規模データ処理が可能になるということだ。Hadoopが本格的なビッグデータ時代の到来を大きく後押ししたと言っても過言ではないだろう。
より高度な処理への要望から生まれたSpark
かつては、広告やネット系企業向けの技術というイメージが強かったHadoopだが、データの分析・活用の範囲が大きく広がる中、今では金融、製造、ヘルスケアなど数多くの業界でデータ活用のための技術として活用されている。しかし、活用が進むにつれ、新たな課題が見えてきた。Hadoop技術は、大容量のデータを処理できること、つまりスループットを重視した設計であるため、データ処理の際のレイテンシが比較的高く、機械学習などの繰り返し処理を多く含む処理では時間がかかるという課題だ。また、スケールアウトによるシステム増築の結果サーバ台数が増加し、運用が複雑になりがちといった課題も出てきた。
そんな中、大規模データ処理をより速く短時間で行いたい、トライ&エラーでより手軽にデータ活用を模索したいといった新たな要件も出てくることになったのである。
事例1:PSAプジョー・シトロエン社(欧州の自動車メーカー)
交通状況や生産情報、天候などの一般的な情報提供だけでなく、運転データをリアルタイムに分析して未然に事故を防止する"Connected Carサービス"を、Hadoop(IBM BigInsights)技術を活用していち早く実現。
Hadoopによりデータの分析・活用の範囲が広がり、製造業、金融などの多くの分野で取り組みが始まっている。

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で容易にプログラムを作成できる。

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