Mais conteúdo relacionado
Semelhante a Apache Spark 1000 nodes NTT DATA (20)
Mais de NTT DATA OSS Professional Services (20)
Apache Spark 1000 nodes NTT DATA
- 1. 1Copyright © 2014 NTT DATA Corporation
NTTデータ 基盤システム事業本部
OSSプロフェッショナルサービス
土橋 昌
Apache Sparkが描く大規模インメモリ処理の世界
~数百台のSparkクラスタを動かしたNTTデータの現場より~
- 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. 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. 4Copyright © 2014 NTT DATA Corporation
本日のお伝えしたいこと
Sparkとは何か?何が嬉しいのか?
Sparkは特徴的なプロダクトです。
特徴的なプロダクトを活かしきるには、
何を押さえておけばよいのか?
- 5. 5Copyright © 2014 NTT DATA Corporation
特徴的なプロダクトを活かすために大切なこと
プロダクトの背景を知り、
アーキテクチャを知り、実際の挙動を知る
その上でプロダクトの「得意分野」を活かす
- 7. 7Copyright © 2014 NTT DATA Corporation
• データ集計・抽出と言った大容量処理だけではなく、純バッチの
高スループット化など大件数処理にも向いている
• データを蓄積、変換するといった使い方でコストパフォーマンスが高い
秒
分
時間
日
Hadoopは大規模データ処理向けの仕組み
デ
ー
タ
の
レ
イ
テ
ン
シ
バッチ処理
リアルタイム処理
データサイズ少ない 多い
オンライン処理
汎用検索
GB(ギガバイト) TB(テラバイト) PB(ペタバイト)
TB(テラバイト)
大容量データ処理
オンバッチ処理
純バッチ処理
大件数データ処理
既存処理の高速化 蓄積・分析
- 8. 8Copyright © 2014 NTT DATA Corporation
秒
分
時間
日
Hadoopは大規模データ処理向けの仕組み
デ
ー
タ
の
レ
イ
テ
ン
シ
データサイズ
TB(テラバイト)
がもたらしたもの
ディスクを並べてスループットを徹底的に引き出す
=>大規模データ処理を現実的な時間幅に
スケーラビリティ、現実的な運用性
=>並列分散処理を身近なものに
- 9. 9Copyright © 2014 NTT DATA Corporation
しかし何物にも得意・不得意はある
がすこし苦手だったもの
レイテンシの低さの求められる処理
複雑で繰り返しが多い処理
他にもMapReduceのアプリケーションの書きづらさから、
HiveやPigが生まれた・・・という経緯もあります
- 10. 10Copyright © 2014 NTT DATA Corporation
しかし何物にも得意・不得意はある
がすこし苦手だったもの
レイテンシの低さの求められる処理
複雑で繰り返しが多い処理
統計処理、機械学習、複雑な業務処理の中には
上記のような類が含まれることがあった
「分散処理が使いものになることが分かった。適用範囲をさらに広げたい」
と思ったからこその課題感
- 11. 11Copyright © 2014 NTT DATA Corporation
元データの蓄積と一次的な加工をHadoopが担当、分析を別の仕組みで実行
従来のHadoopを使う現場のよくある利用パターン
Generated
Data
M R
バッチ処理
(MapReduce)
分散ストレージ
(HDFS)
外部システム
分析アプリ
外部システム
データエクスポートの時間が
無視できない
入力 蓄積・処理 分析
大量の分析結果を
保存する場所に困る
ストレージ
- 12. 12Copyright © 2014 NTT DATA Corporation
HadoopのHDFS内のデータをそのままSparkで読み込んで処理できる
YARNを使うと、従来の手堅いHadoop MapReduceと新しいSparkを併用できる
HadoopとSparkを組み合わせる利用パターン
Generated
Data
M R
バッチ処理
(MapReduce)
分散ストレージ
(HDFS)
外部システム
インメモリ処理
HDFSに保存された
データをそのまま入力
結果データを
HDFSに保存
入力 蓄積・処理 分析
- 13. 13Copyright © 2014 NTT DATA Corporation
データ処理に関するOSSの特徴比較の例
バッチ処理では間に合わないような
速報値を必要とするケースで、かつ1
台のサーバでは処理できない量の
データに対応する必要があるケース
でStormを採用する
Storm
ストリーム並列処理基盤
Hadoop
バッチ並列処理基盤
Spark
インメモリ並列処理基盤
PostgreSQL
RDBMS
単体で少量のレコードを
処理・管理
オンディスク
インメモリ
蓄積してバッチ処理
蓄積せずにメッセージ処理
単体処理
分散処理
マイクロバッチ
イベント駆動処理
並列分散処理
分散して大量蓄積、
大量処理が得意
OSSは各々の得意分野を活かして使うのが良い
- 14. 14Copyright © 2014 NTT DATA Corporation
データ処理に関するOSSの特徴比較の例
バッチ処理では間に合わないような
速報値を必要とするケースで、かつ1
台のサーバでは処理できない量の
データに対応する必要があるケース
でStormを採用する
Storm
ストリーム並列処理基盤
Hadoop
バッチ並列処理基盤
Spark
インメモリ並列処理基盤
PostgreSQL
RDBMS
単体で少量のレコードを
処理・管理
オンディスク
インメモリ
蓄積してバッチ処理
蓄積せずにメッセージ処理
単体処理
分散処理
マイクロバッチ
イベント駆動処理
並列分散処理
分散して大量蓄積、
大量処理が得意
ユーザアカウント情報の管理
(1サーバで扱えて、厳密性を要
求される情報を管理する) ユーザ行動の即時処理
異常行動の検知
ユーザのページ遷移や行動履歴の分析
インタラクティブなデータ処理
例えば「ユーザ情報」という枠で考えると…
データクレンジング
蓄積データの全件処理
大規模データの結合・非正規化
- 16. 16Copyright © 2014 NTT DATA Corporation
Sparkの特徴を説明する上で外せないポイント
ポイント1 Sparkは柔軟な分散処理基盤
ポイント2 データをうまく扱うための抽象化の仕組み
ポイント3 コアを中心に成り立つエコシステム
「メモリを使って処理をする」というコンセプトが大前提
- 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. 18Copyright © 2014 NTT DATA Corporation
分散したデータをコレクション(データ配列)のように扱える
RDD(Resilient Distributed Dataset)
RDDを変換する流れを実装することで、様々なデータ処理を表現する
中間データをできるだけ生成せずに、各サーバで処理できることをまとめて実行
データをレプリケートしないことで最低限のIO
繰り返し使うデータをメモリに置くキャッシュ機能
何らかの理由で失われたデータを再び利用する場合は再生成する
元データとRDD変換の流れをもとに再生成
ポイント2:データをうまく扱うための抽象化の仕組み
「抽象化」、「割り切り」の方針がうまい
これがSparkエコシステムの充実につながっている
個人的には・・・
- 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. 20Copyright © 2014 NTT DATA Corporation
ポイント3:コアを中心に成り立つエコシステム
Apache Spark(コア)
Spark SQL
Spark
Streaming
MLlib GraphX
Sparkアプリ内で
SQL/HQLを
利用できる
ストリーム処理を
マイクロバッチ方式で実現
Sparkアプリ内で
機械学習を
利用できる
Sparkアプリ内で
グラフ処理を
利用できる
Scala、Java、Pythonで分散処理を記述できる
コアやライブラリを組み合わせて利用することができる
- 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. 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)
- 24. 24Copyright © 2014 NTT DATA Corporation
背景や開発状況から特徴を押さえること
実際の動作を踏まえた勘所を押さえること
Sparkのようなプロダクトを扱うときのコツは?
プロダクトB
プロダクトA
プロダクトC
プロダクトの特徴は、往々にして「できる/できない」ではなく、「得意/不得意」である
プロダクトの特徴と業務要件、
特に将来像を照らし合わせる
得意分野を活かせるように
場合によっては組み合わせる
特徴の重なり領域での動作が気になることが多い
得意分野と適用範囲の重なりイメージ
- 25. 25Copyright © 2014 NTT DATA Corporation
これまでの「Hadoopのシステム開発経験」と「Sparkのアーキテクチャ面
の特徴」から、Sparkは幅広い業務に対応し、データ分析基盤の一角を
担えるようになるはずだ、と考えた
Spark1.0.2の段階で特に以下の点に着目し、数千コアのYARNクラス
タなどで確かめてきました
Hadoopのプロから見て「確かめたかったこと」
機械学習以外の並列分散処理にも十分使える?
メモリサイズを超えるようなデータの取り扱いは?
アプリケーション実装における使い勝手は?
- 26. 26Copyright © 2014 NTT DATA Corporation
機械学習以外の並列分散処理にも十分使える?
WordCount(基本的な集計)の処理時間 大規模シャッフル時の処理時間
「機械学習・統計処理に強い」イメージだが、
基本的な処理にも当然対応
様々な業務処理の基本的な処理は現実的な数十GB~数十TBオーダで動作(Spark1.0.2)
Spark1.1.0になり、sort-based shuffleが導入された。分散処理の鬼門となるデータ交換に
関する改善活動が活発になっており期待が高い。(主に大規模な計算を対象とした改善)
- 27. 27Copyright © 2014 NTT DATA Corporation
メモリサイズを超えるようなデータの取り扱いは?
データをメモリに蓄積しない処理は順次処理される
メモリに蓄積するキャッシュ機能は柔軟に機能した
WordCount(基本的な集計)の処理時間
総ヒープサイズ
ロジスティック回帰(簡易版)の実行時間
キャッシュに載りきら
ないときも動作
バージョンが上がるごとに改善されているが、数十TBのデータを処理するときは
パラメータチューニングが必要だった
キャッシュを活用するときには、オブジェクトのサイズに注意。キャッシュに載せるデータは
シンプルな構造を推奨
- 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(統計処理、機械学習ライブラリ)などを利用
アプリケーションとしてバッチ処理化
- 30. 30Copyright © 2014 NTT DATA Corporation
特徴をつかんで得意分野を活かすべし
Hadoopのプロの目から見て、Sparkは「抽象化」と「割り切り」の方針がうまい
Sparkは、「オープンな開発状況」、「利用しやすいコア(RDDとAPI)」、「強力なライブラ
リ群」に牽引されて利用が広がり、注目を集めるようになってきた
魅力的な機能が揃いつつあるが、「動かす」を超えて「活かす」ためには、背景やアー
キテクチャから見た特徴(得意/不得意)を押さえておくことが大切
場合によっては、いくつかのOSSを組み合わせるのがよい
Storm
Hadoop
Spark
PostgreSQL
- 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. 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環境