NTTデータにおける Apache Spark への取り組み
6,789 views
Published on
オープンソースカンファレンス 2014 Kansai@Kyoto 講演資料(2014/08/02)
■NTTデータにおける Apache Spark への取り組み
下垣 徹 (NTTデータ 基盤システム事業本部 システム方式技術事業部)
https://www.ospn.jp/osc2014-kyoto/modules/eguide/event.php?eid=51
NTTデータにおける Apache Spark への取り組み
- 1. NTTデータにおけるApache Spark への取り組み2014/08/02(株) NTTデータ 基盤システム事業本部下垣 徹オープンソースカンファレンス2014 Kansai@Kyoto
- 2. 2Copyright © 2013 NTT DATA Corporation “The Elephant Wizard”NTTデータ OSSプロフェッショナルサービス の一員OSSのRDBMS “PostgreSQL” の開発・導入大量データの蓄積・処理に “Hadoop”自己紹介:下垣 徹 (しもがき とおる)Co-Author2nd Editionin Japan10+ yearsContributorEx. pg_bulkload6+ yearsLeads JapaneseHadoop Community
- 3. 3Copyright © 2013 NTT DATA Corporation Apache Spark とは Spark Summit 2014 レポートと Spark の最新動向 NTTデータにおける Apache Spark への取り組みアジェンダ
- 4. Copyright © 2013 NTT DATA Corporation 4Apache Spark とは
- 5. 5Copyright © 2013 NTT DATA Corporation 大規模データの分散処理をオンメモリで実現するデータ処理してHDDに都度書き出す方式よりも高速JavaやScalaのコレクション操作のような使い方で分散処理を実現できる 大規模データの分散処理ではHadoopが有名だが、Hadoopとは異なるアイデア・方法でデータ処理を実現するUCBerkeleyのResilient distributed datasets(RDD)の論文がおおもとSparkとはオンメモリデータ処理の分散処理基盤Hadoopとよく比較されるが、アーキテクチャが全く異なる最新バージョン「Spark 1.0.1」(2014/7/11 リリース)メモリ上に分散した変換処理に適したデータセット
- 6. 6Copyright © 2013 NTT DATA CorporationHadoopはディスクIOを並列化してスループット高める• 集中管理型の分散システム– 分散処理ジョブやデータの管理はマスタサーバで実施– スレーブサーバは、分散処理の実行やデータの実体を保存• スレーブサーバを増やすことで、全体の処理性能を向上させるスケールアウトアーキテクチャHadoopマスタサーバHadoopクライアントL2/L3スイッチNameNode JobTrackerL2スイッチHadoopスレーブサーバ群DataNodeTaskTrackerDataNodeTaskTrackerDataNodeTaskTrackerDataNodeTaskTrackerDataNodeTaskTrackerディスク ディスク ディスク ディスク ディスクディスクIOの並列化レプリケーションによる永続化
- 7. 7Copyright © 2013 NTT DATA Corporation 機械学習のような繰り返し処理に MapReduce を適用する上での問題点 MapReduce の起動に時間がかかる (最低でも 15 秒) 処理途中でディスクへの書き込みが発生する- 処理開始時に HDFS からデータを読み込み、処理終了時に HDFS に書き込む- 中間処理で、処理結果をローカルディスクに書き込む Spark ではディスクI/Oを減らすように動作することで高速化を狙うなぜSparkなのか?MapMapMapReduceReduceHDFS HDFSMapReduceでディスクI/Oが発生する箇所→ Spark では Shuffle 以外の箇所で発生するディスク I/O を極力起こさないように動作するShuffle
- 8. 8Copyright © 2013 NTT DATA CorporationSparkは繰り返し処理を高速に実現GeneratedDataOutputOutputData分散ファイルシステム HDFSバッチ処理MapReduceインメモリ分散処理Sparkリソース制御:YARN繰り返し処理にHadoopとSparkを組み合わせるイメージ大きなデータをMapReduceで加工データがメモリ上に置かれるためレスポンスに優れるSpark内の処理イメージデータ同じデータを繰り返し処理データ データ データ変換処理を連続で適用HDFS上のデータを利用小処理をつなげて大処理を実現メモリ メモリ
- 9. 9Copyright © 2013 NTT DATA Corporation JavaやScalaのコレクション操作のようなメソッドやフレームワークを利用できるため、JavaやScalaに慣れた技術者にとって、複雑な処理を実装しやすい Hadoopを置き換えるものではなく、SparkはHadoopの仕組みも利用する 利用例 ログ分析: POSデータ解析、トラヒック解析、M2M、行動履歴、ライフログ長期保存 など レコメンド: クリック・ストリーム分析、関係グラフ解析、広告分析 など 検索: 非構造データの検索、データ抽出 データマイニング: 取引情報の分析・監査、不整データの抽出など 機械学習: 大量データのパターン分析、分類などSparkは大量データを次々に変換する処理が得意得意 苦手 Hadoopで加工した後のドリルダウン分析 TB級までのデータを扱うシステム サンプリングが有効でないロングテールのデータ分析 数秒~数分級のHadoopよりも短いレスポンスが必要な処理 クラスタ全体のメモリに乗り切らない巨大なデータ処理(TB級以上) 大きなデータセットを少しずつ更新する処理 秒以下の特に短いレスポンスが必要な処理
- 10. 10Copyright © 2013 NTT DATA CorporationHadoopなどを含むエコシステムで成り立つ• Spark : イテレーションや多段MapReduceを効率的に実行するインメモリ分散処理基盤バッチ処理では間に合わないような速報値を必要とするケースで、かつ1台のサーバでは処理できない量のデータに対応する必要があるケースでStormを採用するStormストリーム並列処理基盤Hadoopバッチ並列処理基盤Sparkインメモリ並列処理基盤イテレーションを回したりピボット処理を行うようなインメモリでの処理を必要とする場合、従来はRDBMSで扱えるデータサイズにまで減らしてから処理していたPostgreSQLRDBMSOracle Coherence や SAP HANA のような高価な商用製品でしか実現できなかったインメモリでの並列分散処理がIAサーバ+OSSで実現可能になる1台のサーバによる少量のレコードに対する処理・管理 (e.g. インデックススキャン、レコード単位の更新)複数台サーバによる大量のデータに対する蓄積・処理が得意ディスク上でのデータ処理メモリ上でのデータ処理データを蓄積した上でバッチ処理入力される各レコードに対する逐次処理1台のサーバ内での処理複数台サーバでの処理メモリ上でデータを保持して処理データを保持・蓄積せずに処理並列分散処理
- 11. 11Copyright © 2013 NTT DATA Corporation互いの得意分野が少しずつ異なるバッチ処理では間に合わないような速報値を必要とするケースで、かつ1台のサーバでは処理できない量のデータに対応する必要があるケースでStormを採用するStormストリーム並列処理基盤Hadoopバッチ並列処理基盤Sparkインメモリ並列処理基盤PostgreSQLRDBMS1台のサーバによる少量のレコードに対する処理・管理 (e.g. インデックススキャン、レコード単位の更新)複数台サーバによる大量のデータに対する蓄積・処理が得意ディスク上でのデータ処理メモリ上でのデータ処理データを蓄積した上でバッチ処理入力される各レコードに対する逐次処理1台のサーバ内での処理複数台サーバでの処理メモリ上でデータを保持して処理データを保持・蓄積せずに処理並列分散処理ユーザアカウント情報の管理(1サーバで扱えて、厳密性を要求される情報を管理する) ユーザ行動の即時処理異常行動の検知ユーザのページ遷移や行動履歴の分析インタラクティブなデータ処理例えば「ユーザ情報」という枠で考えると…データクレンジング蓄積データの全件処理(総メモリに乗り切らない処理)
- 12. 12Copyright © 2013 NTT DATA Corporation Apache Spark をコア機能として、SQL、機械学習、ストリーム処理、グラフ処理の各種インターフェースを提供し、Spark独自のエコシステムを形成Spark エコシステムインメモリ分散処理Apache SparkSQLSparkSQL機械学習MLLibストリーム処理SparkStreamingグラフGraphX
- 13. 13Copyright © 2013 NTT DATA Corporation 2009年: UC Berkley AMPLab にて研究プロジェクトがスタート 2012年: AMP Camp 1 2013年: 急速に動きが活発化 6/19 Apache Incubation Project 8月 AMP Camp 2 10/27 AMPLab から Databrics 社設立 12/2 Spark Summit 2013 開催 2014年: 3/30 Spark 1.0.0 リリース 6/30 Spark Summit 2014 開催 7/11 Spark 1.0.1 リリースSpark の歴史Spark Summit 2013 の様子
- 14. Copyright © 2013 NTT DATA Corporation 14Spark Summit 2014 レポートと Spark の最新動向
- 15. 15Copyright © 2013 NTT DATA Corporation 今回が2回目の開催となる Spark Summit The Westin St. Francis San Francisco on Union Square 前回の開催が 2013年12月であり、わずか半年後に2回目が開催 参加者は1000人以上 前回の400人を大きく上回った。 受付の行列は非常に長く、カンファレンス開始直前から大混雑であり会場はやや手狭にさえ感じられた。Spark Summit 2014
- 16. 16Copyright © 2013 NTT DATA Corporation Apache Software Foundation のプロジェクトの中で Top 3に入るほど活発 Spark 独自のエコシステムを形成し、ビッグデータ活用のための標準ライブラリを目指すSpark の開発状況と方向性(出典: Spark Summit 2014 keynote)
- 17. 17Copyright © 2013 NTT DATA Corporation 前回カンファレンスよりも充実、エコシステムの活用もSpark の利用事例企業 概要Spotify 協調フィルタリングによる音楽のリコメンデーションYahoo!Taiwan データ基盤を統合し、BI(レポーティング)と機械学習(レコメンデーション)を統合、Shark や MLlib を活用し、SparkSQLも利用を検討Telefonica サイバーセキュリティ対策のためのデータ分析基盤SKTelecom 商用MPP DBのSparkへの置き換え。SparkStreamingによるリアルタイムデータ処理Ooyala ビデオ配信に関するアクセスログのSparkStreamingによる分析ビデオ配信に関するアクセスログのSparkStreamingによる分析
- 18. Copyright © 2013 NTT DATA Corporation 18NTTデータにおける Apache Spark への取り組み
- 19. 19Copyright © 2013 NTT DATA Corporation 既存のHadoopクラスタのリソースを有効活用したいHadoopは手堅くスケーラビリティを得られる分散処理基盤として地位が確立されており、継続して活用を続ける Hadoop と Spark を適材適所で組み合わせて利用 Hadoop の動向 → “YARN” にも着目NTTデータにおける Apache Spark への取り組み
- 20. 20Copyright © 2013 NTT DATA Corporation YARN : 並列分散処理フレームワークからリソース制御のレイヤを切り出したHadoopの動向 ~YARNの登場~分散ファイルシステムHDFSバッチ処理MapReduce従来のHadoop分散ファイルシステムHDFSバッチ処理MapReduceこれからのHadoopリソース制御YARN
- 21. 21Copyright © 2013 NTT DATA Corporation YARN により単一クラスタ内に複数の分散処理アーキテクチャを同居可能にHadoopの動向~YARN上の処理アーキテクチャ~分散ファイルシステムHDFSバッチ処理MapReduceリソース制御YARNストリーム処理Stormインメモリ分散処理Spark・・・・・・
- 22. 22Copyright © 2013 NTT DATA Corporation Spark の活用に加えて YARN の活用もあわせて行う用途別の複数クラスタやDBMS/MPP-DBMSの並立から、データストアを共有したハイブリッドな統合処理基盤の実現従来の MapReduce 処理も活かしながら、他の処理基盤の追加を後から行うことが可能にNTTデータでの Spark への取り組み分散ファイルシステム HDFSバッチMapReduceSQLHiveリソース管理機構 YARNインメモリ分散処理Apache SparkSQLSparkSQL機械学習MLLibグラフGraphXストリームSparkStreaming
- 23. 23Copyright © 2013 NTT DATA Corporation 約200台のクラスタの Spark on YARN 環境で検証を実施 クラスタ全体のメモリサイズを超えるデータ量に対する検証も大規模な Spark 検証の実施Spark Summit 2014 / Hadoop Conference Japan 2014
- 24. 24Copyright © 2013 NTT DATA Corporation Sparkへの取り組みを通じて発見した課題を随時コミュニティに報告、修正パッチを提供 リリースマネージャをつとめる Patrick Wendell 氏を交えて、Spark への希望や改善提案を議論Spark コミュニティでの活動と主要開発者との意見交換
- 25. 25Copyright © 2013 NTT DATA Corporation Spark はメモリ上で処理を得意とする並列分散処理基盤Hadoop がディスクI/Oを伴いながら、スケーラビリティを追究したのと比較 Spark エコシステムが充実:SQL、機械学習、ストリーム処理、グラフ処理のインターフェースを備える NTTデータは Spark への取り組みを加速Spark on YARNコミュニティと連携しながら運用面での改善を実施まとめ
- 26. Copyright © 2011 NTT DATA CorporationCopyright © 2013 NTT DATA Corporationお問い合わせ先:株式会社NTTデータ 基盤システム事業本部OSSプロフェッショナルサービスURL: http://oss.nttdata.co.jp/hadoopメール: hadoop@kits.nttdata.co.jp TEL: 050-5546-2496