Post on 22-Jan-2018
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
動機と目的並列コンピューティング
統合データー処理プラットフォーム EDP2
高性能データ処理プラットフォームSpark と Cassandra に基づくバッチフレムワークのご紹介
劉 雨HUE システムデザインチーム
July 26, 2015
1 / 35
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
動機と目的並列コンピューティング
統合データー処理プラットフォーム EDP2
自己紹介
Yu Liu/劉 雨
2004 年 6 月: 大規模分散ジョウブ管理システムの開発に従事2006 年後半: 日本移住、ソフトウェア開発に従事2014 年 9 月: 国立情報学研究所にて博士号を取得(最優秀学生賞)2014 年 9 月: ワークスアプリケーションズ入社研究内容: 並列プログラミング方法論・アルゴリズム、関数型言語
2 / 35
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
動機と目的並列コンピューティング
統合データー処理プラットフォーム EDP2
内容
1 動機と目的
2 並列コンピューティング並列性 (Parallelism)Low-Level 並列プログラミングフレムワークの問題MapReduce を徹底に理解するSpark の特徴データ並列スケルトンを使ってプログラミング
3 統合データー処理プラットフォーム EDP2
並列バッチ処理事例紹介Enterprise Data Processing Platform
3 / 35
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
動機と目的並列コンピューティング
統合データー処理プラットフォーム EDP2
内容
1 動機と目的
2 並列コンピューティング並列性 (Parallelism)Low-Level 並列プログラミングフレムワークの問題MapReduce を徹底に理解するSpark の特徴データ並列スケルトンを使ってプログラミング
3 統合データー処理プラットフォーム EDP2
並列バッチ処理事例紹介Enterprise Data Processing Platform
4 / 35
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
動機と目的並列コンピューティング
統合データー処理プラットフォーム EDP2
課題
バッチ処理は企業の必要不可欠データー処理方法である
分散システムで、並列処理によって、大量、重いバッチを高速化になる
5 / 35
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
動機と目的並列コンピューティング
統合データー処理プラットフォーム EDP2
システム要件
大量データーを読み・書き・計算するバッチの速度を改善 (Tasklet Performance Improving)大量バッチを同時に実行する (Tasks Scheduling)システムの高信頼性、高可用性 (Reliability andAvailability)良い Cost Performance を実現する
6 / 35
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
動機と目的並列コンピューティング
統合データー処理プラットフォーム EDP2
解決方法
並列計算による、高性能バッチを開発するスケーラビリティを保証する分散システムで、大量バッチを対応するTask-packing アルゴリズムで効率的な実行プランを生成する動的なクラスタ管理仕組みで、利用率 (Cluster Utilization) を向上
7 / 35
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
動機と目的並列コンピューティング
統合データー処理プラットフォーム EDP2
並列性 (Parallelism)Low-Level 並列プログラミングフレムワークの問題MapReduce を徹底に理解するSpark の特徴データ並列スケルトンを使ってプログラミング
並列性と分割統治法 (Divide&Conquer)
Figure: Merge Sort
1 大きな問題を複数の小さな問題に分割
2 複数の小さな問題を解決することで、最終的に大きな問題を解決
3 複数の小さな問題を並列処理することで、処理速度向上
8 / 35
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
動機と目的並列コンピューティング
統合データー処理プラットフォーム EDP2
並列性 (Parallelism)Low-Level 並列プログラミングフレムワークの問題MapReduce を徹底に理解するSpark の特徴データ並列スケルトンを使ってプログラミング
Parallelism とパフォーマンスの関係
1 逐次で実行時間がTsであれば2 理想的に、Pプロセッサーでの実行時間は
Tp =TsP
9 / 35
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
動機と目的並列コンピューティング
統合データー処理プラットフォーム EDP2
並列性 (Parallelism)Low-Level 並列プログラミングフレムワークの問題MapReduce を徹底に理解するSpark の特徴データ並列スケルトンを使ってプログラミング
Parallelism とパフォーマンスの関係
並列化部分の比例はkの場合、並列の実行時間は
�Tp = (kP + 1− k)× Ts
ある意味で、並列プログラムの処理速度は逐次部分によって決定
9 / 35
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
動機と目的並列コンピューティング
統合データー処理プラットフォーム EDP2
並列性 (Parallelism)Low-Level 並列プログラミングフレムワークの問題MapReduce を徹底に理解するSpark の特徴データ並列スケルトンを使ってプログラミング
並列・分散処理は難しい
特に、大規模な分散システムの並列コンピューティングにおいて多くの課題がある。計算の依存性あること (dependency)データ競合 (racing)データ局所性 (locality)タスク協調 (coordinating)障害耐性 (fault tolerance)オーバーヘッド (overhead)...
10 / 35
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
動機と目的並列コンピューティング
統合データー処理プラットフォーム EDP2
並列性 (Parallelism)Low-Level 並列プログラミングフレムワークの問題MapReduce を徹底に理解するSpark の特徴データ並列スケルトンを使ってプログラミング
11 / 35
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
動機と目的並列コンピューティング
統合データー処理プラットフォーム EDP2
並列性 (Parallelism)Low-Level 並列プログラミングフレムワークの問題MapReduce を徹底に理解するSpark の特徴データ並列スケルトンを使ってプログラミング
前 MapReduce 時代
MapReduce 1の登場以前大規模コンピュータ・クラスターによる並列プログラムの開発・メンテナンスは困難、かつ高コスト
低水準 (Low-level) PThread, MPI, OpenMP, Intel TBBのような低水準のフレームワークを利用:プログラミングモデルとインターフェースが複雑化障害耐性サポートの欠如手間がかかり、熟練した開発者が必要
1MapReduce: Simplified Data Processing on Large Clusters, J. Dean et al., OSDI’04.
11 / 35
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
動機と目的並列コンピューティング
統合データー処理プラットフォーム EDP2
並列性 (Parallelism)Low-Level 並列プログラミングフレムワークの問題MapReduce を徹底に理解するSpark の特徴データ並列スケルトンを使ってプログラミング
Google の MapReduce フレムワーク
MapReduce データー処理の流れは純粋な D&C
ハイレベル API、自動並列実行、障害耐性などを実現
12 / 35
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
動機と目的並列コンピューティング
統合データー処理プラットフォーム EDP2
並列性 (Parallelism)Low-Level 並列プログラミングフレムワークの問題MapReduce を徹底に理解するSpark の特徴データ並列スケルトンを使ってプログラミング
研究背景
算法的なスケルトン (Algorithmic skeleton)a
Algorithm level building blocksWell typed interface and deterministic behaverAutomatic optimization is possiblePortable, reusable, fault tolerableaM.Cole, Algorithmic skeletons: structured management of parallel computation, 1991
13 / 35
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
動機と目的並列コンピューティング
統合データー処理プラットフォーム EDP2
並列性 (Parallelism)Low-Level 並列プログラミングフレムワークの問題MapReduce を徹底に理解するSpark の特徴データ並列スケルトンを使ってプログラミング
データ並列とタスク並列
Data-Parallelismデータ並列は、並列 (parallel or nested) データー構造上に定義する同じ計算(e.g, 並列ループ、再帰関数)。各プロセッサが同じ計算ロジックで、分配されたデータを処理する。Task-Parallelismタスクの並列化とは、複数の独立したタスクを同時に実行することである。データーの構造には特に関係ない。
14 / 35
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
動機と目的並列コンピューティング
統合データー処理プラットフォーム EDP2
並列性 (Parallelism)Low-Level 並列プログラミングフレムワークの問題MapReduce を徹底に理解するSpark の特徴データ並列スケルトンを使ってプログラミング
データ並列スケルトン (Skelton):map と reduce
map と reduce は「データ並列スケルトン」である高階関数 map と reduce
map :: (a → b) → [a] → [b] (1)reduce :: (b → b → b) → [b] → b (2)
データ並列スケルトンは決定論的な (Deterministic)データ並列スケルトンは高水準 (High-level)、構造化的な並列データー構造上に自動並列化できるmap と reduce の表現力は高い
15 / 35
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
動機と目的並列コンピューティング
統合データー処理プラットフォーム EDP2
並列性 (Parallelism)Low-Level 並列プログラミングフレムワークの問題MapReduce を徹底に理解するSpark の特徴データ並列スケルトンを使ってプログラミング
MapReduce Programming Interface
MapReduce のプログラミング・インタフェースの中核部分は2つクラス:Map と Reduce である。ユーザーの責任は主に下記の2つメソードを実現すること。MapReduce の API
fmap :: (k1, v1) → [(k2, v2)] (3)freduce :: (k3, [v2]) → (k3, v3) (4)
参考文献Ralf Lämmel, Google’s MapReduce programming model —Revisited, Science ofComputer Programming, Volume 70, Issue 1, 1 January 2008, Pages 1–30.
16 / 35
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
動機と目的並列コンピューティング
統合データー処理プラットフォーム EDP2
並列性 (Parallelism)Low-Level 並列プログラミングフレムワークの問題MapReduce を徹底に理解するSpark の特徴データ並列スケルトンを使ってプログラミング
良い Speedup が実現するのポイント
一般的な原則は、できる限り並列性を上げると通信コストを下げるMap フェーズ、Chunk サイズとデーターサイズとのバランスReduce フェーズ、Grouping キーの設計Shuffle&Sort、大量データーをネットで転送のケースを回避。出来れば Combiner を使用
17 / 35
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
動機と目的並列コンピューティング
統合データー処理プラットフォーム EDP2
並列性 (Parallelism)Low-Level 並列プログラミングフレムワークの問題MapReduce を徹底に理解するSpark の特徴データ並列スケルトンを使ってプログラミング
18 / 35
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
動機と目的並列コンピューティング
統合データー処理プラットフォーム EDP2
並列性 (Parallelism)Low-Level 並列プログラミングフレムワークの問題MapReduce を徹底に理解するSpark の特徴データ並列スケルトンを使ってプログラミング
Apache Spark:超高速 MapReduce フレームワーク
Spark は拡張されたインメモリ計算型 MapReduce2
2Spark GraphX is more powerful than MapReduce18 / 35
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
動機と目的並列コンピューティング
統合データー処理プラットフォーム EDP2
並列性 (Parallelism)Low-Level 並列プログラミングフレムワークの問題MapReduce を徹底に理解するSpark の特徴データ並列スケルトンを使ってプログラミング
Apache Spark:超高速 MapReduce フレームワーク
オーバーヘッドが低い(インメモリコンピューティング)拡張プログラミングインターフェース (map と reduce 限りではない)関数型言語とハイレベルドメイン固有言語 (DSL)
19 / 35
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
動機と目的並列コンピューティング
統合データー処理プラットフォーム EDP2
並列性 (Parallelism)Low-Level 並列プログラミングフレムワークの問題MapReduce を徹底に理解するSpark の特徴データ並列スケルトンを使ってプログラミング
20 / 35
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
動機と目的並列コンピューティング
統合データー処理プラットフォーム EDP2
並列性 (Parallelism)Low-Level 並列プログラミングフレムワークの問題MapReduce を徹底に理解するSpark の特徴データ並列スケルトンを使ってプログラミング
Resilient Distributed Datasets (RDD)
インメモリ並列計算のため、RDD という抽象化される分散メモリモデルを実現した
Reads : Bulk or fine-grainedWrites : Bulk transformationsConsistency : Trivial (immutable)Work placement : Automatic based on data locality
RDD によって、MapReduce と Bulk Synchronous Parallel(BSP)3計算モデルが実現できた
3L.Valiant and B. McColl, Bulk synchronous parallel20 / 35
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
動機と目的並列コンピューティング
統合データー処理プラットフォーム EDP2
並列性 (Parallelism)Low-Level 並列プログラミングフレムワークの問題MapReduce を徹底に理解するSpark の特徴データ並列スケルトンを使ってプログラミング
Spark のプログラミングインタフェースSpark のプログラミングインタフェースと Scala Collection API は似ている
21 / 35
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
動機と目的並列コンピューティング
統合データー処理プラットフォーム EDP2
並列性 (Parallelism)Low-Level 並列プログラミングフレムワークの問題MapReduce を徹底に理解するSpark の特徴データ並列スケルトンを使ってプログラミング
Spark のプログラミングインタフェース
Spark は MapReduce より豊富な API を提供するmap (flatMap), reduce (reduceByKey), filter, join, union ...Broadcast variables and accumulatorsDSL (SQL and others)BSP model and graph data processing ...
21 / 35
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
動機と目的並列コンピューティング
統合データー処理プラットフォーム EDP2
並列性 (Parallelism)Low-Level 並列プログラミングフレムワークの問題MapReduce を徹底に理解するSpark の特徴データ並列スケルトンを使ってプログラミング
MapReduce using RDDs
Spark オブジェクト指向のスタイルの MapReduce API を提供する//myMap : T => List[(K_i , V_i )]//myReduce : (K_i , List[V_i ]) => List[R]data.flatMap(myMap).groupByKey()
.map((k, vs) => myReduce(k, vs))
22 / 35
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
動機と目的並列コンピューティング
統合データー処理プラットフォーム EDP2
並列性 (Parallelism)Low-Level 並列プログラミングフレムワークの問題MapReduce を徹底に理解するSpark の特徴データ並列スケルトンを使ってプログラミング
23 / 35
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
動機と目的並列コンピューティング
統合データー処理プラットフォーム EDP2
並列性 (Parallelism)Low-Level 並列プログラミングフレムワークの問題MapReduce を徹底に理解するSpark の特徴データ並列スケルトンを使ってプログラミング
BSP(GraphX) using RDDs
Spark は Vertex Oriented (Pregel-like) API 4 を提供する5
val vertices = // RDD of (ID, State) pairsval messages = // RDD of (ID, Message) pairsval grouped = vertices.cogroup(messages)val newData = grouped.mapValues {(vert, msgs) => userFunc(vert, msgs)
}.cache()val newVerts = newData.mapValues((v,ms) => v)val newMsgs = newData.flatMap((id,(v,ms)) => ms)
4Run in BSP Model, as Pregel5M. Zaharia et al, Resilient Distributed Datasets: A Fault-Tolerant Abstraction for In-Memory Cluster
Computing, 201123 / 35
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
動機と目的並列コンピューティング
統合データー処理プラットフォーム EDP2
並列バッチ処理事例紹介Enterprise Data Processing Platform
システムアーキテクチャ: E-R 図
24 / 35
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
動機と目的並列コンピューティング
統合データー処理プラットフォーム EDP2
並列バッチ処理事例紹介Enterprise Data Processing Platform
分散データーベースを使う
Cassandra によって、高速並列データアクセスが実現できます
Spark(Spark Streaming)と Cassandra を使うことで、効率的なバッチおよびストリーム処理をシンプルに実装可能
25 / 35
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
動機と目的並列コンピューティング
統合データー処理プラットフォーム EDP2
並列バッチ処理事例紹介Enterprise Data Processing Platform
トポロジの概要
Spark Cassandra Connectoraを使う各 Cassandra ノードで、Spark のワーカーを配置するSparkSQLを使って、CassandraをクエーリーするServer-side filtering によって、転送データー量を減らすa
github.com/datastax/spark-cassandra-connector
26 / 35
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
動機と目的並列コンピューティング
統合データー処理プラットフォーム EDP2
並列バッチ処理事例紹介Enterprise Data Processing Platform
バッチ計算の基本パターンと最適化
基本パターンSelect (Extract)TransformSortGroupAggregate
最適化基本パターンの簡単組合は低効率的効率的なアルゴリズムを作るのは難しいSQL のような自動最適化機能があれば最高
27 / 35
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
動機と目的並列コンピューティング
統合データー処理プラットフォーム EDP2
並列バッチ処理事例紹介Enterprise Data Processing Platform
別スライドを参照
Spark 上の自動最適化フレムワークYu Liu, Kento Emoto, Zhenjiang Hu, A Generate-Test-Aggregate Parallel ProgrammingLibrary for Systematic Parallel Programming, Parallel Computing, Volume 40, Issue 2,February 2014, Pages 116.-135, Elsevier.Kento Emoto, Sebastian Fischer, Zhenjiang Hu Generate, Test, and Aggregate—ACalculation-based Framework for Systematic Parallel Programming with MapReduce 21stEuropean Symposium on Programming (ESOP 2012), Lecture Notes in Computer Science,Vol. 7211, pp. 254-273, Springer Verlag, 2012.
28 / 35
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
動機と目的並列コンピューティング
統合データー処理プラットフォーム EDP2
並列バッチ処理事例紹介Enterprise Data Processing Platform
結果評価
より短時間で ERP 会計領域でのビジネスロジック処理を実現
Figure: ERP 速度向上のため Spark を利用 (AWS EC2 m3.large x 10)
29 / 35
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
動機と目的並列コンピューティング
統合データー処理プラットフォーム EDP2
並列バッチ処理事例紹介Enterprise Data Processing Platform
HUE Enterprise Data Processing Platform (EDP2)
弊社独自の統合プラットフォーム EDP2 は、以下を独自に管理するために設計アプリケーション:バッチ処理、ストリーム、ウェブアプリケーション、CI、スクリプト、...データ処理フレームワーク:Hadoop、Spark、Kafka、...データストア:Cassandra、ElasticSearch、Redis、PostgreSQL、...
30 / 35
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
動機と目的並列コンピューティング
統合データー処理プラットフォーム EDP2
並列バッチ処理事例紹介Enterprise Data Processing Platform
EDP2 のアークテクチャ
3つのレイヤーを持つ:機能的なアプリケーションリポジトリ高速的なコンピューティング・エンジン効率的なリソースマネージャ
31 / 35
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
動機と目的並列コンピューティング
統合データー処理プラットフォーム EDP2
並列バッチ処理事例紹介Enterprise Data Processing Platform
効果図
32 / 35
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
動機と目的並列コンピューティング
統合データー処理プラットフォーム EDP2
並列バッチ処理事例紹介Enterprise Data Processing Platform
効果図
32 / 35
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
動機と目的並列コンピューティング
統合データー処理プラットフォーム EDP2
並列バッチ処理事例紹介Enterprise Data Processing Platform
効果図
32 / 35
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
動機と目的並列コンピューティング
統合データー処理プラットフォーム EDP2
並列バッチ処理事例紹介Enterprise Data Processing Platform
EDP2 は低レイヤの管理ミドルウェアやクラスタの詳細を隠蔽するので、以下を可能にする:
Easy: 簡単に並列処理開発環境が使えるExpendable: 自由に最新技術を採用・拡張Elastic: 容易に様々なコンピュータクラスタを制御する
33 / 35
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
動機と目的並列コンピューティング
統合データー処理プラットフォーム EDP2
並列バッチ処理事例紹介Enterprise Data Processing Platform
ハイユーザービリティー + EDP2 =競争力
性能最適化応答時間短くなる処理能力高める信頼性高める
総保有コストを削減 (TCO)より良いクラスターの利用率低維持費
数十倍高速なバッチ処理を実現リアルタイム応答に近い高速ストリーミング処理システムの障害によるサービス停止が発生しない
34 / 35
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
動機と目的並列コンピューティング
統合データー処理プラットフォーム EDP2
並列バッチ処理事例紹介Enterprise Data Processing Platform
Thanks
ご興味がある方はブースまで弊社他の技術者の発表がある
B20, 秋吉真衣:サーバー運用業務を汎用化・共通化し、AWS の各種サービスや OSS を組み合わせた自動化事例C50, 浅野航平:High Usability Application での 100 ミリ秒レスポンスを実現するクライアントサイドの開発技術
35 / 35