SlideShare a Scribd company logo
1 of 28
© 2019 NTT DATA Corporation
2019/03/19
株式会社NTTデータ 技術開発本部
猿田 浩輔
Apache Spark 2.4 and 3.0 - What's Next? -
© 2019 NTT DATA Corporation 2
 猿田 浩輔
 株式会社NTTデータ 技術開発本部
 Apache Sparkコミッタ (2015年から)
 Hadoop/SparkなどOSS並列分散処理系のテクニカルサ
ポートに従事してきた
 最近はPersistent Memoryなど新しいトレンドのハードウェア
の活用に興味
$ whoami
© 2019 NTT DATA Corporation 3
 オープンソースの並列分散処理系
 並列分散処理の面倒な部分は処理系が解決してくれる
 障害時のリカバリ
 タスクの分割やスケジューリング
 etc
What is Apache ?
大量のデータを たくさんのサーバを並べて
並列分散処理し、
現実的な時間(数分~数時間)で
目的の処理結果を得る
© 2019 NTT DATA Corporation 4
Unified Analytics Engine
Spark Core
(Sparkのデータ処理エンジンや基本的なAPIなどを含む)
Spark Streaming
(ストリーム処理)
Spark SQL
(クエリ処理)
Structured
Streaming
(ストリーム処理)
GraphX
(グラフ処理)
MLlib / Spark ML
(機械学習)
SQL
© 2019 NTT DATA Corporation 5
 近年はSpark SQLを中心とした処理系になってきており、パフォー
マンスや利便性が良くなった
 宣言的なAPIやSQL/HiveQLで処理が書ける
 オプティマイザによる最適化の恩恵が受けられる
 開発言語による性能差が出にくい
 機械学習、ストリーム処理向けのライブラリも、Spark SQLのデー
タ構造であるDataFrame / Datasetをベースとしたものが整備され
てきた
 MLlib (spark.mlパッケージ)
 Structured Streaming
RDDからDataFrame / Datasetを中心とした処理系へ
// 宣言的なAPIでクエリを記述する例
// DataFrame (テーブル上のデータ構造)にParquetフォーマットのファイルをロード
val df = spark.read.parquet(“/path/to/file”)
// 港区在住の人の平均給与を求めるクエリ
df.select($”salary”).where($”residence” === “港区”).avg()
© 2019 NTT DATA Corporation 6
 Kubernetesサポート (Spark 2.4 / 3.0)
 Project Hydrogen
 Barrier Execution Mode (Spark 2.4)
 Accelerator Aware Scheduling (Spark 3.0)
 Spark Graph (Spark 3.0)
本日主にご紹介する新機能
© 2019 NTT DATA Corporation 7
Kubernetesサポート
© 2019 NTT DATA Corporation 8
 Spark 2.3(ひとつ前のフィーチャーリリース)からKubernetes
がサポートされた
 2.3では機能不足だったSparkも徐々に完成度を上げている
Spark on Kubernetes
Spark Core
(Sparkのデータ処理エンジンや基本的なAPIなどを含む)
Spark Streaming
(ストリーム処理ラ
イブラリ)
Spark SQL
(クエリでデータ処理を記述する
ためのライブラリ)
Structured
Streaming
(ストリーム処理ラ
イブラリ)
GraphX
(グラフ処理処理ラ
イブラリ)
MLlib / Spark ML
(機械学習ライブラリ)
YARN Standalone Mesos Kubernetes
© 2019 NTT DATA Corporation 9
 Spark 2.4
 サポートする開発言語の強化
• PySpark対応(SPARK-23984)
• SparkR対応(SPARK-24433)
 クライアントモードでの動作(SPARK-23146)
• インタラクティブシェルやノートブックと組み合わせて利用できるように
なった
 Spark 3.0
 Kerberosサポート(SPARK-23257) 大体完了
• KerberizedなHDFSやHBaseなどと連携が可能に
 Driver/Executor Pod向けのユーザ定義テンプレート マージ済み
• Kubernetesらしく、宣言的に設定できる(SPARK-24434)
 ダイナミックリソースアロケーション(SPARK-24432) 3.0に向けて議論中
 External Shuffle Service(SPARK-25299) 3.0に向けて議論中
Kubernetesサポート in Spark 2.4 and 3.0
© 2019 NTT DATA Corporation 10
Project Hydrogen
© 2019 NTT DATA Corporation 11
 SparkにおけるAI(特にディープラーニング)を活用したユース
ケースをカバーするためのサブプロジェクト
 Sparkはこれまでもディープラーニングのユースケースで活用
されてきたが、浮き彫りになった弱点を強化する取り組み
 大きく3つの取り組みから成り立っている
Project Hydrogen
Barrier Execution
Mode
Optimized Data
Exchange
Accelerator Aware
Scheduling
2.4で基本部分が実装済み 3.0での導入を目標に開発
が進められている
© 2019 NTT DATA Corporation 12
 Sparkでは、ユーザが記述した処理から「ステージ」や「タス
