Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

6

Share

Apache Spark 1000 nodes NTT DATA

■Apache_Sparkが描く大規模インメモリ処理の世界
(Cloudera World Tokyo 2014 講演資料)

株式会社NTTデータ 基盤システム事業本部
OSSプロフェッショナルサービス 土橋 昌

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all

Apache Spark 1000 nodes NTT DATA

  1. 1. 1Copyright © 2014 NTT DATA Corporation NTTデータ 基盤システム事業本部 OSSプロフェッショナルサービス 土橋 昌 Apache Sparkが描く大規模インメモリ処理の世界 ~数百台のSparkクラスタを動かしたNTTデータの現場より~
  2. 2. 2Copyright © 2014 NTT DATA Corporation 自己紹介  所属/氏名  基盤システム事業本部 OSSプロフェッショナルサービス  土橋昌(どばし まさる)  お仕事  OSSを使ったR&Dやシステム開発に携わっています  6年ほどHadoop関連のR&Dやシステム開発に関わってきました  近年はHadoopから派生して、ストリーム分散処理やインメモリ分散処理にも携わっています  最近の講演など  Spark Summit 2014 @サンフランシスコ  Hadoop Conference Japan 2014  日経BP IT PRO、日経コンピュータの記事など • http://itpro.nikkeibp.co.jp/atcl/column/14/081900045/?TOC=1&ST=bigdata • http://www.nikkeibp.co.jp/article/news/20140828/413029/?rt=nocnt • http://itpro.nikkeibp.co.jp/atcl/ncd/14/379228/071600004/
  3. 3. 3Copyright © 2014 NTT DATA Corporation 私たちはOSSのプロフェッショナル集団です  NTTデータ 基盤システム事業本部 OSSプロフェッショナルサービス  OSSのサポートサービス、構築・運用支援を担当 - 徹底的に検証・評価したOSSの組み合わせ、設定・運用のノウハウの提供 - 高品質なシステム基盤を実現する仕組みの整備 - 幅広いOSSを対象とするプロフェッショナルサービスの提供 - NTT持株会社 OSSセンタとも連携  平成22年7月 Hadoopの構築・運用ソリューションを提供開始 - http: //www.nttdata.co.jp/release/2010/070101.html  最近は に関する支援業務が多い  担当メンバには 「Hadoop徹底入門」、「HADOOP HACKS」 の著者が複数在籍  平成21年度 産学連携ソフトウェア工学実践事業報告書 高信頼クラウド実現用ソフトウェア開発 (分散制御処理技術等に係るデータセンター高信頼化に向けた実証事業) - http: //www.meti.go.jp/policy/mono_info_service/joho/downloadfiles/2010software_research/clou_dist_software.pdf
  4. 4. 4Copyright © 2014 NTT DATA Corporation 本日のお伝えしたいこと Sparkとは何か?何が嬉しいのか? Sparkは特徴的なプロダクトです。 特徴的なプロダクトを活かしきるには、 何を押さえておけばよいのか?
  5. 5. 5Copyright © 2014 NTT DATA Corporation 特徴的なプロダクトを活かすために大切なこと プロダクトの背景を知り、 アーキテクチャを知り、実際の挙動を知る その上でプロダクトの「得意分野」を活かす
  6. 6. Copyright © 2014 NTT DATA Corporation 6 Sparkの背景
  7. 7. 7Copyright © 2014 NTT DATA Corporation • データ集計・抽出と言った大容量処理だけではなく、純バッチの 高スループット化など大件数処理にも向いている • データを蓄積、変換するといった使い方でコストパフォーマンスが高い 秒 分 時間 日 Hadoopは大規模データ処理向けの仕組み デ ー タ の レ イ テ ン シ バッチ処理 リアルタイム処理 データサイズ少ない 多い オンライン処理 汎用検索 GB(ギガバイト) TB(テラバイト) PB(ペタバイト) TB(テラバイト) 大容量データ処理 オンバッチ処理 純バッチ処理 大件数データ処理 既存処理の高速化 蓄積・分析
  8. 8. 8Copyright © 2014 NTT DATA Corporation 秒 分 時間 日 Hadoopは大規模データ処理向けの仕組み デ ー タ の レ イ テ ン シ データサイズ TB(テラバイト) がもたらしたもの ディスクを並べてスループットを徹底的に引き出す =>大規模データ処理を現実的な時間幅に スケーラビリティ、現実的な運用性 =>並列分散処理を身近なものに
  9. 9. 9Copyright © 2014 NTT DATA Corporation しかし何物にも得意・不得意はある がすこし苦手だったもの レイテンシの低さの求められる処理 複雑で繰り返しが多い処理 他にもMapReduceのアプリケーションの書きづらさから、 HiveやPigが生まれた・・・という経緯もあります
  10. 10. 10Copyright © 2014 NTT DATA Corporation しかし何物にも得意・不得意はある がすこし苦手だったもの レイテンシの低さの求められる処理 複雑で繰り返しが多い処理 統計処理、機械学習、複雑な業務処理の中には 上記のような類が含まれることがあった 「分散処理が使いものになることが分かった。適用範囲をさらに広げたい」 と思ったからこその課題感
  11. 11. 11Copyright © 2014 NTT DATA Corporation  元データの蓄積と一次的な加工をHadoopが担当、分析を別の仕組みで実行 従来のHadoopを使う現場のよくある利用パターン Generated Data M R バッチ処理 (MapReduce) 分散ストレージ (HDFS) 外部システム 分析アプリ 外部システム データエクスポートの時間が 無視できない 入力 蓄積・処理 分析 大量の分析結果を 保存する場所に困る ストレージ
  12. 12. 12Copyright © 2014 NTT DATA Corporation  HadoopのHDFS内のデータをそのままSparkで読み込んで処理できる  YARNを使うと、従来の手堅いHadoop MapReduceと新しいSparkを併用できる HadoopとSparkを組み合わせる利用パターン Generated Data M R バッチ処理 (MapReduce) 分散ストレージ (HDFS) 外部システム インメモリ処理 HDFSに保存された データをそのまま入力 結果データを HDFSに保存 入力 蓄積・処理 分析
  13. 13. 13Copyright © 2014 NTT DATA Corporation データ処理に関するOSSの特徴比較の例 バッチ処理では間に合わないような 速報値を必要とするケースで、かつ1 台のサーバでは処理できない量の データに対応する必要があるケース でStormを採用する Storm ストリーム並列処理基盤 Hadoop バッチ並列処理基盤 Spark インメモリ並列処理基盤 PostgreSQL RDBMS 単体で少量のレコードを 処理・管理 オンディスク インメモリ 蓄積してバッチ処理 蓄積せずにメッセージ処理 単体処理 分散処理 マイクロバッチ イベント駆動処理 並列分散処理 分散して大量蓄積、 大量処理が得意 OSSは各々の得意分野を活かして使うのが良い
  14. 14. 14Copyright © 2014 NTT DATA Corporation データ処理に関するOSSの特徴比較の例 バッチ処理では間に合わないような 速報値を必要とするケースで、かつ1 台のサーバでは処理できない量の データに対応する必要があるケース でStormを採用する Storm ストリーム並列処理基盤 Hadoop バッチ並列処理基盤 Spark インメモリ並列処理基盤 PostgreSQL RDBMS 単体で少量のレコードを 処理・管理 オンディスク インメモリ 蓄積してバッチ処理 蓄積せずにメッセージ処理 単体処理 分散処理 マイクロバッチ イベント駆動処理 並列分散処理 分散して大量蓄積、 大量処理が得意 ユーザアカウント情報の管理 (1サーバで扱えて、厳密性を要 求される情報を管理する) ユーザ行動の即時処理 異常行動の検知 ユーザのページ遷移や行動履歴の分析 インタラクティブなデータ処理 例えば「ユーザ情報」という枠で考えると… データクレンジング 蓄積データの全件処理 大規模データの結合・非正規化
  15. 15. Copyright © 2014 NTT DATA Corporation 15 Sparkのポイント
  16. 16. 16Copyright © 2014 NTT DATA Corporation Sparkの特徴を説明する上で外せないポイント ポイント1 Sparkは柔軟な分散処理基盤 ポイント2 データをうまく扱うための抽象化の仕組み ポイント3 コアを中心に成り立つエコシステム 「メモリを使って処理をする」というコンセプトが大前提
  17. 17. 17Copyright © 2014 NTT DATA Corporation  クライアントからSparkアプリケーションを走らせると、 分散処理の内容が転送されてスレーブノード群で実行される  インタラクティブなシェルも付属していて、手元で動かしているような 使い勝手でドリルダウン分析を実施できる  手元のテスト環境で試行錯誤しつつ、本番クラスタに接続しなおして 同じ処理を実行するような使い方が可能 ポイント1:Sparkは柔軟な分散処理基盤 マスタ スレーブノード群 クライアント scala> val file = spark.textFile("hdfs://...") scala> val counts = file.flatMap(line => line.split(" ")) .map(word => (word, 1)) .reduceByKey(_ + _) scala> counts.saveAsTextFile("hdfs://...") メモリ ディスク 主にメモリ上で処理されつつ、 必要に応じてディスクが使われる シェル実行の例
  18. 18. 18Copyright © 2014 NTT DATA Corporation  分散したデータをコレクション(データ配列)のように扱える RDD(Resilient Distributed Dataset)  RDDを変換する流れを実装することで、様々なデータ処理を表現する  中間データをできるだけ生成せずに、各サーバで処理できることをまとめて実行  データをレプリケートしないことで最低限のIO  繰り返し使うデータをメモリに置くキャッシュ機能  何らかの理由で失われたデータを再び利用する場合は再生成する  元データとRDD変換の流れをもとに再生成 ポイント2:データをうまく扱うための抽象化の仕組み 「抽象化」、「割り切り」の方針がうまい これがSparkエコシステムの充実につながっている 個人的には・・・
  19. 19. 19Copyright © 2014 NTT DATA Corporation (補足)Hadoop MapReduceとの違い M M RM R M Map処理 Reduce処理 HDFSに書き出し HDFSから読み出し 従来のHadoopではMapReduceの単位で処理を表現 RDD RDD RDD Stage Stage データ変換(フィルター、フォーマット変換など) SparkではRDD(Resilient Distributed Dataset)の変換で処理を表現 ジョブ コレクションのように扱える データセットの定義 (1)ユーザがRDDの変換の流れを定義 (2)Sparkが処理をまとめこんで実行 データ通信せずに 処理できるタスクの単位で実行 シャッフル HDFSに書き出し HDFSから読み出し HDFSに書き出し HDFSから読み出し 中間データは HDFS(3冗長)ではなく ローカルで保持
  20. 20. 20Copyright © 2014 NTT DATA Corporation ポイント3:コアを中心に成り立つエコシステム Apache Spark(コア) Spark SQL Spark Streaming MLlib GraphX Sparkアプリ内で SQL/HQLを 利用できる ストリーム処理を マイクロバッチ方式で実現 Sparkアプリ内で 機械学習を 利用できる Sparkアプリ内で グラフ処理を 利用できる Scala、Java、Pythonで分散処理を記述できる コアやライブラリを組み合わせて利用することができる
  21. 21. 21Copyright © 2014 NTT DATA Corporation  データセットの抽象化の仕組み(RDD)と使いやすいAPIのおかげで、それを活用したラ イブラリが活発に開発される状況ができている  オープンな開発状況もそれに一役買っていると考えられる (補足)エコシステムが目覚ましく発展する理由 オープンで使いやすいコア (RDD・API) 便利なライブラリの活発な開発 (Spark SQL・MLlib・Spark Streaming・GraphX) ライブラリの組み合わせも可能 (Spark SQL+MLlib、MLlib+Spark Streamingなど) Hadoopはエコシステムを含めて開発者、利用者を増やして成功した Sparkもオープンな活動を続けており良いサイクルができつつあるように見える
  22. 22. 22Copyright © 2014 NTT DATA Corporation  Spark Summit 2014で紹介されていた事例  Sparkコアで開発する場合も、各ライブラリを使う場合もある Sparkエコシステム活用の例 引用元: Spark and Shark Bridges the Gap Between BI and Machine Learning at Yahoo! Taiwan Yahoo! Taiwanのポータルサイトにおける利用 トラフィック/トランザクションログを利用した BI(レポーティング)と機械学習(レコメンデーション) の処理にSparkを導入 Ooyalaのストリーム処理への利用 ビデオ配信に関するアクセスログの SparkStreamingによる分析を実施 引用元: Productionizing a 24/7 Spark Streaming Service on YARN (OOYALA)
  23. 23. Copyright © 2014 NTT DATA Corporation 23 Sparkを使いきるための勘所
  24. 24. 24Copyright © 2014 NTT DATA Corporation  背景や開発状況から特徴を押さえること  実際の動作を踏まえた勘所を押さえること Sparkのようなプロダクトを扱うときのコツは? プロダクトB プロダクトA プロダクトC プロダクトの特徴は、往々にして「できる/できない」ではなく、「得意/不得意」である プロダクトの特徴と業務要件、 特に将来像を照らし合わせる 得意分野を活かせるように 場合によっては組み合わせる 特徴の重なり領域での動作が気になることが多い 得意分野と適用範囲の重なりイメージ
  25. 25. 25Copyright © 2014 NTT DATA Corporation  これまでの「Hadoopのシステム開発経験」と「Sparkのアーキテクチャ面 の特徴」から、Sparkは幅広い業務に対応し、データ分析基盤の一角を 担えるようになるはずだ、と考えた  Spark1.0.2の段階で特に以下の点に着目し、数千コアのYARNクラス タなどで確かめてきました Hadoopのプロから見て「確かめたかったこと」 機械学習以外の並列分散処理にも十分使える? メモリサイズを超えるようなデータの取り扱いは? アプリケーション実装における使い勝手は?
  26. 26. 26Copyright © 2014 NTT DATA Corporation 機械学習以外の並列分散処理にも十分使える? WordCount(基本的な集計)の処理時間 大規模シャッフル時の処理時間 「機械学習・統計処理に強い」イメージだが、 基本的な処理にも当然対応 様々な業務処理の基本的な処理は現実的な数十GB~数十TBオーダで動作(Spark1.0.2) Spark1.1.0になり、sort-based shuffleが導入された。分散処理の鬼門となるデータ交換に 関する改善活動が活発になっており期待が高い。(主に大規模な計算を対象とした改善)
  27. 27. 27Copyright © 2014 NTT DATA Corporation メモリサイズを超えるようなデータの取り扱いは? データをメモリに蓄積しない処理は順次処理される メモリに蓄積するキャッシュ機能は柔軟に機能した WordCount(基本的な集計)の処理時間 総ヒープサイズ ロジスティック回帰(簡易版)の実行時間 キャッシュに載りきら ないときも動作 バージョンが上がるごとに改善されているが、数十TBのデータを処理するときは パラメータチューニングが必要だった キャッシュを活用するときには、オブジェクトのサイズに注意。キャッシュに載せるデータは シンプルな構造を推奨
  28. 28. 28Copyright © 2014 NTT DATA Corporation アプリケーション実装における使い勝手は? データ処理やデータ分析の面では使いやすい印象 Sparkコアの上に成り立つライブラリは気軽に始めやすい val file = spark.textFile("hdfs://...") val errors = file.filter(line => line.contains("ERROR")) val cnt = errors.count() Scalaで書かれたログのフィルタリングと集計の例 他にもJava、Python、SQL(HiveQL)で記述可能 Sparkでデータ処理/分析する流れの一例 Hadoop HDFSにデータを取り込み Sparkシェルを用いてインタラクティブに処理しながらデータ処理の流れを決定 場合によってMLlib(統計処理、機械学習ライブラリ)などを利用 アプリケーションとしてバッチ処理化
  29. 29. Copyright © 2014 NTT DATA Corporation 29 まとめにかえて
  30. 30. 30Copyright © 2014 NTT DATA Corporation 特徴をつかんで得意分野を活かすべし  Hadoopのプロの目から見て、Sparkは「抽象化」と「割り切り」の方針がうまい  Sparkは、「オープンな開発状況」、「利用しやすいコア(RDDとAPI)」、「強力なライブラ リ群」に牽引されて利用が広がり、注目を集めるようになってきた  魅力的な機能が揃いつつあるが、「動かす」を超えて「活かす」ためには、背景やアー キテクチャから見た特徴(得意/不得意)を押さえておくことが大切 場合によっては、いくつかのOSSを組み合わせるのがよい Storm Hadoop Spark PostgreSQL
  31. 31. 31Copyright © 2014 NTT DATA Corporation 2015年1月26日(月)にセミナーを開催します
  32. 32. Copyright © 2011 NTT DATA Corporation Copyright © 2014 NTT DATA Corporation お問い合わせ先: 株式会社NTTデータ 基盤システム事業本部 OSSプロフェッショナルサービス URL: http://oss.nttdata.co.jp/hadoop メール: hadoop@kits.nttdata.co.jp TEL: 050-5546-2496
  33. 33. 33Copyright © 2014 NTT DATA Corporation Spark動作環境の一例 10G NW with core switch CentOS6.5 HDFS & YARN(CDH5.0.1) Spark 1.0.0 ソフトウェアスタック • 物理2000 コア over • 10TB+ RAM 10G NW with top of rack switch 項目 値 CPU E5-2620 6 core x 2 socket Memory 64GB 1.3GHz NW interface 10GBase-T x 2 port (bonding) Disk 3TB SATA 6Gb 7200rpm ハードウェアスペック クラスタサイズ 数TB級のデータを 扱うためのYARN環境
  • HirofumiKawasaki

    Mar. 8, 2017
  • uchiyama512

    Sep. 22, 2016
  • KenichiTakahashi1

    Dec. 26, 2015
  • indy-yuki

    Oct. 26, 2015
  • nakaharatm

    Mar. 20, 2015
  • JaneFReed

    Dec. 26, 2014

■Apache_Sparkが描く大規模インメモリ処理の世界 (Cloudera World Tokyo 2014 講演資料) 株式会社NTTデータ 基盤システム事業本部 OSSプロフェッショナルサービス 土橋 昌

Views

Total views

8,330

On Slideshare

0

From embeds

0

Number of embeds

4,494

Actions

Downloads

0

Shares

0

Comments

0

Likes

6

×