Apache Sparkのご紹介 (後半:技術トピック)

N
NTT DATA OSS Professional ServicesSenior Specialist at NTT DATA OSS Professional Services
Apache Sparkのご紹介 ~技術トピック
2014年5月29日
第16回 Hadoopソースコードリーディング 発表資料
NTTデータ 基盤システム事業本部
OSSプロフェッショナルサービス
猿田 浩輔
2Copyright © 2013 NTT DATA Corporation
 猿田 浩輔
 Hadoopを中心とするOSSの技術検証や導入支援、テクニカ
ルサポートを行う
 最近はSparkに興味を持つ
 Hadoop徹底入門 / HADOOP HACKSを世に出す悪事に加
担
自己紹介
3Copyright © 2013 NTT DATA Corporation
• Sparkでの典型的な処理のイメージ
• Sparkが扱う基本的な抽象データセット「RDD」の概要
• クラスタ上での処理や、ノード間の通信イメージ
• RDDの変換チェインがクラスタ上で実行可能な処理に分割されるまで
の流れ
ここからのトピック
4Copyright © 2013 NTT DATA Corporation
• SparkではRDDと呼ばれる抽象データセットの変換を繰り返して目的の結果を得る
• この一連の処理を、「ジョブ」と呼ぶ
• Spark版ワードカウントの例
典型的な処理イメージ
// HDFS上のファイルからRDDを生成
1: val hdfsRdd = spark.textFile("hdfs://...")
// 単語で構成されるシーケンスを作る
2: val splitRdd = hdfsRdd.flatMap(line => line.split(" "))
// 各単語をキーとし、値を1とするキーバリューペアを作る
3: val mappedRdd = mappedRdd.map(word => (word, 1))
// 単語をキーとし、同じキーを持つペアの値(1)を足しこむ
4: val reducedRdd = mappedRdd.reduceByKey(_ + _)
// 計算結果をHDFS上のファイルに書き出す
5: counts.saveAsTextFile("hdfs://...")
5Copyright © 2013 NTT DATA Corporation
join
map
もう少し複雑な処理のイメージ
HDFS上のファイルやリスト
などのデータ構造など、
様々なデータソースから
RDDを生成できる
ListなどのScalaコ
レクションオブジェ
クト
HDFS
HDFSなど様々
なデータソース
からRDDを生
成可能
・
・
・ Actionが適用された時点
でジョブが生成され、実際
の計算が始まる。
RDDはイミュータブルなの
で、このように遅延計算し
ても、逐次計算した場合
と同じ結果が得られる
filter
filter
distinct
textFile
parallelize
filter map
原則、関数評価の直
後に計算しない。生
成された子RDDには
親RDDと後に計算す
る関数を記憶してお
く。
このため計算コスト
やオブジェクトの生成
コストが削減される
map
filterdistinct
join
reduceByKey
計算結果
join
distinct
[関数]
関数評価後のRDDRDD
RDDの変換の方向
変換関数
Action
RDDはイミュータブル
なので、変換のもと
になったデータを変
更せず、新規にデー
タを生成する
最終的な計算結果
6Copyright © 2013 NTT DATA Corporation
Sparkのデータ処理をざっくり言うと
 RDD(Resilient Distributed Datasets)という
抽象データセットを繰り返し変換し、結果を得る
 ユーザが定義したRDDの系譜(Lineage)に従って
処理を実施する
それで、RDDって?
RDDのつながりのグラフ構造
7Copyright © 2013NTT DATA Corporation
RDDとは?
• コレクションのようなデータ構造であり、内部の要素をイテレートできる
• 更に、Sparkの基本的なコンセプトを実現するために、次のような特徴を備える
• パーティションに分割され、サーバ上で分散配置される
• インメモリで保持される(なるべくディスクに着地させない)
• 遅延計算される(計算を行うタイミングをスケジューリングされたあと、実際に計算される)
• イミュータブル(フォールトトレラント性を担保するための特徴)
RDD
要素(レコード)
要素(レコード)
パーティション
要素(レコード)
要素(レコード)
パーティション
RDDの基本構造
サーバ
サーバ
パーティションの単位で
複数のサーバに分散配置される。
パーティションの数、分割の方法はRDDの種類や
変換の種類によって決まる。
実際の計算は要素ごとに
実施される。
8Copyright © 2013 NTT DATA Corporation
遅延計算
val sc = new SparkContext(...)
val file = sc.textFile("hdfs://...")
val errors = file.filter(line => line.contains("ERROR"))
// Count all the errors
errors.count()
この時点では計算されない
ここで計算がスケジューリングされる。
実際に計算が起こるタイミングはスケジューリングによる。
サンプルコード
計算が
スケジューリ
ングされない
計算
がスケジュー
リングされる
9Copyright © 2013 NTT DATA Corporation
フォールトトレラント性を実現するための特性
 Sparkでは、大量のデータをオンメモリで分散処理するので、各サーバに分散配置され
たデータ(パーティション)が処理中に欠損した場合に備えた仕組みが必要
 欠損に備えつつ、ネットワーク転送を出来る限り避けたい
 分散システムでは扱うデータをコピー(レプリカ作成)して保持する方法をとるものもある
が、ネットワーク転送をできるだけ避けるために、
「得たいデータが失われていたら前のデータから再生成する」というアプローチをとっている。
そのために以下の制約・前提条件を持っている。
• RDDはイミュータブルであること
• 元データのデータソースは信頼性が高く(高可用/高堅牢) 、イミュータブルである
こと
10Copyright © 2013 NTT DATA Corporation
例えば、
のようにデータが生成された後に、
のように3個目~5個目のRDDの一部が失われたものとする。次に5個目のRDDを再取得すると、
のように2個目のRDDから必要なデータを再生成される。これは先の結果と同じ結果である。
再生成により同じ結果が得られるのは、RDDがイミュータブルだからである。
同様に1個目のRDDから後が失われていた場合は、信頼のおけるイミュータブルなデータソースから
再生成すればよい、ということになる
RDD
フォールトトレラント性を実現するための特性
RDD外部 RDD RDD RDD
RDDRDD外部 RDD RDD RDD
RDDRDD外部 RDD RDD RDD
11Copyright © 2013 NTT DATA Corporation
RDDの依存関係
 RDDの変換において、変換の元(親)のRDDと変換後
(子)のRDDの間には依存関係が定義される
 依存関係は、スケジューリング(RDDの変換チェインを
処理可能なタスクに分割する)に関係する
 RDDの変換の依存関係には、以下の2種類がある