ク」と呼ばれる処理単位が生成される
 複数のExecutorが異なるタスクを処理することでクラスタ全
体で分散処理が行われる
Sparkの処理単位(おさらい)
タスク
タスク
タスク
タスク
タスク
ステージ1 シャッフル ステージ2 シャッフル ステージ3
タスク
タスク
タスク
タスク
© 2019 NTT DATA Corporation 13
 Executorへのタスクの割り当ては、Sparkのスケジューラが
決定する
 ステージ間は依存関係になっており、先行するステージのタ
スクがすべて完了すると後続のステージのスケジューリング
が始まる
タスクのスケジューリング(おさらい)
タスク
タスク
タスク
タスク
タスク
ステージ1 シャッフル ステージ2 シャッフル ステージ3
タスク
タスク
タスク
タスク
ステージ1のタスクがすべて完了したら、
ステージ2のタスクのスケジューリングが始まる
© 2019 NTT DATA Corporation 14
 従来からのタスクスケジューリングは、データローカリティや
Executorの空コア数などに基づいて行われる
 コアを遊ばせないようにタスクがスケジューリングされる
 同じステージに含まれるタスクが一斉にスケジューリン
グされるとは限らない
 あるタスクが失敗した場合、当該タスクのみリトライされる
 ステージ内の他のタスクは影響を受けない
タスクのスケジューリング(おさらい)
タスク
タスク
タスク
進行中のタスク
スケジューリング
待ちのタスク
タスク
タスク
タスク
×
完了
完了
リトライが必要なのは
失敗したタスクだけ
© 2019 NTT DATA Corporation 15
 従来のスケジューリング方式は、各タスクが独立に動作する
前提になっており、分散ディープラーニングなどで必要とされ
る、複数のタスクの協調動作の実現が難しい
 協調動作が必要なタスクを同時にスケジューリング
 協調動作が必要なタスクのいずれかが失敗したら、他の
タスクもまとめて再スケジューリング
 スケジューリングのほかに、タスク間で同期する仕組み
もない
分散ディープラーニングにおける従来のスケジューリングの課題
タスク
タスク
タスク
進行中のタスク
スケジューリング
待ちのタスク
タスク
タスク
タスク
×
完了
完了
リトライが必要なのは
失敗したタスクだけ
© 2019 NTT DATA Corporation 16
 Barrier Execution Modeは複数のタスクの協調動作を可能
にする、新しいスケジューリング方式
 協調動作が必要なタスクが同時にExecutorに、をまとめ
てスケジューリング可能
• Executorのコアに空があっても、同時に動作が必要
なタスク数に満たなければスケジューリングしない
 協調動作が必要なタスクのいずれかが失敗した場合は、
同じステージのすべてのタスクをリトライ
 タスク間での同期のメカニズムも実装されている
 従来のスケジューリング方式と組み合わせて利用可能
Barrier Execution Mode
© 2019 NTT DATA Corporation 17
 RDD#barrierメソッドで、Barrier Execution Modeでのスケ
ジューリング対象を設定できる
 BarrierTaskContext#barrierメソッドで、タスク間の同期点を設定で
きる
 具体的な通信処理ロジックなどはDLフレームワーク側やDL
アプリケーション開発者が実装する必要がある
 Barrier Execution Modeは協調を可能にする仕掛けを提供