• 狭い依存関係(Narrow Dependency)
• 広い依存関係(Wide Dependency)
12Copyright © 2013 NTT DATA Corporation
狭い依存関係の例
RDD1
パーティション1-1
This is a pen.
This is a book.
What is this?
パーティション1-2
Thank you.
No Problem.
This is a cup.
RDD2
パーティション2-1
This is a pen.
This is a book.
パーティション2-2
This is a cup.
「This is」
Filterの例
親パーティションが単一の子パーティションの生成に関わっている依存関係
13Copyright © 2013 NTT DATA Corporation
広い依存関係の例
RDD1
パーティション1-1
dog, white
dog, black
cat, white
パーティション1-2
cat, black
dog, brown
cat, brown
RDD2
パーティション2-1
dog, white
dog, black
パーティション2-2
GroupByKeyの例
dog, brown
cat, black
cat, brown
cat, white
キーに基づく
グルーピング
キー・バリュー形
式のデータセット
親パーティションが、複数の子パーティションの生成に関わっている依存関係
14Copyright © 2013 NTT DATA Corporation
主な登場人物
• クラスタを構成するノード
• クライアント : ジョブのキックを担当
• マスタ : クラスタ全体のリソース管理を担当
• ワーカ : 計算資源の提供/管理を担当
• ノード以外の主要な要素
• ドライバ : ユーザがRDDの変換を記述したプログラム
• エグゼキュータ : ワーカ上で動作し、実際の計算処理を担当
• タスク : ジョブを、エグゼキュータが処理可能な粒度に分解した処理単位
• スケジューラ : ジョブをタスクに分割したり、タスクのエグゼキュータへの割り当てを
担当
RDDの変換が、クラスタ上でどのように動作するか
15Copyright © 2013 NTT DATA Corporation
RDDの変換が、クラスタ上でどのように動作するか
16Copyright © 2013 NTT DATA Corporation
• エグゼキュータに割り当てる「タスク」はどのように生成され
る?系譜との関係は?
• タスクはどのようにエグゼキュータに割り当てられる?
系譜をもとにタスクを生成したり、エグゼキュータへの割り当
てをコントロールするのはスケジューラの役割
RDDの変換が、クラスタ上でどのように動作するか
17Copyright © 2013 NTT DATA Corporation
• 系譜をステージに分割する
• ステージの実行要否を判定する
• タスクを生成する
• タスクを実行する場所を決定する
• タスクの実行順序をスケジューリングする
タスクの生成、実行までの流れ
18Copyright © 2013 NTT DATA Corporation
 DAGSchedulerが、系譜をステージに分割する
 ステージは系譜中で狭い依存関係が連続して発生する範囲である(依
存関係の種類は変換の種類によって決まる)
系譜をステージに分割する
RDD
ステージ
19Copyright © 2013 NTT DATA Corporation
ステージ分割のステップ
起点を移しながらRDD間の
依存関係の解決とステー
ジの成長、及びステージ間
の依存関係を解決し、系
譜がステージに分割される
起点から狭い依存関係でた
どれるRDDに起点を移し、親
RDDを再帰的にたどって依
存関係の解決とステージの
成長を繰り返す。
狭い依存関係で閉じた範囲
が限定された段階で当該ス
テージが確定する
RDDの変換の方向
狭い依存関係
広い依存関係
RDD 成長中のステージ
確定したステージ
ステージ間の依存関係
新規にステージを生成し、
起点のRDDを加える
変換の最後に出現する
RDD(Actionが適用され
るRDD)を、系譜をたどる
起点とする
起点から系譜をたどり、
親ノードとの依存関係
を解決する。
狭い依存関係を持つ
RDDを現在のステージ
に含め、ステージを成
長させる
現在の起点から広い依存
関係でたどれるRDDに起点
を移し、同様に親RDDとの
依存関係の解決とステージ
の成長を繰り返す。
新なステージは広い依存関
係の子のRDDが属するス
テージの親ステージとなる
変換の最後に出現
するRDD
20Copyright © 2013 NTT DATA Corporation
 パーティションごとにエグゼキュータ1つがまとめて計算できる
変換の範囲を決めるため
 広い依存関係を発生させる変換は、パーティション内の要素
を子RDDのパーティションを処理する各エグゼキュータに分配
する必要があるので、エグゼキュータ間の通信が発生する。
なぜステージに分割するのか?
21Copyright © 2013 NTT DATA Corporation
広い依存関係を発生させる変換の実行例
4個
3個
1個
3個
countByKey
countByKey関数で、図形ごと、色ごとに数をカウントする
2個
2個
1個
RDD
変換関数
パーティション
RDD内の要素
グループ
RDD1 RDD2
パーティショナによって要素の振り分け方が異なる。
この例の場合、色ごとに要素を振り分ける
22Copyright © 2013 NTT DATA Corporation
広い依存関係を発生させる変換の実行例
23Copyright © 2013 NTT DATA Corporation
• Sparkでは同一スケジューラで制御される複数のジョブで、RDDを共有することができ
る
• 共有しているRDDがすでに計算済みで、メモリやディスクに実体を持つ場合、当該
RDDを生成するための前段のステージの実行を省略することができる。
• 明示的にRDDをキャッシュした場合
• ステージ内の最後のRDD(シャッフル直前のRDD)
ステージの実行要否を判定する
他のジョブで
キャシュされた
RDD
後続のRDDがすでに計
算済みなので、親ス
テージの実行は不要
親ステージ 子ステージ
24Copyright © 2013 NTT DATA Corporation
 DAGSchedulerが、実行対象の個々のステージに対してタスクを定義する
 各ステージにおいて、ステージ内の最後のRDDのパーティション数から、当該ステージ
のタスク数が決まる
 ステージに含まれるRDDの変換チェインから、タスクあたりの処理範囲が決まる
タスクの生成
filter
(青い図形を除外)
map
(図形の形を変換)
union
パーティション数 = 4なので、こ
のステージのタスク数は4。
個々のタスクが異なるエグゼ
キュータで実行される
ステージ内の最後のRDDのパー
ティションから、親RDDの方向に
一意にたどれる。
一意にたどれる範囲が1タスク。
25Copyright © 2013 NTT DATA Corporation
• RDDにはプリファードロケーションが定義されている場合がある。DAGSchedulerは、タ
スクを実行するエグゼキュータを選ぶにあたって、プリファードロケーションをヒントに用
いる。
• RDDにプリファードロケーションが定義されていない場合は、親RDDを通り掛け順にた
どり、最初に見つかったプリファードロケーションを用いる。
タスクの実行場所の決定
26Copyright © 2013 NTT DATA Corporation
• プリファードロケーションはRDDの種類ごとに定義される。HDFSをデー
タソースとするRDDはプリファードロケーション = ブロックの実体が配置
されているノードなので、データローカリティが担保される。
• データソースをもとに生成されるRDDはプリファードロケーションを持つ
ので、いつかはプリファードロケーションが見つかる。
タスクの実行場所の決定
27Copyright © 2013 NTT DATA Corporation
 ステージを構成するタスク群は「タスクセット」としてTaskSchedulerに渡される。
 TaskSchedulerはタスクセット単位で実行順序のスケジューリングを行う。
 TaskSchedulerはタスクセットの実行順序を決定するまでにタスクセットを登録してお
く「プール」を1つ以上保持する。スケジューリング方式によってプールの数や使い方が
異なる。
 標準で2つのスケジューリング方式が用意されている
 FIFO
 単一のプールを用いて、キューに様に扱う。プールに登録されたタスクセットを順にスケジューリング
する
 FAIR
 複数のプールを用いて、各プールから公平にタスクセットを取り出し、スケジューリングする。
タスクの実行順序のスケジューリング
28Copyright © 2013 NTT DATA Corporation
 Resilient Distributed Datasets: A Fault-Tolerant Abstraction for In-Memory