するだけ
Barrier Execution Mode
rdd.barrier().mapPartitions() { iter =>
val context = BarrierTaskContext.get() // バリアタスクコンテキストを取得
<何か処理>
context.barrier() // ここでタスク間の待ち合わせ
© 2019 NTT DATA Corporation 18
 3.0への導入に向けて、Project Hydrogenの中では最近議
論が活発
 Standalone / YARN / Kubernetes向けに導入が検討されて
いる
 Hadoop 3.1.2からYARNがGPUをサポート(管理し、払
い出す対象のリソースとして認識)。
 クラスタマネージャの機能と連携しながら、Spark側のスケ
ジューラもアクセラレータリソースが払い出されたExecutorへ
のタスクのスケジューリングを行う
 例えば、どのExecutor上でどのくらいのアクセラレータが
利用できるかで、タスクのスケジューリングを制御する必
要がある
 3.0ではGPU向けの機能が実装される見込み
Accelerator Aware Scheduling
© 2019 NTT DATA Corporation 19
Spark Graph
© 2019 NTT DATA Corporation 20
 これまでもSpark向けに様々なグラフ処理ライブラリがあった
 GraphX
 GraphFrames
 Spark GraphはGraphXやGraph Frameの課題を解決する
新しいグラフ処理ライブラリ
 3.0への導入に向けて議論が進められている
Spark向けのグラフ処理ライブラリ
© 2019 NTT DATA Corporation 21
 GraphX
 RDDベース
 Scala APIしか提供されていない
 あまりメンテナンスされていない
 GraphFrames
 DataFrameベース
 SparkPackagesで提供されるサードパーティパッケージ
 エッジやノードのセマンティクスが弱く、単純なグラフマッ
チングしか行えない
従来のSpark向けのグラフライブラリの問題点
© 2019 NTT DATA Corporation 22
 GraphFramesではノード集合やエッジ集合をDataFrameで表現する
 各レコードがノードやエッジに対応する
 DataFrameのレコードとして表現されるため、ノードやエッジに属性
が付与できる
 ただし、ノードやエッジそのものに「型」は定義できない
GraphFramesのデータモデル
太郎 次郎
東京 NYC
姉妹都市
居住
兄弟
居住
駐在経験
• 右のグラフで緑のノードは場所
を表し、水色のノードは人を表
す(型が違う)。
• エッジについても色ごとに種類
が異なる。
• GraphFramesではエッジやノード
の「型」を設定できないため、種
類の違いを区別できない
© 2019 NTT DATA Corporation 23
 GraphFramesではMotifsと呼ばれる簡易的なクエリでグラフマッチングが
行える
 ただし、エッジやノードに型が定義できないため、形状に基づくマッチング
しか行えない
 属性(例えばノードに関連付けられた人の名前など)を考慮したマッチング
もサポートされていない
 Motifsでマッチした結果はDataFrameとして得られるので、複雑なマッチ
ングを行う場合はDataFrameのオペレーションと併用する
GraphFramesのグラフマッチング
val motifs = g.find(“(node1)-[edge]->(node2)”)
val filtered = motifs.filter(“edge.rel = ‘居住’”)
例えば、先述のグラフで居住者と居住地を表す部分グラフを抽出したい場合
は、Motifsでマッチングした後にエッジに付与された属性が「居住」であるもの
をフィルタするひつようがある。
© 2019 NTT DATA Corporation 24
 Property Graphと呼ばれるデータモデルを扱う
 エッジやノードに「属性」だけでなく「型」が設定できる
 Cypherによるグラフマッチングが可能
 Property Graphに対して、型や属性に基づくマッチングが可能
 マッチしたエッジやノードだけでなく、付与された属性もDataFrameとして
返却可能
Spark Graph
val result: CypherResult = graph.cypher(
"""|MATCH (person: 人)-[rel: 居住]->(loc: 都市)
"""|RETURN person.name, loc.name""").stripMargin
result.df.show()
| person.name | loc.name |
| 太郎 | 東京 |
| 次郎 | 東京 |
Property Graphに対するCypherの適用例
© 2019 NTT DATA Corporation 25
その他のトピック
© 2019 NTT DATA Corporation 26
 Pandas UDFの強化(ユーザ定義集約関数やWindow関数が定義
できるようになった)
 ビルトイン関数/高階関数の拡充
 2.4では、主に配列やマップなど、複雑なデータ型を対象とし
た29個のビルトイン関数を追加
 3.0でもマップ向けの高階関数が追加される見通し
 サポートするデータソースの追加(Avro, 画像ファイル)
 Structured StreamingへForeachBatchシンクの追加
 レコード単位ではなく、DataFrame単位でのオペレーションが
記述できる(Spark StreamingのforeachRDDと似ている)
 複数のデータストアへの出力などに使える
ほかにもまだまだ・・・ in Spark 2.4
© 2019 NTT DATA Corporation 27
 Java11サポート
 既にmasterブランチ/3.0ブランチにはマージ済み
 Scala 2.12サポート
 Spark 2.4からすでにScala 2.12が利用できるが、Spark 3.0
ではScala 2.12がデフォルトになる予定
 Hadoop 3系サポート
 Sparkが依存しているHiveのバージョンも上げなければならな
い
 依存するHiveのバージョンを1.2.1から2.3.4にアップグレード
ほかにもまだまだ・・・ in Spark 3.0
© 2019 NTT DATA Corporation

More Related Content

What's hot

What's hot (20)

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 ...
Apache Sparkの基本と最新バージョン3.2のアップデート(Open Source Conference 2021 Online/Fukuoka ...
 
大量のデータ処理や分析に使える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 発表資料)
大量のデータ処理や分析に使えるOSS Apache Spark入門(Open Source Conference 2021 Online/Kyoto 発表資料)
 
単なるキャッシュじゃないよ!?infinispanの紹介
単なるキャッシュじゃないよ!?infinispanの紹介単なるキャッシュじゃないよ!?infinispanの紹介
単なるキャッシュじゃないよ!?infinispanの紹介
 
ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方
 
40分でわかるHadoop徹底入門 (Cloudera World Tokyo 2014 講演資料)
40分でわかるHadoop徹底入門 (Cloudera World Tokyo 2014 講演資料) 40分でわかるHadoop徹底入門 (Cloudera World Tokyo 2014 講演資料)
40分でわかるHadoop徹底入門 (Cloudera World Tokyo 2014 講演資料)
 
O/Rマッパーによるトラブルを未然に防ぐ
O/Rマッパーによるトラブルを未然に防ぐO/Rマッパーによるトラブルを未然に防ぐ
O/Rマッパーによるトラブルを未然に防ぐ
 
Apache Sparkにおけるメモリ - アプリケーションを落とさないメモリ設計手法 -
Apache Sparkにおけるメモリ - アプリケーションを落とさないメモリ設計手法 -Apache Sparkにおけるメモリ - アプリケーションを落とさないメモリ設計手法 -
Apache Sparkにおけるメモリ - アプリケーションを落とさないメモリ設計手法 -
 
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
 
Hadoop/Spark を使うなら Bigtop を使い熟そう! ~並列分散処理基盤のいま、から Bigtop の最近の取り組みまで一挙ご紹介~(Ope...
Hadoop/Spark を使うなら Bigtop を使い熟そう! ~並列分散処理基盤のいま、から Bigtop の最近の取り組みまで一挙ご紹介~(Ope...Hadoop/Spark を使うなら Bigtop を使い熟そう! ~並列分散処理基盤のいま、から Bigtop の最近の取り組みまで一挙ご紹介~(Ope...
Hadoop/Spark を使うなら Bigtop を使い熟そう! ~並列分散処理基盤のいま、から Bigtop の最近の取り組みまで一挙ご紹介~(Ope...
 
大規模データ活用向けストレージレイヤソフトのこれまでとこれから(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
大規模データ活用向けストレージレイヤソフトのこれまでとこれから(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)大規模データ活用向けストレージレイヤソフトのこれまでとこれから(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
大規模データ活用向けストレージレイヤソフトのこれまでとこれから(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
 
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
 
Cassandraのしくみ データの読み書き編
Cassandraのしくみ データの読み書き編Cassandraのしくみ データの読み書き編
Cassandraのしくみ データの読み書き編
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
ブルックスのいう銀の弾丸とは何か?
ブルックスのいう銀の弾丸とは何か?ブルックスのいう銀の弾丸とは何か?
ブルックスのいう銀の弾丸とは何か?
 
事業のグロースを支えるDataOpsの現場 #DataOps #DevSumi #デブサミ
事業のグロースを支えるDataOpsの現場 #DataOps #DevSumi #デブサミ事業のグロースを支えるDataOpsの現場 #DataOps #DevSumi #デブサミ
事業のグロースを支えるDataOpsの現場 #DataOps #DevSumi #デブサミ
 
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
 
Apache Hadoopの新機能Ozoneの現状
Apache Hadoopの新機能Ozoneの現状Apache Hadoopの新機能Ozoneの現状
Apache Hadoopの新機能Ozoneの現状
 
ヤフーのプライベートクラウドとクラウドエンジニアの業務について
ヤフーのプライベートクラウドとクラウドエンジニアの業務についてヤフーのプライベートクラウドとクラウドエンジニアの業務について
ヤフーのプライベートクラウドとクラウドエンジニアの業務について
 
大量のデータ処理や分析に使えるOSS Apache Spark入門 - Open Source Conference2020 Online/Fukuoka...
大量のデータ処理や分析に使えるOSS Apache Spark入門 - Open Source Conference2020 Online/Fukuoka...大量のデータ処理や分析に使えるOSS Apache Spark入門 - Open Source Conference2020 Online/Fukuoka...
大量のデータ処理や分析に使えるOSS Apache Spark入門 - Open Source Conference2020 Online/Fukuoka...
 
OpenLineage による Airflow のデータ来歴の収集と可視化(Airflow Meetup Tokyo #3 発表資料)
OpenLineage による Airflow のデータ来歴の収集と可視化(Airflow Meetup Tokyo #3 発表資料)OpenLineage による Airflow のデータ来歴の収集と可視化(Airflow Meetup Tokyo #3 発表資料)
OpenLineage による Airflow のデータ来歴の収集と可視化(Airflow Meetup Tokyo #3 発表資料)
 

Similar to Apache Spark 2.4 and 3.0 What's Next?

C27 基幹領域への適用におけるpostgre sqlの抱える課題 by 原嘉彦
C27 基幹領域への適用におけるpostgre sqlの抱える課題 by 原嘉彦C27 基幹領域への適用におけるpostgre sqlの抱える課題 by 原嘉彦
C27 基幹領域への適用におけるpostgre sqlの抱える課題 by 原嘉彦
Insight Technology, Inc.
 

Similar to Apache Spark 2.4 and 3.0 What's Next? (20)

Spark 3.0が目指す、よりインテリジェントなUnified Analytics Platform(db tech showcase 2019 Tok...
Spark 3.0が目指す、よりインテリジェントなUnified Analytics Platform(db tech showcase 2019 Tok...Spark 3.0が目指す、よりインテリジェントなUnified Analytics Platform(db tech showcase 2019 Tok...
Spark 3.0が目指す、よりインテリジェントなUnified Analytics Platform(db tech showcase 2019 Tok...
 
Project Hydrogen and Spark Graph - 分散処理 × AIをより身近にする、Apache Sparkの新機能 - (NTTデ...
Project Hydrogen and Spark Graph - 分散処理 × AIをより身近にする、Apache Sparkの新機能 - (NTTデ...Project Hydrogen and Spark Graph - 分散処理 × AIをより身近にする、Apache Sparkの新機能 - (NTTデ...
Project Hydrogen and Spark Graph - 分散処理 × AIをより身近にする、Apache Sparkの新機能 - (NTTデ...
 
Hadoop ecosystem NTTDATA osc15tk
Hadoop ecosystem NTTDATA osc15tkHadoop ecosystem NTTDATA osc15tk
Hadoop ecosystem NTTDATA osc15tk
 
分散処理基盤Apache Hadoop入門とHadoopエコシステムの最新技術動向 (オープンソースカンファレンス 2015 Tokyo/Spring 講...
分散処理基盤Apache Hadoop入門とHadoopエコシステムの最新技術動向 (オープンソースカンファレンス 2015 Tokyo/Spring 講...分散処理基盤Apache Hadoop入門とHadoopエコシステムの最新技術動向 (オープンソースカンファレンス 2015 Tokyo/Spring 講...
分散処理基盤Apache Hadoop入門とHadoopエコシステムの最新技術動向 (オープンソースカンファレンス 2015 Tokyo/Spring 講...
 
Hadoop事始め
Hadoop事始めHadoop事始め
Hadoop事始め
 
20170525 jsug バッチは地味だが役に立つ
20170525 jsug バッチは地味だが役に立つ20170525 jsug バッチは地味だが役に立つ
20170525 jsug バッチは地味だが役に立つ
 
バッチは地味だが役に立つ
バッチは地味だが役に立つバッチは地味だが役に立つ
バッチは地味だが役に立つ
 
Spark MLlibではじめるスケーラブルな機械学習
Spark MLlibではじめるスケーラブルな機械学習Spark MLlibではじめるスケーラブルな機械学習
Spark MLlibではじめるスケーラブルな機械学習
 
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
 
NTTデータ流 Hadoop活用のすすめ ~インフラ構築・運用の勘所~
NTTデータ流 Hadoop活用のすすめ ~インフラ構築・運用の勘所~NTTデータ流 Hadoop活用のすすめ ~インフラ構築・運用の勘所~
NTTデータ流 Hadoop活用のすすめ ~インフラ構築・運用の勘所~
 
Ansibleで構成管理始める人のモチベーションをあげたい! (Cloudera World Tokyo 2014LT講演資料)
Ansibleで構成管理始める人のモチベーションをあげたい! (Cloudera World Tokyo 2014LT講演資料)Ansibleで構成管理始める人のモチベーションをあげたい! (Cloudera World Tokyo 2014LT講演資料)
Ansibleで構成管理始める人のモチベーションをあげたい! (Cloudera World Tokyo 2014LT講演資料)
 
内製パッケージによるHadoopデータ解析基盤の構築と運用
内製パッケージによるHadoopデータ解析基盤の構築と運用内製パッケージによるHadoopデータ解析基盤の構築と運用
内製パッケージによるHadoopデータ解析基盤の構築と運用
 
Apache Spark 1000 nodes NTT DATA
Apache Spark 1000 nodes NTT DATAApache Spark 1000 nodes NTT DATA
Apache Spark 1000 nodes NTT DATA
 
NoOpsへ舵を切れ
NoOpsへ舵を切れNoOpsへ舵を切れ
NoOpsへ舵を切れ
 
20180319 ccon sync kintone
20180319 ccon sync kintone20180319 ccon sync kintone
20180319 ccon sync kintone
 
Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)
Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)
Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)
 
グリー株式会社『私たちが GCP を使い始めた本当の理由』第 9 回 Google Cloud INSIDE Game & Apps
グリー株式会社『私たちが GCP を使い始めた本当の理由』第 9 回 Google Cloud INSIDE Game & Appsグリー株式会社『私たちが GCP を使い始めた本当の理由』第 9 回 Google Cloud INSIDE Game & Apps
グリー株式会社『私たちが GCP を使い始めた本当の理由』第 9 回 Google Cloud INSIDE Game & Apps
 
私たちがGCPを使い始めた本当の理由
私たちがGCPを使い始めた本当の理由私たちがGCPを使い始めた本当の理由
私たちがGCPを使い始めた本当の理由
 
Apache spark 2.3 and beyond
Apache spark 2.3 and beyondApache spark 2.3 and beyond
Apache spark 2.3 and beyond
 
C27 基幹領域への適用におけるpostgre sqlの抱える課題 by 原嘉彦
C27 基幹領域への適用におけるpostgre sqlの抱える課題 by 原嘉彦C27 基幹領域への適用におけるpostgre sqlの抱える課題 by 原嘉彦
C27 基幹領域への適用におけるpostgre sqlの抱える課題 by 原嘉彦
 

More from NTT DATA Technology & Innovation

More from NTT DATA Technology & Innovation (20)

NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
 
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
 
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方
 
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...
 
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)
 
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
 
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
 
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
 
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
 
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
 
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
 
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
 
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
 
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
 
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
 
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...
 
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
 
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
 
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
 

Recently uploaded

Recently uploaded (11)

Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 

Apache Spark 2.4 and 3.0 What's Next?

  • 1. © 2019 NTT DATA Corporation 2019/03/19 株式会社NTTデータ 技術開発本部 猿田 浩輔 Apache Spark 2.4 and 3.0 - What's Next? -
  • 2. © 2019 NTT DATA Corporation 2  猿田 浩輔  株式会社NTTデータ 技術開発本部  Apache Sparkコミッタ (2015年から)  Hadoop/SparkなどOSS並列分散処理系のテクニカルサ ポートに従事してきた  最近はPersistent Memoryなど新しいトレンドのハードウェア の活用に興味 $ whoami
  • 3. © 2019 NTT DATA Corporation 3  オープンソースの並列分散処理系  並列分散処理の面倒な部分は処理系が解決してくれる  障害時のリカバリ  タスクの分割やスケジューリング  etc What is Apache ? 大量のデータを たくさんのサーバを並べて 並列分散処理し、 現実的な時間(数分~数時間)で 目的の処理結果を得る
  • 4. © 2019 NTT DATA Corporation 4 Unified Analytics Engine Spark Core (Sparkのデータ処理エンジンや基本的なAPIなどを含む) Spark Streaming (ストリーム処理) Spark SQL (クエリ処理) Structured Streaming (ストリーム処理) GraphX (グラフ処理) MLlib / Spark ML (機械学習) SQL
  • 5. © 2019 NTT DATA Corporation 5  近年はSpark SQLを中心とした処理系になってきており、パフォー マンスや利便性が良くなった  宣言的なAPIやSQL/HiveQLで処理が書ける  オプティマイザによる最適化の恩恵が受けられる  開発言語による性能差が出にくい  機械学習、ストリーム処理向けのライブラリも、Spark SQLのデー タ構造であるDataFrame / Datasetをベースとしたものが整備され てきた  MLlib (spark.mlパッケージ)  Structured Streaming RDDからDataFrame / Datasetを中心とした処理系へ // 宣言的なAPIでクエリを記述する例 // DataFrame (テーブル上のデータ構造)にParquetフォーマットのファイルをロード val df = spark.read.parquet(“/path/to/file”) // 港区在住の人の平均給与を求めるクエリ df.select($”salary”).where($”residence” === “港区”).avg()
  • 6. © 2019 NTT DATA Corporation 6  Kubernetesサポート (Spark 2.4 / 3.0)  Project Hydrogen  Barrier Execution Mode (Spark 2.4)  Accelerator Aware Scheduling (Spark 3.0)  Spark Graph (Spark 3.0) 本日主にご紹介する新機能
  • 7. © 2019 NTT DATA Corporation 7 Kubernetesサポート
  • 8. © 2019 NTT DATA Corporation 8  Spark 2.3(ひとつ前のフィーチャーリリース)からKubernetes がサポートされた  2.3では機能不足だったSparkも徐々に完成度を上げている Spark on Kubernetes Spark Core (Sparkのデータ処理エンジンや基本的なAPIなどを含む) Spark Streaming (ストリーム処理ラ イブラリ) Spark SQL (クエリでデータ処理を記述する ためのライブラリ) Structured Streaming (ストリーム処理ラ イブラリ) GraphX (グラフ処理処理ラ イブラリ) MLlib / Spark ML (機械学習ライブラリ) YARN Standalone Mesos Kubernetes
  • 9. © 2019 NTT DATA Corporation 9  Spark 2.4  サポートする開発言語の強化 • PySpark対応(SPARK-23984) • SparkR対応(SPARK-24433)  クライアントモードでの動作(SPARK-23146) • インタラクティブシェルやノートブックと組み合わせて利用できるように なった  Spark 3.0  Kerberosサポート(SPARK-23257) 大体完了 • KerberizedなHDFSやHBaseなどと連携が可能に  Driver/Executor Pod向けのユーザ定義テンプレート マージ済み • Kubernetesらしく、宣言的に設定できる(SPARK-24434)  ダイナミックリソースアロケーション(SPARK-24432) 3.0に向けて議論中  External Shuffle Service(SPARK-25299) 3.0に向けて議論中 Kubernetesサポート in Spark 2.4 and 3.0
  • 10. © 2019 NTT DATA Corporation 10 Project Hydrogen
  • 11. © 2019 NTT DATA Corporation 11  SparkにおけるAI(特にディープラーニング)を活用したユース ケースをカバーするためのサブプロジェクト  Sparkはこれまでもディープラーニングのユースケースで活用 されてきたが、浮き彫りになった弱点を強化する取り組み  大きく3つの取り組みから成り立っている Project Hydrogen Barrier Execution Mode Optimized Data Exchange Accelerator Aware Scheduling 2.4で基本部分が実装済み 3.0での導入を目標に開発 が進められている
  • 12. © 2019 NTT DATA Corporation 12  Sparkでは、ユーザが記述した処理から「ステージ」や「タス ク」と呼ばれる処理単位が生成される  複数のExecutorが異なるタスクを処理することでクラスタ全 体で分散処理が行われる Sparkの処理単位(おさらい) タスク タスク タスク タスク タスク ステージ1 シャッフル ステージ2 シャッフル ステージ3 タスク タスク タスク タスク
  • 13. © 2019 NTT DATA Corporation 13  Executorへのタスクの割り当ては、Sparkのスケジューラが 決定する  ステージ間は依存関係になっており、先行するステージのタ スクがすべて完了すると後続のステージのスケジューリング が始まる タスクのスケジューリング(おさらい) タスク タスク タスク タスク タスク ステージ1 シャッフル ステージ2 シャッフル ステージ3 タスク タスク タスク タスク ステージ1のタスクがすべて完了したら、 ステージ2のタスクのスケジューリングが始まる
  • 14. © 2019 NTT DATA Corporation 14  従来からのタスクスケジューリングは、データローカリティや Executorの空コア数などに基づいて行われる  コアを遊ばせないようにタスクがスケジューリングされる  同じステージに含まれるタスクが一斉にスケジューリン グされるとは限らない  あるタスクが失敗した場合、当該タスクのみリトライされる  ステージ内の他のタスクは影響を受けない タスクのスケジューリング(おさらい) タスク タスク タスク 進行中のタスク スケジューリング 待ちのタスク タスク タスク タスク × 完了 完了 リトライが必要なのは 失敗したタスクだけ
  • 15. © 2019 NTT DATA Corporation 15  従来のスケジューリング方式は、各タスクが独立に動作する 前提になっており、分散ディープラーニングなどで必要とされ る、複数のタスクの協調動作の実現が難しい  協調動作が必要なタスクを同時にスケジューリング  協調動作が必要なタスクのいずれかが失敗したら、他の タスクもまとめて再スケジューリング  スケジューリングのほかに、タスク間で同期する仕組み もない 分散ディープラーニングにおける従来のスケジューリングの課題 タスク タスク タスク 進行中のタスク スケジューリング 待ちのタスク タスク タスク タスク × 完了 完了 リトライが必要なのは 失敗したタスクだけ
  • 16. © 2019 NTT DATA Corporation 16  Barrier Execution Modeは複数のタスクの協調動作を可能 にする、新しいスケジューリング方式  協調動作が必要なタスクが同時にExecutorに、をまとめ てスケジューリング可能 • Executorのコアに空があっても、同時に動作が必要 なタスク数に満たなければスケジューリングしない  協調動作が必要なタスクのいずれかが失敗した場合は、 同じステージのすべてのタスクをリトライ  タスク間での同期のメカニズムも実装されている  従来のスケジューリング方式と組み合わせて利用可能 Barrier Execution Mode
  • 17. © 2019 NTT DATA Corporation 17  RDD#barrierメソッドで、Barrier Execution Modeでのスケ ジューリング対象を設定できる  BarrierTaskContext#barrierメソッドで、タスク間の同期点を設定で きる  具体的な通信処理ロジックなどはDLフレームワーク側やDL アプリケーション開発者が実装する必要がある  Barrier Execution Modeは協調を可能にする仕掛けを提供 するだけ Barrier Execution Mode rdd.barrier().mapPartitions() { iter => val context = BarrierTaskContext.get() // バリアタスクコンテキストを取得 <何か処理> context.barrier() // ここでタスク間の待ち合わせ
  • 18. © 2019 NTT DATA Corporation 18  3.0への導入に向けて、Project Hydrogenの中では最近議 論が活発  Standalone / YARN / Kubernetes向けに導入が検討されて いる  Hadoop 3.1.2からYARNがGPUをサポート(管理し、払 い出す対象のリソースとして認識)。  クラスタマネージャの機能と連携しながら、Spark側のスケ ジューラもアクセラレータリソースが払い出されたExecutorへ のタスクのスケジューリングを行う  例えば、どのExecutor上でどのくらいのアクセラレータが 利用できるかで、タスクのスケジューリングを制御する必 要がある  3.0ではGPU向けの機能が実装される見込み Accelerator Aware Scheduling
  • 19. © 2019 NTT DATA Corporation 19 Spark Graph
  • 20. © 2019 NTT DATA Corporation 20  これまでもSpark向けに様々なグラフ処理ライブラリがあった  GraphX  GraphFrames  Spark GraphはGraphXやGraph Frameの課題を解決する 新しいグラフ処理ライブラリ  3.0への導入に向けて議論が進められている Spark向けのグラフ処理ライブラリ
  • 21. © 2019 NTT DATA Corporation 21  GraphX  RDDベース  Scala APIしか提供されていない  あまりメンテナンスされていない  GraphFrames  DataFrameベース  SparkPackagesで提供されるサードパーティパッケージ  エッジやノードのセマンティクスが弱く、単純なグラフマッ チングしか行えない 従来のSpark向けのグラフライブラリの問題点
  • 22. © 2019 NTT DATA Corporation 22  GraphFramesではノード集合やエッジ集合をDataFrameで表現する  各レコードがノードやエッジに対応する  DataFrameのレコードとして表現されるため、ノードやエッジに属性 が付与できる  ただし、ノードやエッジそのものに「型」は定義できない GraphFramesのデータモデル 太郎 次郎 東京 NYC 姉妹都市 居住 兄弟 居住 駐在経験 • 右のグラフで緑のノードは場所 を表し、水色のノードは人を表 す(型が違う)。 • エッジについても色ごとに種類 が異なる。 • GraphFramesではエッジやノード の「型」を設定できないため、種 類の違いを区別できない
  • 23. © 2019 NTT DATA Corporation 23  GraphFramesではMotifsと呼ばれる簡易的なクエリでグラフマッチングが 行える  ただし、エッジやノードに型が定義できないため、形状に基づくマッチング しか行えない  属性(例えばノードに関連付けられた人の名前など)を考慮したマッチング もサポートされていない  Motifsでマッチした結果はDataFrameとして得られるので、複雑なマッチ ングを行う場合はDataFrameのオペレーションと併用する GraphFramesのグラフマッチング val motifs = g.find(“(node1)-[edge]->(node2)”) val filtered = motifs.filter(“edge.rel = ‘居住’”) 例えば、先述のグラフで居住者と居住地を表す部分グラフを抽出したい場合 は、Motifsでマッチングした後にエッジに付与された属性が「居住」であるもの をフィルタするひつようがある。
  • 24. © 2019 NTT DATA Corporation 24  Property Graphと呼ばれるデータモデルを扱う  エッジやノードに「属性」だけでなく「型」が設定できる  Cypherによるグラフマッチングが可能  Property Graphに対して、型や属性に基づくマッチングが可能  マッチしたエッジやノードだけでなく、付与された属性もDataFrameとして 返却可能 Spark Graph val result: CypherResult = graph.cypher( """|MATCH (person: 人)-[rel: 居住]->(loc: 都市) """|RETURN person.name, loc.name""").stripMargin result.df.show() | person.name | loc.name | | 太郎 | 東京 | | 次郎 | 東京 | Property Graphに対するCypherの適用例
  • 25. © 2019 NTT DATA Corporation 25 その他のトピック
  • 26. © 2019 NTT DATA Corporation 26  Pandas UDFの強化(ユーザ定義集約関数やWindow関数が定義 できるようになった)  ビルトイン関数/高階関数の拡充  2.4では、主に配列やマップなど、複雑なデータ型を対象とし た29個のビルトイン関数を追加  3.0でもマップ向けの高階関数が追加される見通し  サポートするデータソースの追加(Avro, 画像ファイル)  Structured StreamingへForeachBatchシンクの追加  レコード単位ではなく、DataFrame単位でのオペレーションが 記述できる(Spark StreamingのforeachRDDと似ている)  複数のデータストアへの出力などに使える ほかにもまだまだ・・・ in Spark 2.4
  • 27. © 2019 NTT DATA Corporation 27  Java11サポート  既にmasterブランチ/3.0ブランチにはマージ済み  Scala 2.12サポート  Spark 2.4からすでにScala 2.12が利用できるが、Spark 3.0 ではScala 2.12がデフォルトになる予定  Hadoop 3系サポート  Sparkが依存しているHiveのバージョンも上げなければならな い  依存するHiveのバージョンを1.2.1から2.3.4にアップグレード ほかにもまだまだ・・・ in Spark 3.0
  • 28. © 2019 NTT DATA Corporation

Editor's Notes

  1. みなさん、こんばんは。 今日私からは、Apache Sparkの現時点での最新フィーチャーリリースである2.4と、 そして今年リリースが期待される3.0の新機能をいくつかご紹介したいと思います。