Cluster Computing
(http://www.cs.berkeley.edu/~matei/papers/2012/nsdi_spark.pdf)
 Resilient Distributed Datasets: A Fault-Tolerant Abstraction for In-Memory
Cluster Computing
(http://www.cs.berkeley.edu/~matei/papers/2011/tr_spark.pdf)
 Spark: Cluster Computing with Working Sets
(http://www.cs.berkeley.edu/~matei/papers/2010/hotcloud_spark.pdf)
(参考)論文紹介
1 of 28

Recommended

Apache Spark の紹介(前半:Sparkのキホン) by
Apache Spark の紹介(前半:Sparkのキホン)Apache Spark の紹介(前半:Sparkのキホン)
Apache Spark の紹介(前半:Sparkのキホン)NTT DATA OSS Professional Services
58.3K views41 slides
大量のデータ処理や分析に使えるOSS Apache Spark入門 - Open Source Conference2020 Online/Fukuoka... by
大量のデータ処理や分析に使えるOSS Apache Spark入門 - Open Source Conference2020 Online/Fukuoka...大量のデータ処理や分析に使えるOSS Apache Spark入門 - Open Source Conference2020 Online/Fukuoka...
大量のデータ処理や分析に使えるOSS Apache Spark入門 - Open Source Conference2020 Online/Fukuoka...NTT DATA Technology & Innovation
985 views69 slides
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料) by
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)NTT DATA OSS Professional Services
53K views60 slides
Apache Sparkの基本と最新バージョン3.2のアップデート(Open Source Conference 2021 Online/Fukuoka ... by
Apache Sparkの基本と最新バージョン3.2のアップデート(Open Source Conference 2021 Online/Fukuoka ...Apache Sparkの基本と最新バージョン3.2のアップデート(Open Source Conference 2021 Online/Fukuoka ...
Apache Sparkの基本と最新バージョン3.2のアップデート(Open Source Conference 2021 Online/Fukuoka ...NTT DATA Technology & Innovation
774 views68 slides
分散処理基盤ApacheHadoop入門とHadoopエコシステムの最新技術動向(OSC2015 Kansai発表資料) by
分散処理基盤ApacheHadoop入門とHadoopエコシステムの最新技術動向(OSC2015 Kansai発表資料)分散処理基盤ApacheHadoop入門とHadoopエコシステムの最新技術動向(OSC2015 Kansai発表資料)
分散処理基盤ApacheHadoop入門とHadoopエコシステムの最新技術動向(OSC2015 Kansai発表資料)NTT DATA OSS Professional Services
39.7K views64 slides
Hadoop -NameNode HAの仕組み- by
Hadoop -NameNode HAの仕組み-Hadoop -NameNode HAの仕組み-
Hadoop -NameNode HAの仕組み-Yuki Gonda
4.1K views43 slides

More Related Content

What's hot

大量のデータ処理や分析に使えるOSS Apache Sparkのご紹介(Open Source Conference 2020 Online/Kyoto ... by
大量のデータ処理や分析に使えるOSS Apache Sparkのご紹介(Open Source Conference 2020 Online/Kyoto ...大量のデータ処理や分析に使えるOSS Apache Sparkのご紹介(Open Source Conference 2020 Online/Kyoto ...
大量のデータ処理や分析に使えるOSS Apache Sparkのご紹介(Open Source Conference 2020 Online/Kyoto ...NTT DATA Technology & Innovation
1.9K views73 slides
分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料) by
分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)NTT DATA Technology & Innovation
1.1K views34 slides
大量のデータ処理や分析に使えるOSS Apache Spark入門(Open Source Conference 2021 Online/Kyoto 発表資料) by
大量のデータ処理や分析に使えるOSS Apache Spark入門(Open Source Conference 2021 Online/Kyoto 発表資料)大量のデータ処理や分析に使えるOSS Apache Spark入門(Open Source Conference 2021 Online/Kyoto 発表資料)
大量のデータ処理や分析に使えるOSS Apache Spark入門(Open Source Conference 2021 Online/Kyoto 発表資料)NTT DATA Technology & Innovation
1.4K views78 slides
40分でわかるHadoop徹底入門 (Cloudera World Tokyo 2014 講演資料) by
40分でわかるHadoop徹底入門 (Cloudera World Tokyo 2014 講演資料) 40分でわかるHadoop徹底入門 (Cloudera World Tokyo 2014 講演資料)
40分でわかるHadoop徹底入門 (Cloudera World Tokyo 2014 講演資料) hamaken
100.1K views34 slides
大規模データ活用向けストレージレイヤソフトのこれまでとこれから(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05) by
大規模データ活用向けストレージレイヤソフトのこれまでとこれから(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)大規模データ活用向けストレージレイヤソフトのこれまでとこれから(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
大規模データ活用向けストレージレイヤソフトのこれまでとこれから(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)NTT DATA Technology & Innovation
15.6K views52 slides
Cassandraのしくみ データの読み書き編 by
Cassandraのしくみ データの読み書き編Cassandraのしくみ データの読み書き編
Cassandraのしくみ データの読み書き編Yuki Morishita
30.8K views30 slides

What's hot(20)

大量のデータ処理や分析に使えるOSS Apache Sparkのご紹介(Open Source Conference 2020 Online/Kyoto ... by NTT DATA Technology & Innovation
大量のデータ処理や分析に使えるOSS Apache Sparkのご紹介(Open Source Conference 2020 Online/Kyoto ...大量のデータ処理や分析に使えるOSS Apache Sparkのご紹介(Open Source Conference 2020 Online/Kyoto ...
大量のデータ処理や分析に使えるOSS Apache Sparkのご紹介(Open Source Conference 2020 Online/Kyoto ...
分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料) by NTT DATA Technology & Innovation
分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
大量のデータ処理や分析に使えるOSS Apache Spark入門(Open Source Conference 2021 Online/Kyoto 発表資料) by NTT DATA Technology & Innovation
大量のデータ処理や分析に使えるOSS Apache Spark入門(Open Source Conference 2021 Online/Kyoto 発表資料)大量のデータ処理や分析に使えるOSS Apache Spark入門(Open Source Conference 2021 Online/Kyoto 発表資料)
大量のデータ処理や分析に使えるOSS Apache Spark入門(Open Source Conference 2021 Online/Kyoto 発表資料)
40分でわかるHadoop徹底入門 (Cloudera World Tokyo 2014 講演資料) by hamaken
40分でわかるHadoop徹底入門 (Cloudera World Tokyo 2014 講演資料) 40分でわかるHadoop徹底入門 (Cloudera World Tokyo 2014 講演資料)
40分でわかるHadoop徹底入門 (Cloudera World Tokyo 2014 講演資料)
hamaken100.1K views
大規模データ活用向けストレージレイヤソフトのこれまでとこれから(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05) by NTT DATA Technology & Innovation
大規模データ活用向けストレージレイヤソフトのこれまでとこれから(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)大規模データ活用向けストレージレイヤソフトのこれまでとこれから(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
大規模データ活用向けストレージレイヤソフトのこれまでとこれから(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
Cassandraのしくみ データの読み書き編 by Yuki Morishita
Cassandraのしくみ データの読み書き編Cassandraのしくみ データの読み書き編
Cassandraのしくみ データの読み書き編
Yuki Morishita30.8K views
IoT時代におけるストリームデータ処理と急成長の Apache Flink by Takanori Suzuki
IoT時代におけるストリームデータ処理と急成長の Apache FlinkIoT時代におけるストリームデータ処理と急成長の Apache Flink
IoT時代におけるストリームデータ処理と急成長の Apache Flink
Takanori Suzuki28K views
Data Factoryの勘所・大事なところ by Tsubasa Yoshino
Data Factoryの勘所・大事なところData Factoryの勘所・大事なところ
Data Factoryの勘所・大事なところ
Tsubasa Yoshino4.5K views
Sparkによる GISデータを題材とした時系列データ処理 (Hadoop / Spark Conference Japan 2016 講演資料) by Hadoop / Spark Conference Japan
Sparkによる GISデータを題材とした時系列データ処理 (Hadoop / Spark Conference Japan 2016 講演資料)Sparkによる GISデータを題材とした時系列データ処理 (Hadoop / Spark Conference Japan 2016 講演資料)
Sparkによる GISデータを題材とした時系列データ処理 (Hadoop / Spark Conference Japan 2016 講演資料)
ストリーム処理を支えるキューイングシステムの選び方 by Yoshiyasu SAEKI
ストリーム処理を支えるキューイングシステムの選び方ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方
Yoshiyasu SAEKI40.2K views
NTTデータが考えるデータ基盤の次の一手 ~AI活用のために知っておくべき新潮流とは?~(NTTデータ テクノロジーカンファレンス 2020 発表資料) by NTT DATA Technology & Innovation
NTTデータが考えるデータ基盤の次の一手 ~AI活用のために知っておくべき新潮流とは?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)NTTデータが考えるデータ基盤の次の一手 ~AI活用のために知っておくべき新潮流とは?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
NTTデータが考えるデータ基盤の次の一手 ~AI活用のために知っておくべき新潮流とは?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
Apache Sparkにおけるメモリ - アプリケーションを落とさないメモリ設計手法 - by Yoshiyasu SAEKI
Apache Sparkにおけるメモリ - アプリケーションを落とさないメモリ設計手法 -Apache Sparkにおけるメモリ - アプリケーションを落とさないメモリ設計手法 -
Apache Sparkにおけるメモリ - アプリケーションを落とさないメモリ設計手法 -
Yoshiyasu SAEKI9.5K views
ちょっと理解に自信がないな という皆さまに贈るHadoop/Sparkのキホン (IBM Datapalooza Tokyo 2016講演資料) by hamaken
ちょっと理解に自信がないなという皆さまに贈るHadoop/Sparkのキホン (IBM Datapalooza Tokyo 2016講演資料)ちょっと理解に自信がないなという皆さまに贈るHadoop/Sparkのキホン (IBM Datapalooza Tokyo 2016講演資料)
ちょっと理解に自信がないな という皆さまに贈るHadoop/Sparkのキホン (IBM Datapalooza Tokyo 2016講演資料)
hamaken21.4K views
大規模データ処理の定番OSS Hadoop / Spark 最新動向 - 2021秋 -(db tech showcase 2021 / ONLINE 発... by NTT DATA Technology & Innovation
大規模データ処理の定番OSS Hadoop / Spark 最新動向 - 2021秋 -(db tech showcase 2021 / ONLINE 発...大規模データ処理の定番OSS Hadoop / Spark 最新動向 - 2021秋 -(db tech showcase 2021 / ONLINE 発...
大規模データ処理の定番OSS Hadoop / Spark 最新動向 - 2021秋 -(db tech showcase 2021 / ONLINE 発...
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~ by NTT DATA OSS Professional Services
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Datastax Enterpriseをはじめよう by Yuki Morishita
Datastax EnterpriseをはじめようDatastax Enterpriseをはじめよう
Datastax Enterpriseをはじめよう
Yuki Morishita3.1K views

Similar to Apache Sparkのご紹介 (後半:技術トピック)

SQL on Hadoop 比較検証 【2014月11日における検証レポート】 by
SQL on Hadoop 比較検証 【2014月11日における検証レポート】SQL on Hadoop 比較検証 【2014月11日における検証レポート】
SQL on Hadoop 比較検証 【2014月11日における検証レポート】NTT DATA OSS Professional Services
15.7K views21 slides
Hadoop上の多種多様な処理でPigの活きる道 (Hadoop Conferecne Japan 2013 Winter) by
Hadoop上の多種多様な処理でPigの活きる道 (Hadoop Conferecne Japan 2013 Winter)Hadoop上の多種多様な処理でPigの活きる道 (Hadoop Conferecne Japan 2013 Winter)
Hadoop上の多種多様な処理でPigの活きる道 (Hadoop Conferecne Japan 2013 Winter)NTT DATA OSS Professional Services
4.6K views32 slides
Hadoop 2.6の最新機能(Cloudera World Tokyo 2014 LT講演資料) by
Hadoop 2.6の最新機能(Cloudera World Tokyo 2014 LT講演資料)Hadoop 2.6の最新機能(Cloudera World Tokyo 2014 LT講演資料)
Hadoop 2.6の最新機能(Cloudera World Tokyo 2014 LT講演資料)NTT DATA OSS Professional Services
9.2K views13 slides
[db tech showcase Tokyo 2014] D33: Prestoで実現するインタラクティブクエリ by トレジャーデータ株式会社 斉藤太郎 by
[db tech showcase Tokyo 2014] D33: Prestoで実現するインタラクティブクエリ  by トレジャーデータ株式会社 斉藤太郎[db tech showcase Tokyo 2014] D33: Prestoで実現するインタラクティブクエリ  by トレジャーデータ株式会社 斉藤太郎
[db tech showcase Tokyo 2014] D33: Prestoで実現するインタラクティブクエリ by トレジャーデータ株式会社 斉藤太郎Insight Technology, Inc.
744 views57 slides
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 Tokyo by
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 TokyoPrestoで実現するインタラクティブクエリ - dbtech showcase 2014 Tokyo
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 TokyoTreasure Data, Inc.
11.7K views57 slides
Impala + Kudu を用いたデータウェアハウス構築の勘所 (仮) by
Impala + Kudu を用いたデータウェアハウス構築の勘所 (仮)Impala + Kudu を用いたデータウェアハウス構築の勘所 (仮)
Impala + Kudu を用いたデータウェアハウス構築の勘所 (仮)Cloudera Japan
3.2K views67 slides

Similar to Apache Sparkのご紹介 (後半:技術トピック)(20)

[db tech showcase Tokyo 2014] D33: Prestoで実現するインタラクティブクエリ by トレジャーデータ株式会社 斉藤太郎 by Insight Technology, Inc.
[db tech showcase Tokyo 2014] D33: Prestoで実現するインタラクティブクエリ  by トレジャーデータ株式会社 斉藤太郎[db tech showcase Tokyo 2014] D33: Prestoで実現するインタラクティブクエリ  by トレジャーデータ株式会社 斉藤太郎
[db tech showcase Tokyo 2014] D33: Prestoで実現するインタラクティブクエリ by トレジャーデータ株式会社 斉藤太郎
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 Tokyo by Treasure Data, Inc.
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 TokyoPrestoで実現するインタラクティブクエリ - dbtech showcase 2014 Tokyo
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 Tokyo
Treasure Data, Inc.11.7K views
Impala + Kudu を用いたデータウェアハウス構築の勘所 (仮) by Cloudera Japan
Impala + Kudu を用いたデータウェアハウス構築の勘所 (仮)Impala + Kudu を用いたデータウェアハウス構築の勘所 (仮)
Impala + Kudu を用いたデータウェアハウス構築の勘所 (仮)
Cloudera Japan3.2K views
Ansibleで構成管理始める人のモチベーションをあげたい! (Cloudera World Tokyo 2014LT講演資料) by NTT DATA OSS Professional Services
Ansibleで構成管理始める人のモチベーションをあげたい! (Cloudera World Tokyo 2014LT講演資料)Ansibleで構成管理始める人のモチベーションをあげたい! (Cloudera World Tokyo 2014LT講演資料)
Ansibleで構成管理始める人のモチベーションをあげたい! (Cloudera World Tokyo 2014LT講演資料)
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料) by NTT DATA Technology & Innovation
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
世界征服を目指す Jubatus だからこそ期待する 5 つのポイント by Toru Shimogaki
世界征服を目指す Jubatus だからこそ期待する 5 つのポイント世界征服を目指す Jubatus だからこそ期待する 5 つのポイント
世界征服を目指す Jubatus だからこそ期待する 5 つのポイント
Toru Shimogaki2.6K views
【17-E-3】Hadoop:黄色い象使いへの道 ~「Hadoop徹底入門」より~ by Developers Summit
【17-E-3】Hadoop:黄色い象使いへの道 ~「Hadoop徹底入門」より~【17-E-3】Hadoop:黄色い象使いへの道 ~「Hadoop徹底入門」より~
【17-E-3】Hadoop:黄色い象使いへの道 ~「Hadoop徹底入門」より~
Developers Summit5.9K views
ビッグデータ&データマネジメント展 by Recruit Technologies
ビッグデータ&データマネジメント展ビッグデータ&データマネジメント展
ビッグデータ&データマネジメント展
Dockerイメージ管理の内部構造 by Etsuji Nakai
Dockerイメージ管理の内部構造Dockerイメージ管理の内部構造
Dockerイメージ管理の内部構造
Etsuji Nakai36.1K views
Rubyによるお手軽分散処理 by maebashi
Rubyによるお手軽分散処理Rubyによるお手軽分散処理
Rubyによるお手軽分散処理
maebashi3.9K views
[db tech showcase Tokyo 2018] #dbts2018 #E28 『Hadoop DataLakeにリアルタイムでデータをレプリケ... by Insight Technology, Inc.
[db tech showcase Tokyo 2018] #dbts2018 #E28 『Hadoop DataLakeにリアルタイムでデータをレプリケ...[db tech showcase Tokyo 2018] #dbts2018 #E28 『Hadoop DataLakeにリアルタイムでデータをレプリケ...
[db tech showcase Tokyo 2018] #dbts2018 #E28 『Hadoop DataLakeにリアルタイムでデータをレプリケ...
分散処理基盤Apache Hadoop入門とHadoopエコシステムの最新技術動向 (オープンソースカンファレンス 2015 Tokyo/Spring 講... by NTT DATA OSS Professional Services
分散処理基盤Apache Hadoop入門とHadoopエコシステムの最新技術動向 (オープンソースカンファレンス 2015 Tokyo/Spring 講...分散処理基盤Apache Hadoop入門とHadoopエコシステムの最新技術動向 (オープンソースカンファレンス 2015 Tokyo/Spring 講...
分散処理基盤Apache Hadoop入門とHadoopエコシステムの最新技術動向 (オープンソースカンファレンス 2015 Tokyo/Spring 講...

More from NTT DATA OSS Professional Services

Global Top 5 を目指す NTT DATA の確かで意外な技術力 by
Global Top 5 を目指す NTT DATA の確かで意外な技術力Global Top 5 を目指す NTT DATA の確かで意外な技術力
Global Top 5 を目指す NTT DATA の確かで意外な技術力NTT DATA OSS Professional Services
9.8K views35 slides
Hadoopエコシステムのデータストア振り返り by
Hadoopエコシステムのデータストア振り返りHadoopエコシステムのデータストア振り返り
Hadoopエコシステムのデータストア振り返りNTT DATA OSS Professional Services
4.5K views43 slides
HDFS Router-based federation by
HDFS Router-based federationHDFS Router-based federation
HDFS Router-based federationNTT DATA OSS Professional Services
1.7K views16 slides
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイント by
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイントPostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイント
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイントNTT DATA OSS Professional Services
7.6K views40 slides
Apache Hadoopの新機能Ozoneの現状 by
Apache Hadoopの新機能Ozoneの現状Apache Hadoopの新機能Ozoneの現状
Apache Hadoopの新機能Ozoneの現状NTT DATA OSS Professional Services
6.2K views35 slides
Distributed data stores in Hadoop ecosystem by
Distributed data stores in Hadoop ecosystemDistributed data stores in Hadoop ecosystem
Distributed data stores in Hadoop ecosystemNTT DATA OSS Professional Services
5.2K views52 slides

More from NTT DATA OSS Professional Services(20)

PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイント by NTT DATA OSS Professional Services
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイントPostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイント
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイント
SIerとオープンソースの美味しい関係 ~コミュニティの力を活かして世界を目指そう~ by NTT DATA OSS Professional Services
SIerとオープンソースの美味しい関係 ~コミュニティの力を活かして世界を目指そう~SIerとオープンソースの美味しい関係 ~コミュニティの力を活かして世界を目指そう~
SIerとオープンソースの美味しい関係 ~コミュニティの力を活かして世界を目指そう~
PostgreSQLでpg_bigmを使って日本語全文検索 (MySQLとPostgreSQLの日本語全文検索勉強会 発表資料) by NTT DATA OSS Professional Services
PostgreSQLでpg_bigmを使って日本語全文検索 (MySQLとPostgreSQLの日本語全文検索勉強会 発表資料)PostgreSQLでpg_bigmを使って日本語全文検索 (MySQLとPostgreSQLの日本語全文検索勉強会 発表資料)
PostgreSQLでpg_bigmを使って日本語全文検索 (MySQLとPostgreSQLの日本語全文検索勉強会 発表資料)

Recently uploaded

今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20... by
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...NTT DATA Technology & Innovation
120 views42 slides
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料) by
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)NTT DATA Technology & Innovation
18 views38 slides
The Things Stack説明資料 by The Things Industries by
The Things Stack説明資料 by The Things IndustriesThe Things Stack説明資料 by The Things Industries
The Things Stack説明資料 by The Things IndustriesCRI Japan, Inc.
58 views29 slides
SSH応用編_20231129.pdf by
SSH応用編_20231129.pdfSSH応用編_20231129.pdf
SSH応用編_20231129.pdficebreaker4
335 views13 slides
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向 by
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向Hitachi, Ltd. OSS Solution Center.
60 views26 slides
さくらのひやおろし2023 by
さくらのひやおろし2023さくらのひやおろし2023
さくらのひやおろし2023法林浩之
96 views58 slides

Recently uploaded(11)

今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20... by NTT DATA Technology & Innovation
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料) by NTT DATA Technology & Innovation
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
The Things Stack説明資料 by The Things Industries by CRI Japan, Inc.
The Things Stack説明資料 by The Things IndustriesThe Things Stack説明資料 by The Things Industries
The Things Stack説明資料 by The Things Industries
CRI Japan, Inc.58 views
SSH応用編_20231129.pdf by icebreaker4
SSH応用編_20231129.pdfSSH応用編_20231129.pdf
SSH応用編_20231129.pdf
icebreaker4335 views
さくらのひやおろし2023 by 法林浩之
さくらのひやおろし2023さくらのひやおろし2023
さくらのひやおろし2023
法林浩之96 views
Windows 11 information that can be used at the development site by Atomu Hidaka
Windows 11 information that can be used at the development siteWindows 11 information that can be used at the development site
Windows 11 information that can be used at the development site
Atomu Hidaka88 views
SNMPセキュリティ超入門 by mkoda
SNMPセキュリティ超入門SNMPセキュリティ超入門
SNMPセキュリティ超入門
mkoda355 views

Apache Sparkのご紹介 (後半:技術トピック)

  • 1. Apache Sparkのご紹介 ~技術トピック 2014年5月29日 第16回 Hadoopソースコードリーディング 発表資料 NTTデータ 基盤システム事業本部 OSSプロフェッショナルサービス 猿田 浩輔
  • 2. 2Copyright © 2013 NTT DATA Corporation  猿田 浩輔  Hadoopを中心とするOSSの技術検証や導入支援、テクニカ ルサポートを行う  最近はSparkに興味を持つ  Hadoop徹底入門 / HADOOP HACKSを世に出す悪事に加 担 自己紹介
  • 3. 3Copyright © 2013 NTT DATA Corporation • Sparkでの典型的な処理のイメージ • Sparkが扱う基本的な抽象データセット「RDD」の概要 • クラスタ上での処理や、ノード間の通信イメージ • RDDの変換チェインがクラスタ上で実行可能な処理に分割されるまで の流れ ここからのトピック
  • 4. 4Copyright © 2013 NTT DATA Corporation • SparkではRDDと呼ばれる抽象データセットの変換を繰り返して目的の結果を得る • この一連の処理を、「ジョブ」と呼ぶ • Spark版ワードカウントの例 典型的な処理イメージ // HDFS上のファイルからRDDを生成 1: val hdfsRdd = spark.textFile("hdfs://...") // 単語で構成されるシーケンスを作る 2: val splitRdd = hdfsRdd.flatMap(line => line.split(" ")) // 各単語をキーとし、値を1とするキーバリューペアを作る 3: val mappedRdd = mappedRdd.map(word => (word, 1)) // 単語をキーとし、同じキーを持つペアの値(1)を足しこむ 4: val reducedRdd = mappedRdd.reduceByKey(_ + _) // 計算結果をHDFS上のファイルに書き出す 5: counts.saveAsTextFile("hdfs://...")
  • 5. 5Copyright © 2013 NTT DATA Corporation join map もう少し複雑な処理のイメージ HDFS上のファイルやリスト などのデータ構造など、 様々なデータソースから RDDを生成できる ListなどのScalaコ レクションオブジェ クト HDFS HDFSなど様々 なデータソース からRDDを生 成可能 ・ ・ ・ Actionが適用された時点 でジョブが生成され、実際 の計算が始まる。 RDDはイミュータブルなの で、このように遅延計算し ても、逐次計算した場合 と同じ結果が得られる filter filter distinct textFile parallelize filter map 原則、関数評価の直 後に計算しない。生 成された子RDDには 親RDDと後に計算す る関数を記憶してお く。 このため計算コスト やオブジェクトの生成 コストが削減される map filterdistinct join reduceByKey 計算結果 join distinct [関数] 関数評価後のRDDRDD RDDの変換の方向 変換関数 Action RDDはイミュータブル なので、変換のもと になったデータを変 更せず、新規にデー タを生成する 最終的な計算結果
  • 6. 6Copyright © 2013 NTT DATA Corporation Sparkのデータ処理をざっくり言うと  RDD(Resilient Distributed Datasets)という 抽象データセットを繰り返し変換し、結果を得る  ユーザが定義したRDDの系譜(Lineage)に従って 処理を実施する それで、RDDって? RDDのつながりのグラフ構造
  • 7. 7Copyright © 2013NTT DATA Corporation RDDとは? • コレクションのようなデータ構造であり、内部の要素をイテレートできる • 更に、Sparkの基本的なコンセプトを実現するために、次のような特徴を備える • パーティションに分割され、サーバ上で分散配置される • インメモリで保持される(なるべくディスクに着地させない) • 遅延計算される(計算を行うタイミングをスケジューリングされたあと、実際に計算される) • イミュータブル(フォールトトレラント性を担保するための特徴) RDD 要素(レコード) 要素(レコード) パーティション 要素(レコード) 要素(レコード) パーティション RDDの基本構造 サーバ サーバ パーティションの単位で 複数のサーバに分散配置される。 パーティションの数、分割の方法はRDDの種類や 変換の種類によって決まる。 実際の計算は要素ごとに 実施される。
  • 8. 8Copyright © 2013 NTT DATA Corporation 遅延計算 val sc = new SparkContext(...) val file = sc.textFile("hdfs://...") val errors = file.filter(line => line.contains("ERROR")) // Count all the errors errors.count() この時点では計算されない ここで計算がスケジューリングされる。 実際に計算が起こるタイミングはスケジューリングによる。 サンプルコード 計算が スケジューリ ングされない 計算 がスケジュー リングされる
  • 9. 9Copyright © 2013 NTT DATA Corporation フォールトトレラント性を実現するための特性  Sparkでは、大量のデータをオンメモリで分散処理するので、各サーバに分散配置され たデータ(パーティション)が処理中に欠損した場合に備えた仕組みが必要  欠損に備えつつ、ネットワーク転送を出来る限り避けたい  分散システムでは扱うデータをコピー(レプリカ作成)して保持する方法をとるものもある が、ネットワーク転送をできるだけ避けるために、 「得たいデータが失われていたら前のデータから再生成する」というアプローチをとっている。 そのために以下の制約・前提条件を持っている。 • RDDはイミュータブルであること • 元データのデータソースは信頼性が高く(高可用/高堅牢) 、イミュータブルである こと
  • 10. 10Copyright © 2013 NTT DATA Corporation 例えば、 のようにデータが生成された後に、 のように3個目~5個目のRDDの一部が失われたものとする。次に5個目のRDDを再取得すると、 のように2個目のRDDから必要なデータを再生成される。これは先の結果と同じ結果である。 再生成により同じ結果が得られるのは、RDDがイミュータブルだからである。 同様に1個目のRDDから後が失われていた場合は、信頼のおけるイミュータブルなデータソースから 再生成すればよい、ということになる RDD フォールトトレラント性を実現するための特性 RDD外部 RDD RDD RDD RDDRDD外部 RDD RDD RDD RDDRDD外部 RDD RDD RDD
  • 11. 11Copyright © 2013 NTT DATA Corporation RDDの依存関係  RDDの変換において、変換の元(親)のRDDと変換後 (子)のRDDの間には依存関係が定義される  依存関係は、スケジューリング(RDDの変換チェインを 処理可能なタスクに分割する)に関係する  RDDの変換の依存関係には、以下の2種類がある • 狭い依存関係(Narrow Dependency) • 広い依存関係(Wide Dependency)
  • 12. 12Copyright © 2013 NTT DATA Corporation 狭い依存関係の例 RDD1 パーティション1-1 This is a pen. This is a book. What is this? パーティション1-2 Thank you. No Problem. This is a cup. RDD2 パーティション2-1 This is a pen. This is a book. パーティション2-2 This is a cup. 「This is」 Filterの例 親パーティションが単一の子パーティションの生成に関わっている依存関係
  • 13. 13Copyright © 2013 NTT DATA Corporation 広い依存関係の例 RDD1 パーティション1-1 dog, white dog, black cat, white パーティション1-2 cat, black dog, brown cat, brown RDD2 パーティション2-1 dog, white dog, black パーティション2-2 GroupByKeyの例 dog, brown cat, black cat, brown cat, white キーに基づく グルーピング キー・バリュー形 式のデータセット 親パーティションが、複数の子パーティションの生成に関わっている依存関係
  • 14. 14Copyright © 2013 NTT DATA Corporation 主な登場人物 • クラスタを構成するノード • クライアント : ジョブのキックを担当 • マスタ : クラスタ全体のリソース管理を担当 • ワーカ : 計算資源の提供/管理を担当 • ノード以外の主要な要素 • ドライバ : ユーザがRDDの変換を記述したプログラム • エグゼキュータ : ワーカ上で動作し、実際の計算処理を担当 • タスク : ジョブを、エグゼキュータが処理可能な粒度に分解した処理単位 • スケジューラ : ジョブをタスクに分割したり、タスクのエグゼキュータへの割り当てを 担当 RDDの変換が、クラスタ上でどのように動作するか
  • 15. 15Copyright © 2013 NTT DATA Corporation RDDの変換が、クラスタ上でどのように動作するか
  • 16. 16Copyright © 2013 NTT DATA Corporation • エグゼキュータに割り当てる「タスク」はどのように生成され る?系譜との関係は? • タスクはどのようにエグゼキュータに割り当てられる? 系譜をもとにタスクを生成したり、エグゼキュータへの割り当 てをコントロールするのはスケジューラの役割 RDDの変換が、クラスタ上でどのように動作するか
  • 17. 17Copyright © 2013 NTT DATA Corporation • 系譜をステージに分割する • ステージの実行要否を判定する • タスクを生成する • タスクを実行する場所を決定する • タスクの実行順序をスケジューリングする タスクの生成、実行までの流れ
  • 18. 18Copyright © 2013 NTT DATA Corporation  DAGSchedulerが、系譜をステージに分割する  ステージは系譜中で狭い依存関係が連続して発生する範囲である(依 存関係の種類は変換の種類によって決まる) 系譜をステージに分割する RDD ステージ
  • 19. 19Copyright © 2013 NTT DATA Corporation ステージ分割のステップ 起点を移しながらRDD間の 依存関係の解決とステー ジの成長、及びステージ間 の依存関係を解決し、系 譜がステージに分割される 起点から狭い依存関係でた どれるRDDに起点を移し、親 RDDを再帰的にたどって依 存関係の解決とステージの 成長を繰り返す。 狭い依存関係で閉じた範囲 が限定された段階で当該ス テージが確定する RDDの変換の方向 狭い依存関係 広い依存関係 RDD 成長中のステージ 確定したステージ ステージ間の依存関係 新規にステージを生成し、 起点のRDDを加える 変換の最後に出現する RDD(Actionが適用され るRDD)を、系譜をたどる 起点とする 起点から系譜をたどり、 親ノードとの依存関係 を解決する。 狭い依存関係を持つ RDDを現在のステージ に含め、ステージを成 長させる 現在の起点から広い依存 関係でたどれるRDDに起点 を移し、同様に親RDDとの 依存関係の解決とステージ の成長を繰り返す。 新なステージは広い依存関 係の子のRDDが属するス テージの親ステージとなる 変換の最後に出現 するRDD
  • 20. 20Copyright © 2013 NTT DATA Corporation  パーティションごとにエグゼキュータ1つがまとめて計算できる 変換の範囲を決めるため  広い依存関係を発生させる変換は、パーティション内の要素 を子RDDのパーティションを処理する各エグゼキュータに分配 する必要があるので、エグゼキュータ間の通信が発生する。 なぜステージに分割するのか?
  • 21. 21Copyright © 2013 NTT DATA Corporation 広い依存関係を発生させる変換の実行例 4個 3個 1個 3個 countByKey countByKey関数で、図形ごと、色ごとに数をカウントする 2個 2個 1個 RDD 変換関数 パーティション RDD内の要素 グループ RDD1 RDD2 パーティショナによって要素の振り分け方が異なる。 この例の場合、色ごとに要素を振り分ける
  • 22. 22Copyright © 2013 NTT DATA Corporation 広い依存関係を発生させる変換の実行例
  • 23. 23Copyright © 2013 NTT DATA Corporation • Sparkでは同一スケジューラで制御される複数のジョブで、RDDを共有することができ る • 共有しているRDDがすでに計算済みで、メモリやディスクに実体を持つ場合、当該 RDDを生成するための前段のステージの実行を省略することができる。 • 明示的にRDDをキャッシュした場合 • ステージ内の最後のRDD(シャッフル直前のRDD) ステージの実行要否を判定する 他のジョブで キャシュされた RDD 後続のRDDがすでに計 算済みなので、親ス テージの実行は不要 親ステージ 子ステージ
  • 24. 24Copyright © 2013 NTT DATA Corporation  DAGSchedulerが、実行対象の個々のステージに対してタスクを定義する  各ステージにおいて、ステージ内の最後のRDDのパーティション数から、当該ステージ のタスク数が決まる  ステージに含まれるRDDの変換チェインから、タスクあたりの処理範囲が決まる タスクの生成 filter (青い図形を除外) map (図形の形を変換) union パーティション数 = 4なので、こ のステージのタスク数は4。 個々のタスクが異なるエグゼ キュータで実行される ステージ内の最後のRDDのパー ティションから、親RDDの方向に 一意にたどれる。 一意にたどれる範囲が1タスク。
  • 25. 25Copyright © 2013 NTT DATA Corporation • RDDにはプリファードロケーションが定義されている場合がある。DAGSchedulerは、タ スクを実行するエグゼキュータを選ぶにあたって、プリファードロケーションをヒントに用 いる。 • RDDにプリファードロケーションが定義されていない場合は、親RDDを通り掛け順にた どり、最初に見つかったプリファードロケーションを用いる。 タスクの実行場所の決定
  • 26. 26Copyright © 2013 NTT DATA Corporation • プリファードロケーションはRDDの種類ごとに定義される。HDFSをデー タソースとするRDDはプリファードロケーション = ブロックの実体が配置 されているノードなので、データローカリティが担保される。 • データソースをもとに生成されるRDDはプリファードロケーションを持つ ので、いつかはプリファードロケーションが見つかる。 タスクの実行場所の決定
  • 27. 27Copyright © 2013 NTT DATA Corporation  ステージを構成するタスク群は「タスクセット」としてTaskSchedulerに渡される。  TaskSchedulerはタスクセット単位で実行順序のスケジューリングを行う。  TaskSchedulerはタスクセットの実行順序を決定するまでにタスクセットを登録してお く「プール」を1つ以上保持する。スケジューリング方式によってプールの数や使い方が 異なる。  標準で2つのスケジューリング方式が用意されている  FIFO  単一のプールを用いて、キューに様に扱う。プールに登録されたタスクセットを順にスケジューリング する  FAIR  複数のプールを用いて、各プールから公平にタスクセットを取り出し、スケジューリングする。 タスクの実行順序のスケジューリング
  • 28. 28Copyright © 2013 NTT DATA Corporation  Resilient Distributed Datasets: A Fault-Tolerant Abstraction for In-Memory Cluster Computing (http://www.cs.berkeley.edu/~matei/papers/2012/nsdi_spark.pdf)  Resilient Distributed Datasets: A Fault-Tolerant Abstraction for In-Memory Cluster Computing (http://www.cs.berkeley.edu/~matei/papers/2011/tr_spark.pdf)  Spark: Cluster Computing with Working Sets (http://www.cs.berkeley.edu/~matei/papers/2010/hotcloud_spark.pdf) (参考)論文紹介