SlideShare a Scribd company logo
NTTデータ テクノロジーカンファレンス 2020
© 2020 NTT DATA Corporation
分析志向データレイク実現の次の一手
〜Delta Lake、なにそれおいしいの?〜
2020年10月16日
株式会社NTTデータ システム技術本部 デジタル技術部
シニアIT/R&Dスペシャリスト 梅森 直人
2
© 2020 NTT DATA Corporation
【質問】「Delta Lake」とはナニモノか?
初耳です、なにそれおいしいの?
名前を聞いたことがあります
動かしたことがあります or 動かしています
中の人です
A
B
D
C
3
© 2020 NTT DATA Corporation
この講演の対象者は以下の方々です
初耳です、なにそれおいしいの?
名前を聞いたことがあります
動かしたことがあります or 動かしています
中の人です
A
B
C
D
4
© 2020 NTT DATA Corporation
このセッションでお伝えしたいこと
1
2
Delta Lake の概要と基本的な使い方について
データ活用基盤アーキテクチャの例を通じてご紹介します
Delta Lake を動かしたときの特徴の一部をご紹介します
© 2020 NTT DATA Corporation
Delta Lake とは
A
B
C
このセクションの主な対象者
初耳です、なにそれおいしいの?
名前を聞いたことがあります
動かしたことがあります or 動かしています
中の人です
D
6
© 2020 NTT DATA Corporation
はじめに - データを永続的に扱うストレージ(データレイク*)の課題
当講演『NTTデータが考えるデータ基盤の次の一手~AI活用のために知っておくべき新潮流とは?~』より引用
注* この講演でデータレイクは、「データを永続的に扱う分散ストレージ」のことを表します
こちらを深堀り
7
© 2020 NTT DATA Corporation
分散ストレージに向けられる期待を体系化
データ操作、処理 データ操作の補助 非機能
多様なデータ 多様なライブラリ、
入出力手法
多様なストレージの活用
再現性、説明可能性担保
コラボレーション
品質管理
特徴把握
スケーラビリティ
可用性
運用保守性
移行性
セキュリティ
OK
スケーラブルであることは前提
多様性、柔軟性、安心を支える特徴が求められている
8
© 2020 NTT DATA Corporation
分散ストレージ高度化のアプローチ
大まかに、以下の3種類のアプローチがある
1
2
3
アプリケーション側、処理エンジン側を工夫する
ストレージを上手く使う技術を追加して工夫する
ストレージ側を工夫する
9
© 2020 NTT DATA Corporation
分散ストレージ高度化のアプローチ
ストレージを上手く使う技術、それが「ストレージレイヤソフトウェア」
1
2
3
アプリケーション側、処理エンジン側を工夫する
ストレージを上手く使う技術を追加して工夫する
ストレージ側を工夫する
⇒ ストレージレイヤソフトウェア
10
© 2020 NTT DATA Corporation
ストレージを上手く使う技術の一例
ストレージ
( 分 散 フ ァ イ ル シ ス テ ム 、 オブジェクトストレージ 等 )
ストレージレイヤソフトウェア
アプリケーション、処理ライブラリ
論理的なデータセットやテーブル
便利な特徴を提供 読み書き
素朴な機能を提供 データの実体や管理情報を読み書き
論理的なデータセットやテーブルに読
み書きすることで、便利な機能を使い
つつ透過的にストレージに読み書き
下回りにスケーラブルな
基盤を利用可能
11
© 2020 NTT DATA Corporation
論理的なテーブル (Delta Table) 物理的なファイル、データ配置
Delta Lake の基本的な使い方 - 「論理的なテーブル操作」とは
Delta table に対してCRUD操作を行うこと
例えば、Delta Lake を介することで、論理的なテーブルの更新ができる
アプリケーション
id fruit price …
1 apple 100 …
2 orange 50 …
3 pineapple 500 …
id fruit price …
1 apple 100 …
2 orange 50 …
3 pineapple 400 …
1 2 3
データの実体を保存するファイル群
メタデータを保存するファイル群
(delta log)
Update
“Remove” : 3
“Add” : 3’
1 2 3’
3
Read
(アニメーション有)
12
© 2020 NTT DATA Corporation
Delta Lake を利用したデータ活用基盤のアーキテクチャ例
ストレージ
ストレージレイヤ
ソフトウェア
データ投入
Amazon Kinesis
Amazon S3
処理エンジン
Azure
Data Lake Storage
BI
ツール
機械学習
入力
・ストリーム
・バッチ
データ格納・管理 データ読み出し
データ要求
データ提供
外部
システム
たとえば、SparkからDelta Lakeを利用して
データの保存はHDFSなどのデータレイク上で行う、等ができる
13
© 2020 NTT DATA Corporation
Delta Lake のうまみ
Realtime
Historical
データソース
バッチ
ストリーム
機械学習
分析(BIツール)
データ連携
接続
API
更新
スキャン
ACIDトランザクション書き込み
一貫性のある効率的なスキャン
データ品質のコントロールが可能
過去のデータを再現可能
ストリーム処理とバッチ処理の統合
格納データ量に影響されにくい高いパフォーマンス
他製品と組み合わせて
様々なデータソースとの連携/加工/分析が可能
Delta Lakeは、楽観ロックに基づく排他制御を提供するのが特長
既存の分散ストレージが不得手なトランザクション管理が可能になる
14
© 2020 NTT DATA Corporation
【回答】「Delta Lake」とはナニモノか?
初耳です、なにそれおいしいの?
名前を聞いたことがあります
動かしたことがあります or 動かしています
中の人です
A
B
D
C
(アンケート回答表示予定)
© 2020 NTT DATA Corporation
ベンチマークからポイントをご紹介
C
初耳です、なにそれおいしいの?
名前を聞いたことがあります
動かしたことがあります or 動かしています
中の人です
このセクションの主な対象者
D
A
B
16
© 2020 NTT DATA Corporation
Delta Lake ベンチマーク概要
名称 版 備考
Delta Lake 0.7.0
Apache Spark 3.0.0
Apache Ambari 2.7.4
Apache Hadoop 3.1.1
TPC-DSデータジェネレータ
spark-tpcds-datagen
(0b1df3f)
https://github.com/maropu/
spark-tpcds-datagen
OpenJDK 1.8.0 Java-1.8.0-openjdk-devel
Python 3.6
CentOS x86_64 7.7 2002_01
AWS EC2 インスタンス 用途 台数
m5.xlarge Hadoop Master Node 3
m5.8xlarge Hadoop Slave Node 3
t2.large Hadoop Client 1
ベンチマークで扱うデータは、Spark対応のTPC-DSデータジェネレータで生成
Delta Lake の基本特性を知るためのベンチマークを実施
構成情報 ベンチマーク用データ
• 『Store Sales テーブル』データ↑
• データ増幅はジェネレータのscale-factorを利用
Delta Lake に対するデータR/W
ローカルファイルシステム
HDFS
Delta Lake
Store
Sales
spark-
tpcds-
datagen
自前
APP
生成
事前に
ロード
自前
APP
ローカルファイルシステム
HDFS
Delta Lake
SS
■データ書込
■データ読込
Datatype カラム数
identifier 10
int 1
decimal(7, 2) 12
17
© 2020 NTT DATA Corporation
Delta Lake ベンチマーク概要
名称 版 備考
Delta Lake 0.7.0
Apache Spark 3.0.0
Apache Ambari 2.7.4
Apache Hadoop 3.1.1
TPC-DSデータジェネレータ
spark-tpcds-datagen
(0b1df3f)
https://github.com/maropu/
spark-tpcds-datagen
OpenJDK 1.8.0 Java-1.8.0-openjdk-devel
Python 3.6
CentOS x86_64 7.7 2002_01
AWS EC2 インスタンス 用途 台数
m5.xlarge Hadoop Master Node 3
m5.8xlarge Hadoop Slave Node 3
t2.large Hadoop Client 1
ベンチマークで扱うデータは、Spark対応のTPC-DSデータジェネレータで生成
Delta Lake の基本特性を知るためのベンチマークを実施
構成情報 ベンチマーク用データ
• 『Store Sales テーブル』データ↑
• データ増幅はジェネレータのscale-factorを利用
Delta Lake に対するデータR/W
ローカルファイルシステム
HDFS
Delta Lake
Store
Sales
spark-
tpcds-
datagen
自前
APP
生成
事前に
ロード
自前
APP
ローカルファイルシステム
HDFS
Delta Lake
SS
■データ書込
■データ読込
1: Read 性能
Datatype カラム数
identifier 10
int 1
decimal(7, 2) 12
2: Upsert* 性能
* データがあれば Update, なければ Insert
18
© 2020 NTT DATA Corporation
HDFS
Delta Lake
SS
HDFS
Delta Lake
SS
1: Read – ベンチマーク概要
HDFS内に配置されたデータを
Delta Lake経由で読む場合と、HDFS直読みの場合の実行時間を比較
自前
APP
ローカルファイルシステム
自前
APP
ローカルファイルシステム
vs.
• Read対象のデータ量に応じてRead実行時間がどのように変化するかを観測する
→ 0.2GB, 1.8GB, 18.1GB, 184.5GB, 346.0GB
• Delta Lake経由でデータを読む場合と、HDFS直読みの2パターンを実施する
Read対象のデータ量を変えると
実行時間はどう変化するか?
19
© 2020 NTT DATA Corporation
1: Read – ベンチマーク結果
0
10
20
30
40
50
60
70
80
90
0.2 1.8 18.1 184.5 346.0
実行時間
[秒]
読込データサイズ [GiB]
Read 実行時間
HDFS 直読み Delta Lake 介在
注: この区間は2倍差
実行時間差は30秒未満
• 実行時間差は30秒未満だが、ユースケースによって影
響度が異なるので注意が必要。
• Delta Lakeを介してのRead時はdelta logファイルの
読み込みを行い、その部分がフットプリントになっている。
0
10
1
11
2
12
3
13
4
14
5
15
6 7 8 9
0 1 2 3 4 5 6 7 8 9
チェックポイント
データの実体を保存するファイル (parquet)
メタデータ保存ファイル[delta log] (json)
APP
20
© 2020 NTT DATA Corporation
2: Upsert – ベンチマーク概要
HDFS内に配置されたデータに対して
(Upsert)更新/挿入操作した場合の実行時間を比較
自前
APP
ローカルファイルシステム
『データ活用基盤を使うほどにデータは溜まっていくけど、5年近く経った今も、更新処理を走らせても大丈夫?』
→ (言い換えると) HDFS内の保存データ量が増えた場合の更新/挿入処理の実行時間はどうなるか?
「元々HDFS内に保存されている」
データ量を変えると
実行時間はどう変化するか?
想定シーン
ベンチマーク概要
• Delta Lakeを介してHDFSに入れるデータ量は一定
‣ 更新対象データ
‣ 挿入対象データ
更新対象
Store Sales
spark-
tpcds-
datagen
生成
事前に
ロード
挿入対象
Store Sales HDFS
Delta Lake
SS
• HDFS内の保存データ量を増やす
→ 0.2GB, 1.8GB, 18.1GB, 184.5GB, 346.0GB
総データ量は一定
21
© 2020 NTT DATA Corporation
2: Upsert – ベンチマーク概要
与えるデータの更新/挿入の割合 の影響
最適化オプション* による影響
パターンA
パターンB
* merge.optimizeInsertOnlyMerge.enabled および merge.optimizeMatchedOnlyMerge.enabled
「元々HDFS内に保存されている」データ量を変えると
実行時間はどう変化するか?
22
© 2020 NTT DATA Corporation
2: Upsert – ベンチマーク概要
与えるデータの更新/挿入の割合 の影響
最適化オプション* による影響
パターンA
パターンB
* merge.optimizeInsertOnlyMerge.enabled および merge.optimizeMatchedOnlyMerge.enabled
「元々HDFS内に保存されている」データ量を変えると
実行時間はどう変化するか?
23
© 2020 NTT DATA Corporation
2: Upsert – ベンチマーク
パターン.A: 与えるデータの更新/挿入の割合の影響
与えるデータの更新、挿入の割合が変わると実行時間は変化するか?
自前
APP
ローカルファイルシステム
更新対象
Store Sales
spark-
tpcds-
datagen
生成
事前に
ロード
挿入対象
Store Sales HDFS
Delta Lake
SS
データパターン 更新対象SS 挿入対象SS
1. Update 30,000 レコード 0
2. Insert 0 30,000
3. Half & Half 15,000 15,000
データ量
0.2GB, 1.8GB, 18.1GB, 184.5GB, 346.0GB
Upsert
②HDFS内の保存データ量:5 通り
①データの与え方:3 通り
24
© 2020 NTT DATA Corporation
2: Upsert – ベンチマーク結果
パターン.A: 与えるデータの更新/挿入の割合の影響 – 結果
1.0
10.0
100.0
0.2 1.8 18.1 184.5 346.0
実行時間
[分]
更新データサイズ [GiB]
Upsert
Insert
(Insert:Update=100:0)
Half & Half
(Insert:Update=50:50)
Update
(Insert:Update=0:100)
更新対象データの割合 を 変えても
実行時間が変わらない こともある
Point
Insert
Update
Half & Half
更新対象となるデータの割合が実行時間の支配項、というわけではない
・・・なぜか?
(アニメーション有)
25
© 2020 NTT DATA Corporation
なぜ実行時間が同じになったのか?[考察]
全データに対する更新対象となるデータの単純な割合ではなく
マージ対象データが含まれるファイルがデータストア中に何個存在するかがポイント
• Delta Lake では、Update/Delete等レコードを更新する際、そのレコードを含むParquetFileをまるごと書き直す。
• 逆に、更新対象のレコードを含まないParquetFileは書き直されない。
0.parquet 1.parquet 2.parquet 3.parquet 0.parquet 1.parquet 2.parquet 3.parquet
Update Update Update Update Update Update
処理
時間
データ
量
更新対象データ
0’.parquet 1’.parquet 2’.parquet 3’.parquet 0’.parquet 3’.parquet
1.parquet 2.parquet
26
© 2020 NTT DATA Corporation
なぜ実行時間が同じになったのか?[考察]
テーブルや更新データの状態によって処理時間が変化するケースがある
状態を予想しきれない場合は、最悪値で処理時間を見積もっておくのが安全
• Delta Lake では、Update/Delete等レコードを更新する際、そのレコードを含むParquetFileをまるごと書き直す。
• 逆に、更新対象のレコードを含まないParquetFileは書き直されない。
0.parquet 1.parquet 2.parquet 3.parquet 0.parquet 1.parquet 2.parquet 3.parquet
Update Update Update Update Update Update
処理
時間
データ
量
更新対象データ
0’.parquet 1’.parquet 2’.parquet 3’.parquet 0’.parquet 3’.parquet
1.parquet 2.parquet
27
© 2020 NTT DATA Corporation
2: Upsert – ベンチマーク概要
与えるデータの更新/挿入の割合 の影響
最適化オプション* による影響
パターンA
パターンB
* merge.optimizeInsertOnlyMerge.enabled および merge.optimizeMatchedOnlyMerge.enabled
「元々HDFS内に保存されている」データ量を変えると
実行時間はどう変化するか?
28
© 2020 NTT DATA Corporation
2: Upsert – ベンチマーク
パターン.B: 最適化オプションによる影響
最適化オプションの有無で実行時間は変化するか?
自前
APP
ローカルファイルシステム
更新対象
Store Sales
spark-
tpcds-
datagen
生成
事前に
ロード
挿入対象
Store Sales HDFS
Delta Lake
SS
Upsert
①データの与え方:4 通り
③最適化オプション:2 通り
データパターン 更新対象SS 挿入対象SS
1. Update-1 30,000 レコード 0
2. Update-2 3,000,000 0
3. Insert-1 0 30,000
4. Insert-2 0 3,000,000
更新:merge.optimizeMatchedOnlyMerge.enabled
挿入:merge.optimizeInsertOnlyMerge.enabled
データ量
0.2GB, 1.8GB, 18.1GB, 184.5GB, 346.0GB
②HDFS内の保存データ量:5 通り
(アニメーション有)
29
© 2020 NTT DATA Corporation
2: Upsert – ベンチマーク結果
パターン.B: 最適化オプションによる影響
1.0
10.0
0.2 1.8 18.1 184.5 346.0
実行時間
[分]
更新データサイズ [GiB]
Upsert (Insert : Update = 100 : 0), Σ(Records)=3M
Insert w/ Optimization Insert w/o Optimization
1.0
10.0
100.0
0.2 1.8 18.1 184.5 346.0
実行時間
[分]
更新データサイズ [GiB]
Upsert (Insert : Update = 0 : 100), Σ(Records)=3M
Update w/ Optimization Update w/o Optimization
注: この区間は2倍差 注: この区間は2倍差
配置するデータ件数が300万(レコード)の場合、
『Insert』のケースで最適化オプション有で実行速度が短縮
『最適化オプション有』の方が速い 『最適化オプション』有無で性能差なし
30
© 2020 NTT DATA Corporation
2: Upsert – ベンチマーク結果
パターン.B: 最適化オプションによる影響
1.0
10.0
0.2 1.8 18.1 184.5 346.0
実行時間
[分]
更新データサイズ [GiB]
Upsert (Insert : Update = 100 : 0), Σ(Records)=30K
Insert w/ Optimization Insert w/o Optimization
1.0
10.0
100.0
0.2 1.8 18.1 184.5 346.0
実行時間
[分]
更新データサイズ [GiB]
Upsert (Insert : Update = 0 : 100), Σ(Records)=30K
Update w/ Optimization Update w/o Optimization
注: この区間は2倍差 注: この区間は2倍差
『最適化オプション有』の方が速い
配置するデータ件数が3万(レコード)の場合、
最適化オプション有無で実行速度が改善したり、悪化したり。
『最適化オプション有』の方が 遅い
31
© 2020 NTT DATA Corporation
なぜそんなことが起きるのか?
更新対象ファイルのリスト生成・取得処理をスキップするまでは良いが
その後の全件データに対するシャッフル処理が遅くなった
Upsertフェーズ 最適化オプション有 最適化オプション無
1
更新対象ファイルの
リスト生成・取得処理
(Skip)
Upsertするデータ(レコード)件数が、
spark.sql.autoBroadcastJoinThreshold
よりも
2
ファイル更新処理
全件データ
に対する
SortMergeJoin
更新対象ファイル
に対する
SortMergeJoin
少ない 多い
BroadcastHashJoin SortMergeJoin
実質0件
32
© 2020 NTT DATA Corporation
なぜそんなことが起きるのか?
ストリーム処理併用などで細かなデータをUpsertする場合
データ流量から計算し、最適化オプション有無を選択する必要がある
Upsertフェーズ 最適化オプション有 最適化オプション無
1
更新対象ファイルの
リスト生成・取得処理
(Skip)
Upsertするデータ(レコード)件数が、
spark.sql.autoBroadcastJoinThreshold
よりも
2
ファイル更新処理
全件データ
に対する
SortMergeJoin
更新対象ファイル
に対する
SortMergeJoin
少ない 多い
BroadcastHashJoin SortMergeJoin
実質0件
33
© 2020 NTT DATA Corporation
まとめ
Delta Lake の基本とマイクロベンチマーク例についてご紹介しました
1
2
Delta Lake の概要と基本的な使い方についてデータ活用基盤アーキテクチャの例を
通じてご紹介します
⇒ Delta Lakeはストレージレイヤソフトウェアの1つ
⇒ 楽観ロックに基づく排他制御を提供し、従来の分散ストレージに
トランザクション管理の仕組みをもたらします
Delta Lake を動かしたときの特徴の一部をご紹介します
⇒ Read, Upsertの実行例とDelta Lake利用の注意点をご紹介
⇒ Delta Lakeの設定変更の際は Sparkへの影響を要考慮
© 2020 NTT DATA Corporation
免責事項
• 当資料に記載されているデータは、独自の検証環境で取得した2020年10月時点での一参考値です。コンテンツ等の内容に関して記載時に最新の注意を払っておりま
すが、当社はその正確性、有用性、確実性その他いかなる保証もするものではありません。コンテンツ等のご利用により万が一何らかの損害が発生したとしても、当社が一
切責任を負うものではありません。また、当資料に記載されている事項を予告なしに変更または中止することがありますのでご了承ください。
• その他、記載されている会社名、商品名、又はサービス名は、各社の登録商標又は商標です。

More Related Content

PPTX
大規模データ活用向けストレージレイヤソフトのこれまでとこれから(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
NTT DATA Technology & Innovation
 
PDF
[Cloud OnAir] BigQuery の仕組みからベストプラクティスまでのご紹介 2018年9月6日 放送
Google Cloud Platform - Japan
 
PDF
Data platformdesign
Ryoma Nagata
 
PDF
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
NTT DATA Technology & Innovation
 
PDF
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
NTT DATA OSS Professional Services
 
PDF
ビッグデータ処理データベースの全体像と使い分け
Recruit Technologies
 
PDF
[Cloud OnAir] Bigtable に迫る!基本機能も含めユースケースまで丸ごと紹介 2018年8月30日 放送
Google Cloud Platform - Japan
 
PDF
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
NTT DATA Technology & Innovation
 
大規模データ活用向けストレージレイヤソフトのこれまでとこれから(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
NTT DATA Technology & Innovation
 
[Cloud OnAir] BigQuery の仕組みからベストプラクティスまでのご紹介 2018年9月6日 放送
Google Cloud Platform - Japan
 
Data platformdesign
Ryoma Nagata
 
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
NTT DATA Technology & Innovation
 
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
NTT DATA OSS Professional Services
 
ビッグデータ処理データベースの全体像と使い分け
Recruit Technologies
 
[Cloud OnAir] Bigtable に迫る!基本機能も含めユースケースまで丸ごと紹介 2018年8月30日 放送
Google Cloud Platform - Japan
 
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
NTT DATA Technology & Innovation
 

What's hot (20)

PDF
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
Noritaka Sekiyama
 
PDF
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
NTT DATA OSS Professional Services
 
PDF
Azure Synapse Analytics 専用SQL Poolベストプラクティス
Microsoft
 
PPTX
NTTデータが考えるデータ基盤の次の一手 ~AI活用のために知っておくべき新潮流とは?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
NTT DATA Technology & Innovation
 
PDF
3分でわかるAzureでのService Principal
Toru Makabe
 
PPTX
大量のデータ処理や分析に使えるOSS Apache Spark入門(Open Source Conference 2021 Online/Kyoto 発表資料)
NTT DATA Technology & Innovation
 
PDF
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)
NTT DATA Technology & Innovation
 
PPTX
機械学習の定番プラットフォームSparkの紹介
Cloudera Japan
 
PDF
データウェアハウスモデリング入門(ダイジェスト版)(事前公開版)
Satoshi Nagayasu
 
PPTX
ビッグデータ処理データベースの全体像と使い分け
2018年version
Tetsutaro Watanabe
 
PPTX
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
NTT DATA Technology & Innovation
 
PPTX
PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...
NTT DATA Technology & Innovation
 
PPTX
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
NTT DATA Technology & Innovation
 
PDF
Hadoop/Spark を使うなら Bigtop を使い熟そう! ~並列分散処理基盤のいま、から Bigtop の最近の取り組みまで一挙ご紹介~(Ope...
NTT DATA Technology & Innovation
 
PDF
BuildKitの概要と最近の機能
Kohei Tokunaga
 
PPTX
MLflowで学ぶMLOpsことはじめ
Kenichi Sonoda
 
PDF
Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)
NTT DATA Technology & Innovation
 
PPTX
大規模データ処理の定番OSS Hadoop / Spark 最新動向 - 2021秋 -(db tech showcase 2021 / ONLINE 発...
NTT DATA Technology & Innovation
 
PDF
HA環境構築のベスト・プラクティス
EnterpriseDB
 
PDF
Apache Spark の紹介(前半:Sparkのキホン)
NTT DATA OSS Professional Services
 
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
Noritaka Sekiyama
 
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
NTT DATA OSS Professional Services
 
Azure Synapse Analytics 専用SQL Poolベストプラクティス
Microsoft
 
NTTデータが考えるデータ基盤の次の一手 ~AI活用のために知っておくべき新潮流とは?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
NTT DATA Technology & Innovation
 
3分でわかるAzureでのService Principal
Toru Makabe
 
大量のデータ処理や分析に使えるOSS Apache Spark入門(Open Source Conference 2021 Online/Kyoto 発表資料)
NTT DATA Technology & Innovation
 
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)
NTT DATA Technology & Innovation
 
機械学習の定番プラットフォームSparkの紹介
Cloudera Japan
 
データウェアハウスモデリング入門(ダイジェスト版)(事前公開版)
Satoshi Nagayasu
 
ビッグデータ処理データベースの全体像と使い分け
2018年version
Tetsutaro Watanabe
 
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
NTT DATA Technology & Innovation
 
PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...
NTT DATA Technology & Innovation
 
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
NTT DATA Technology & Innovation
 
Hadoop/Spark を使うなら Bigtop を使い熟そう! ~並列分散処理基盤のいま、から Bigtop の最近の取り組みまで一挙ご紹介~(Ope...
NTT DATA Technology & Innovation
 
BuildKitの概要と最近の機能
Kohei Tokunaga
 
MLflowで学ぶMLOpsことはじめ
Kenichi Sonoda
 
Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)
NTT DATA Technology & Innovation
 
大規模データ処理の定番OSS Hadoop / Spark 最新動向 - 2021秋 -(db tech showcase 2021 / ONLINE 発...
NTT DATA Technology & Innovation
 
HA環境構築のベスト・プラクティス
EnterpriseDB
 
Apache Spark の紹介(前半:Sparkのキホン)
NTT DATA OSS Professional Services
 
Ad

Similar to 分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料) (20)

PDF
ビッグデータによる価値創造を実現するデータ収集・蓄積・分析クラウドサービス “簡単!賢く!データを活かす!”東芝データレイクサービスの取り組みのご紹介
griddb
 
PDF
Delta Lake with Synapse dataflow
Ryoma Nagata
 
PPTX
Delta lakesummary
Ryoma Nagata
 
PDF
NTT DATA と PostgreSQL が挑んだ総力戦
NTT DATA OSS Professional Services
 
PPTX
PostgreSQLモニタリング機能の現状とこれから(Open Developers Conference 2020 Online 発表資料)
NTT DATA Technology & Innovation
 
PDF
Apache Spark 1000 nodes NTT DATA
NTT DATA OSS Professional Services
 
PDF
perfを使ったPostgreSQLの解析(前編)
Daichi Egawa
 
PDF
クラウドDWHにおける観点とAzure Synapse Analyticsの対応
Ryoma Nagata
 
PPTX
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
NTT DATA Technology & Innovation
 
PDF
ビッグIoTデータに対応したデータベース GridDB
griddb
 
PPTX
大量のデータ処理や分析に使えるOSS Apache Spark入門 - Open Source Conference2020 Online/Fukuoka...
NTT DATA Technology & Innovation
 
PDF
[D36] Michael Stonebrakerが生み出した列指向データベースは何が凄いのか? ~Verticaを例に列指向データベースのアーキテクチャ...
Insight Technology, Inc.
 
PDF
Azure Antenna はじめての Azure Data Lake
Hideo Takagi
 
PPTX
ビッグデータ&データマネジメント展
Recruit Technologies
 
PPTX
Spark+AI Summit Europe 2019 セッションハイライト(Spark Meetup Tokyo #2 講演資料)
NTT DATA Technology & Innovation
 
PDF
perfを使ったpostgre sqlの解析(後編)
Daichi Egawa
 
PDF
SIGMOD'10勉強会 -Session 8-
Takeshi Yamamuro
 
PPTX
Azure Data Platform
Daiyu Hatakeyama
 
PDF
日々進化するHadoopの 「いま」
NTT DATA OSS Professional Services
 
PDF
Open Cloud Innovation2016 day1(これからのデータ分析者とエンジニアに必要なdatascienceexperienceツールと...
Atsushi Tsuchiya
 
ビッグデータによる価値創造を実現するデータ収集・蓄積・分析クラウドサービス “簡単!賢く!データを活かす!”東芝データレイクサービスの取り組みのご紹介
griddb
 
Delta Lake with Synapse dataflow
Ryoma Nagata
 
Delta lakesummary
Ryoma Nagata
 
NTT DATA と PostgreSQL が挑んだ総力戦
NTT DATA OSS Professional Services
 
PostgreSQLモニタリング機能の現状とこれから(Open Developers Conference 2020 Online 発表資料)
NTT DATA Technology & Innovation
 
Apache Spark 1000 nodes NTT DATA
NTT DATA OSS Professional Services
 
perfを使ったPostgreSQLの解析(前編)
Daichi Egawa
 
クラウドDWHにおける観点とAzure Synapse Analyticsの対応
Ryoma Nagata
 
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
NTT DATA Technology & Innovation
 
ビッグIoTデータに対応したデータベース GridDB
griddb
 
大量のデータ処理や分析に使えるOSS Apache Spark入門 - Open Source Conference2020 Online/Fukuoka...
NTT DATA Technology & Innovation
 
[D36] Michael Stonebrakerが生み出した列指向データベースは何が凄いのか? ~Verticaを例に列指向データベースのアーキテクチャ...
Insight Technology, Inc.
 
Azure Antenna はじめての Azure Data Lake
Hideo Takagi
 
ビッグデータ&データマネジメント展
Recruit Technologies
 
Spark+AI Summit Europe 2019 セッションハイライト(Spark Meetup Tokyo #2 講演資料)
NTT DATA Technology & Innovation
 
perfを使ったpostgre sqlの解析(後編)
Daichi Egawa
 
SIGMOD'10勉強会 -Session 8-
Takeshi Yamamuro
 
Azure Data Platform
Daiyu Hatakeyama
 
日々進化するHadoopの 「いま」
NTT DATA OSS Professional Services
 
Open Cloud Innovation2016 day1(これからのデータ分析者とエンジニアに必要なdatascienceexperienceツールと...
Atsushi Tsuchiya
 
Ad

More from NTT DATA Technology & Innovation (20)

PDF
PostgreSQL18新機能紹介(db tech showcase 2025 発表資料)
NTT DATA Technology & Innovation
 
PDF
PGConf.dev 2025 参加レポート (JPUG総会併設セミナー2025 発表資料)
NTT DATA Technology & Innovation
 
PDF
Can We Use Rust to Develop Extensions for PostgreSQL? (POSETTE: An Event for ...
NTT DATA Technology & Innovation
 
PDF
つくって壊して直して学ぶ Database on Kubernetes (CloudNative Days Summer 2025 発表資料)
NTT DATA Technology & Innovation
 
PDF
2025年現在のNewSQL (最強DB講義 #36 発表資料)
NTT DATA Technology & Innovation
 
PDF
Java in Japan: A Journey of Community, Culture, and Global Integration (JavaO...
NTT DATA Technology & Innovation
 
PDF
Unveiling the Hidden Layers of Java Class Files: Beyond Bytecode (Devnexus 2025)
NTT DATA Technology & Innovation
 
PDF
論理レプリケーションのアーキテクチャ (第52回 PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PDF
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
NTT DATA Technology & Innovation
 
PDF
Apache Sparkに対するKubernetesのNUMAノードを意識したリソース割り当ての性能効果 (Open Source Conference ...
NTT DATA Technology & Innovation
 
PDF
PostgreSQL最新動向 ~カラムナストアから生成AI連携まで~ (Open Source Conference 2025 Tokyo/Spring ...
NTT DATA Technology & Innovation
 
PDF
pgbenchのスレッドとクライアント (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PDF
PostgreSQLのgitレポジトリから見える2024年の開発状況 (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PDF
ストリーム処理はデータを失うから怖い?それ、何とかできますよ! 〜Apahe Kafkaを用いたストリーム処理における送達保証〜 (Open Source...
NTT DATA Technology & Innovation
 
PDF
生成AI時代のPostgreSQLハイブリッド検索 (第50回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PDF
DAIS2024参加報告 ~Spark中心にしらべてみた~ (JEDAI DAIS Recap 講演資料)
NTT DATA Technology & Innovation
 
PDF
PostgreSQLのHTAP適応について考える (PostgreSQL Conference Japan 2024 講演資料)
NTT DATA Technology & Innovation
 
PDF
静かに変わってきたクラスファイルを詳細に調べて楽しむ(JJUG CCC 2024 Fall講演資料)
NTT DATA Technology & Innovation
 
PDF
Gartnerも注目するグリーンソフトウェアの実現に向けて (Green Software Foundation Global Summit 2024 T...
NTT DATA Technology & Innovation
 
PDF
パーティションのATTACH時の注意ポイント (第49回PostgreSQLアンカンファレンス@東京 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQL18新機能紹介(db tech showcase 2025 発表資料)
NTT DATA Technology & Innovation
 
PGConf.dev 2025 参加レポート (JPUG総会併設セミナー2025 発表資料)
NTT DATA Technology & Innovation
 
Can We Use Rust to Develop Extensions for PostgreSQL? (POSETTE: An Event for ...
NTT DATA Technology & Innovation
 
つくって壊して直して学ぶ Database on Kubernetes (CloudNative Days Summer 2025 発表資料)
NTT DATA Technology & Innovation
 
2025年現在のNewSQL (最強DB講義 #36 発表資料)
NTT DATA Technology & Innovation
 
Java in Japan: A Journey of Community, Culture, and Global Integration (JavaO...
NTT DATA Technology & Innovation
 
Unveiling the Hidden Layers of Java Class Files: Beyond Bytecode (Devnexus 2025)
NTT DATA Technology & Innovation
 
論理レプリケーションのアーキテクチャ (第52回 PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
NTT DATA Technology & Innovation
 
Apache Sparkに対するKubernetesのNUMAノードを意識したリソース割り当ての性能効果 (Open Source Conference ...
NTT DATA Technology & Innovation
 
PostgreSQL最新動向 ~カラムナストアから生成AI連携まで~ (Open Source Conference 2025 Tokyo/Spring ...
NTT DATA Technology & Innovation
 
pgbenchのスレッドとクライアント (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQLのgitレポジトリから見える2024年の開発状況 (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
ストリーム処理はデータを失うから怖い?それ、何とかできますよ! 〜Apahe Kafkaを用いたストリーム処理における送達保証〜 (Open Source...
NTT DATA Technology & Innovation
 
生成AI時代のPostgreSQLハイブリッド検索 (第50回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
DAIS2024参加報告 ~Spark中心にしらべてみた~ (JEDAI DAIS Recap 講演資料)
NTT DATA Technology & Innovation
 
PostgreSQLのHTAP適応について考える (PostgreSQL Conference Japan 2024 講演資料)
NTT DATA Technology & Innovation
 
静かに変わってきたクラスファイルを詳細に調べて楽しむ(JJUG CCC 2024 Fall講演資料)
NTT DATA Technology & Innovation
 
Gartnerも注目するグリーンソフトウェアの実現に向けて (Green Software Foundation Global Summit 2024 T...
NTT DATA Technology & Innovation
 
パーティションのATTACH時の注意ポイント (第49回PostgreSQLアンカンファレンス@東京 発表資料)
NTT DATA Technology & Innovation
 

Recently uploaded (6)

PDF
20250729_Devin-for-Enterprise
Masaki Yamakawa
 
PDF
【学会聴講報告】CVPR2025からみるVision最先端トレンド / CVPR2025 report
Sony - Neural Network Libraries
 
PPTX
baserCMS『カスタムコンテンツ』徹底活用術〜あなただけの管理画面を自由自在に〜
Ryuji Egashira
 
PDF
20250730_QiitaBash_LT登壇資料_PDC_Kurashina.pdf
pdckurashina
 
PDF
TaketoFujikawa_ComicComputing12th_inKumamoto
Matsushita Laboratory
 
PDF
MahiroYoshida_セリフに着目したキャラクタロール推定に関する基礎検討_sigcc12th2025
Matsushita Laboratory
 
20250729_Devin-for-Enterprise
Masaki Yamakawa
 
【学会聴講報告】CVPR2025からみるVision最先端トレンド / CVPR2025 report
Sony - Neural Network Libraries
 
baserCMS『カスタムコンテンツ』徹底活用術〜あなただけの管理画面を自由自在に〜
Ryuji Egashira
 
20250730_QiitaBash_LT登壇資料_PDC_Kurashina.pdf
pdckurashina
 
TaketoFujikawa_ComicComputing12th_inKumamoto
Matsushita Laboratory
 
MahiroYoshida_セリフに着目したキャラクタロール推定に関する基礎検討_sigcc12th2025
Matsushita Laboratory
 

分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)

  • 1. NTTデータ テクノロジーカンファレンス 2020 © 2020 NTT DATA Corporation 分析志向データレイク実現の次の一手 〜Delta Lake、なにそれおいしいの?〜 2020年10月16日 株式会社NTTデータ システム技術本部 デジタル技術部 シニアIT/R&Dスペシャリスト 梅森 直人
  • 2. 2 © 2020 NTT DATA Corporation 【質問】「Delta Lake」とはナニモノか? 初耳です、なにそれおいしいの? 名前を聞いたことがあります 動かしたことがあります or 動かしています 中の人です A B D C
  • 3. 3 © 2020 NTT DATA Corporation この講演の対象者は以下の方々です 初耳です、なにそれおいしいの? 名前を聞いたことがあります 動かしたことがあります or 動かしています 中の人です A B C D
  • 4. 4 © 2020 NTT DATA Corporation このセッションでお伝えしたいこと 1 2 Delta Lake の概要と基本的な使い方について データ活用基盤アーキテクチャの例を通じてご紹介します Delta Lake を動かしたときの特徴の一部をご紹介します
  • 5. © 2020 NTT DATA Corporation Delta Lake とは A B C このセクションの主な対象者 初耳です、なにそれおいしいの? 名前を聞いたことがあります 動かしたことがあります or 動かしています 中の人です D
  • 6. 6 © 2020 NTT DATA Corporation はじめに - データを永続的に扱うストレージ(データレイク*)の課題 当講演『NTTデータが考えるデータ基盤の次の一手~AI活用のために知っておくべき新潮流とは?~』より引用 注* この講演でデータレイクは、「データを永続的に扱う分散ストレージ」のことを表します こちらを深堀り
  • 7. 7 © 2020 NTT DATA Corporation 分散ストレージに向けられる期待を体系化 データ操作、処理 データ操作の補助 非機能 多様なデータ 多様なライブラリ、 入出力手法 多様なストレージの活用 再現性、説明可能性担保 コラボレーション 品質管理 特徴把握 スケーラビリティ 可用性 運用保守性 移行性 セキュリティ OK スケーラブルであることは前提 多様性、柔軟性、安心を支える特徴が求められている
  • 8. 8 © 2020 NTT DATA Corporation 分散ストレージ高度化のアプローチ 大まかに、以下の3種類のアプローチがある 1 2 3 アプリケーション側、処理エンジン側を工夫する ストレージを上手く使う技術を追加して工夫する ストレージ側を工夫する
  • 9. 9 © 2020 NTT DATA Corporation 分散ストレージ高度化のアプローチ ストレージを上手く使う技術、それが「ストレージレイヤソフトウェア」 1 2 3 アプリケーション側、処理エンジン側を工夫する ストレージを上手く使う技術を追加して工夫する ストレージ側を工夫する ⇒ ストレージレイヤソフトウェア
  • 10. 10 © 2020 NTT DATA Corporation ストレージを上手く使う技術の一例 ストレージ ( 分 散 フ ァ イ ル シ ス テ ム 、 オブジェクトストレージ 等 ) ストレージレイヤソフトウェア アプリケーション、処理ライブラリ 論理的なデータセットやテーブル 便利な特徴を提供 読み書き 素朴な機能を提供 データの実体や管理情報を読み書き 論理的なデータセットやテーブルに読 み書きすることで、便利な機能を使い つつ透過的にストレージに読み書き 下回りにスケーラブルな 基盤を利用可能
  • 11. 11 © 2020 NTT DATA Corporation 論理的なテーブル (Delta Table) 物理的なファイル、データ配置 Delta Lake の基本的な使い方 - 「論理的なテーブル操作」とは Delta table に対してCRUD操作を行うこと 例えば、Delta Lake を介することで、論理的なテーブルの更新ができる アプリケーション id fruit price … 1 apple 100 … 2 orange 50 … 3 pineapple 500 … id fruit price … 1 apple 100 … 2 orange 50 … 3 pineapple 400 … 1 2 3 データの実体を保存するファイル群 メタデータを保存するファイル群 (delta log) Update “Remove” : 3 “Add” : 3’ 1 2 3’ 3 Read (アニメーション有)
  • 12. 12 © 2020 NTT DATA Corporation Delta Lake を利用したデータ活用基盤のアーキテクチャ例 ストレージ ストレージレイヤ ソフトウェア データ投入 Amazon Kinesis Amazon S3 処理エンジン Azure Data Lake Storage BI ツール 機械学習 入力 ・ストリーム ・バッチ データ格納・管理 データ読み出し データ要求 データ提供 外部 システム たとえば、SparkからDelta Lakeを利用して データの保存はHDFSなどのデータレイク上で行う、等ができる
  • 13. 13 © 2020 NTT DATA Corporation Delta Lake のうまみ Realtime Historical データソース バッチ ストリーム 機械学習 分析(BIツール) データ連携 接続 API 更新 スキャン ACIDトランザクション書き込み 一貫性のある効率的なスキャン データ品質のコントロールが可能 過去のデータを再現可能 ストリーム処理とバッチ処理の統合 格納データ量に影響されにくい高いパフォーマンス 他製品と組み合わせて 様々なデータソースとの連携/加工/分析が可能 Delta Lakeは、楽観ロックに基づく排他制御を提供するのが特長 既存の分散ストレージが不得手なトランザクション管理が可能になる
  • 14. 14 © 2020 NTT DATA Corporation 【回答】「Delta Lake」とはナニモノか? 初耳です、なにそれおいしいの? 名前を聞いたことがあります 動かしたことがあります or 動かしています 中の人です A B D C (アンケート回答表示予定)
  • 15. © 2020 NTT DATA Corporation ベンチマークからポイントをご紹介 C 初耳です、なにそれおいしいの? 名前を聞いたことがあります 動かしたことがあります or 動かしています 中の人です このセクションの主な対象者 D A B
  • 16. 16 © 2020 NTT DATA Corporation Delta Lake ベンチマーク概要 名称 版 備考 Delta Lake 0.7.0 Apache Spark 3.0.0 Apache Ambari 2.7.4 Apache Hadoop 3.1.1 TPC-DSデータジェネレータ spark-tpcds-datagen (0b1df3f) https://github.com/maropu/ spark-tpcds-datagen OpenJDK 1.8.0 Java-1.8.0-openjdk-devel Python 3.6 CentOS x86_64 7.7 2002_01 AWS EC2 インスタンス 用途 台数 m5.xlarge Hadoop Master Node 3 m5.8xlarge Hadoop Slave Node 3 t2.large Hadoop Client 1 ベンチマークで扱うデータは、Spark対応のTPC-DSデータジェネレータで生成 Delta Lake の基本特性を知るためのベンチマークを実施 構成情報 ベンチマーク用データ • 『Store Sales テーブル』データ↑ • データ増幅はジェネレータのscale-factorを利用 Delta Lake に対するデータR/W ローカルファイルシステム HDFS Delta Lake Store Sales spark- tpcds- datagen 自前 APP 生成 事前に ロード 自前 APP ローカルファイルシステム HDFS Delta Lake SS ■データ書込 ■データ読込 Datatype カラム数 identifier 10 int 1 decimal(7, 2) 12
  • 17. 17 © 2020 NTT DATA Corporation Delta Lake ベンチマーク概要 名称 版 備考 Delta Lake 0.7.0 Apache Spark 3.0.0 Apache Ambari 2.7.4 Apache Hadoop 3.1.1 TPC-DSデータジェネレータ spark-tpcds-datagen (0b1df3f) https://github.com/maropu/ spark-tpcds-datagen OpenJDK 1.8.0 Java-1.8.0-openjdk-devel Python 3.6 CentOS x86_64 7.7 2002_01 AWS EC2 インスタンス 用途 台数 m5.xlarge Hadoop Master Node 3 m5.8xlarge Hadoop Slave Node 3 t2.large Hadoop Client 1 ベンチマークで扱うデータは、Spark対応のTPC-DSデータジェネレータで生成 Delta Lake の基本特性を知るためのベンチマークを実施 構成情報 ベンチマーク用データ • 『Store Sales テーブル』データ↑ • データ増幅はジェネレータのscale-factorを利用 Delta Lake に対するデータR/W ローカルファイルシステム HDFS Delta Lake Store Sales spark- tpcds- datagen 自前 APP 生成 事前に ロード 自前 APP ローカルファイルシステム HDFS Delta Lake SS ■データ書込 ■データ読込 1: Read 性能 Datatype カラム数 identifier 10 int 1 decimal(7, 2) 12 2: Upsert* 性能 * データがあれば Update, なければ Insert
  • 18. 18 © 2020 NTT DATA Corporation HDFS Delta Lake SS HDFS Delta Lake SS 1: Read – ベンチマーク概要 HDFS内に配置されたデータを Delta Lake経由で読む場合と、HDFS直読みの場合の実行時間を比較 自前 APP ローカルファイルシステム 自前 APP ローカルファイルシステム vs. • Read対象のデータ量に応じてRead実行時間がどのように変化するかを観測する → 0.2GB, 1.8GB, 18.1GB, 184.5GB, 346.0GB • Delta Lake経由でデータを読む場合と、HDFS直読みの2パターンを実施する Read対象のデータ量を変えると 実行時間はどう変化するか?
  • 19. 19 © 2020 NTT DATA Corporation 1: Read – ベンチマーク結果 0 10 20 30 40 50 60 70 80 90 0.2 1.8 18.1 184.5 346.0 実行時間 [秒] 読込データサイズ [GiB] Read 実行時間 HDFS 直読み Delta Lake 介在 注: この区間は2倍差 実行時間差は30秒未満 • 実行時間差は30秒未満だが、ユースケースによって影 響度が異なるので注意が必要。 • Delta Lakeを介してのRead時はdelta logファイルの 読み込みを行い、その部分がフットプリントになっている。 0 10 1 11 2 12 3 13 4 14 5 15 6 7 8 9 0 1 2 3 4 5 6 7 8 9 チェックポイント データの実体を保存するファイル (parquet) メタデータ保存ファイル[delta log] (json) APP
  • 20. 20 © 2020 NTT DATA Corporation 2: Upsert – ベンチマーク概要 HDFS内に配置されたデータに対して (Upsert)更新/挿入操作した場合の実行時間を比較 自前 APP ローカルファイルシステム 『データ活用基盤を使うほどにデータは溜まっていくけど、5年近く経った今も、更新処理を走らせても大丈夫?』 → (言い換えると) HDFS内の保存データ量が増えた場合の更新/挿入処理の実行時間はどうなるか? 「元々HDFS内に保存されている」 データ量を変えると 実行時間はどう変化するか? 想定シーン ベンチマーク概要 • Delta Lakeを介してHDFSに入れるデータ量は一定 ‣ 更新対象データ ‣ 挿入対象データ 更新対象 Store Sales spark- tpcds- datagen 生成 事前に ロード 挿入対象 Store Sales HDFS Delta Lake SS • HDFS内の保存データ量を増やす → 0.2GB, 1.8GB, 18.1GB, 184.5GB, 346.0GB 総データ量は一定
  • 21. 21 © 2020 NTT DATA Corporation 2: Upsert – ベンチマーク概要 与えるデータの更新/挿入の割合 の影響 最適化オプション* による影響 パターンA パターンB * merge.optimizeInsertOnlyMerge.enabled および merge.optimizeMatchedOnlyMerge.enabled 「元々HDFS内に保存されている」データ量を変えると 実行時間はどう変化するか?
  • 22. 22 © 2020 NTT DATA Corporation 2: Upsert – ベンチマーク概要 与えるデータの更新/挿入の割合 の影響 最適化オプション* による影響 パターンA パターンB * merge.optimizeInsertOnlyMerge.enabled および merge.optimizeMatchedOnlyMerge.enabled 「元々HDFS内に保存されている」データ量を変えると 実行時間はどう変化するか?
  • 23. 23 © 2020 NTT DATA Corporation 2: Upsert – ベンチマーク パターン.A: 与えるデータの更新/挿入の割合の影響 与えるデータの更新、挿入の割合が変わると実行時間は変化するか? 自前 APP ローカルファイルシステム 更新対象 Store Sales spark- tpcds- datagen 生成 事前に ロード 挿入対象 Store Sales HDFS Delta Lake SS データパターン 更新対象SS 挿入対象SS 1. Update 30,000 レコード 0 2. Insert 0 30,000 3. Half & Half 15,000 15,000 データ量 0.2GB, 1.8GB, 18.1GB, 184.5GB, 346.0GB Upsert ②HDFS内の保存データ量:5 通り ①データの与え方:3 通り
  • 24. 24 © 2020 NTT DATA Corporation 2: Upsert – ベンチマーク結果 パターン.A: 与えるデータの更新/挿入の割合の影響 – 結果 1.0 10.0 100.0 0.2 1.8 18.1 184.5 346.0 実行時間 [分] 更新データサイズ [GiB] Upsert Insert (Insert:Update=100:0) Half & Half (Insert:Update=50:50) Update (Insert:Update=0:100) 更新対象データの割合 を 変えても 実行時間が変わらない こともある Point Insert Update Half & Half 更新対象となるデータの割合が実行時間の支配項、というわけではない ・・・なぜか? (アニメーション有)
  • 25. 25 © 2020 NTT DATA Corporation なぜ実行時間が同じになったのか?[考察] 全データに対する更新対象となるデータの単純な割合ではなく マージ対象データが含まれるファイルがデータストア中に何個存在するかがポイント • Delta Lake では、Update/Delete等レコードを更新する際、そのレコードを含むParquetFileをまるごと書き直す。 • 逆に、更新対象のレコードを含まないParquetFileは書き直されない。 0.parquet 1.parquet 2.parquet 3.parquet 0.parquet 1.parquet 2.parquet 3.parquet Update Update Update Update Update Update 処理 時間 データ 量 更新対象データ 0’.parquet 1’.parquet 2’.parquet 3’.parquet 0’.parquet 3’.parquet 1.parquet 2.parquet
  • 26. 26 © 2020 NTT DATA Corporation なぜ実行時間が同じになったのか?[考察] テーブルや更新データの状態によって処理時間が変化するケースがある 状態を予想しきれない場合は、最悪値で処理時間を見積もっておくのが安全 • Delta Lake では、Update/Delete等レコードを更新する際、そのレコードを含むParquetFileをまるごと書き直す。 • 逆に、更新対象のレコードを含まないParquetFileは書き直されない。 0.parquet 1.parquet 2.parquet 3.parquet 0.parquet 1.parquet 2.parquet 3.parquet Update Update Update Update Update Update 処理 時間 データ 量 更新対象データ 0’.parquet 1’.parquet 2’.parquet 3’.parquet 0’.parquet 3’.parquet 1.parquet 2.parquet
  • 27. 27 © 2020 NTT DATA Corporation 2: Upsert – ベンチマーク概要 与えるデータの更新/挿入の割合 の影響 最適化オプション* による影響 パターンA パターンB * merge.optimizeInsertOnlyMerge.enabled および merge.optimizeMatchedOnlyMerge.enabled 「元々HDFS内に保存されている」データ量を変えると 実行時間はどう変化するか?
  • 28. 28 © 2020 NTT DATA Corporation 2: Upsert – ベンチマーク パターン.B: 最適化オプションによる影響 最適化オプションの有無で実行時間は変化するか? 自前 APP ローカルファイルシステム 更新対象 Store Sales spark- tpcds- datagen 生成 事前に ロード 挿入対象 Store Sales HDFS Delta Lake SS Upsert ①データの与え方:4 通り ③最適化オプション:2 通り データパターン 更新対象SS 挿入対象SS 1. Update-1 30,000 レコード 0 2. Update-2 3,000,000 0 3. Insert-1 0 30,000 4. Insert-2 0 3,000,000 更新:merge.optimizeMatchedOnlyMerge.enabled 挿入:merge.optimizeInsertOnlyMerge.enabled データ量 0.2GB, 1.8GB, 18.1GB, 184.5GB, 346.0GB ②HDFS内の保存データ量:5 通り (アニメーション有)
  • 29. 29 © 2020 NTT DATA Corporation 2: Upsert – ベンチマーク結果 パターン.B: 最適化オプションによる影響 1.0 10.0 0.2 1.8 18.1 184.5 346.0 実行時間 [分] 更新データサイズ [GiB] Upsert (Insert : Update = 100 : 0), Σ(Records)=3M Insert w/ Optimization Insert w/o Optimization 1.0 10.0 100.0 0.2 1.8 18.1 184.5 346.0 実行時間 [分] 更新データサイズ [GiB] Upsert (Insert : Update = 0 : 100), Σ(Records)=3M Update w/ Optimization Update w/o Optimization 注: この区間は2倍差 注: この区間は2倍差 配置するデータ件数が300万(レコード)の場合、 『Insert』のケースで最適化オプション有で実行速度が短縮 『最適化オプション有』の方が速い 『最適化オプション』有無で性能差なし
  • 30. 30 © 2020 NTT DATA Corporation 2: Upsert – ベンチマーク結果 パターン.B: 最適化オプションによる影響 1.0 10.0 0.2 1.8 18.1 184.5 346.0 実行時間 [分] 更新データサイズ [GiB] Upsert (Insert : Update = 100 : 0), Σ(Records)=30K Insert w/ Optimization Insert w/o Optimization 1.0 10.0 100.0 0.2 1.8 18.1 184.5 346.0 実行時間 [分] 更新データサイズ [GiB] Upsert (Insert : Update = 0 : 100), Σ(Records)=30K Update w/ Optimization Update w/o Optimization 注: この区間は2倍差 注: この区間は2倍差 『最適化オプション有』の方が速い 配置するデータ件数が3万(レコード)の場合、 最適化オプション有無で実行速度が改善したり、悪化したり。 『最適化オプション有』の方が 遅い
  • 31. 31 © 2020 NTT DATA Corporation なぜそんなことが起きるのか? 更新対象ファイルのリスト生成・取得処理をスキップするまでは良いが その後の全件データに対するシャッフル処理が遅くなった Upsertフェーズ 最適化オプション有 最適化オプション無 1 更新対象ファイルの リスト生成・取得処理 (Skip) Upsertするデータ(レコード)件数が、 spark.sql.autoBroadcastJoinThreshold よりも 2 ファイル更新処理 全件データ に対する SortMergeJoin 更新対象ファイル に対する SortMergeJoin 少ない 多い BroadcastHashJoin SortMergeJoin 実質0件
  • 32. 32 © 2020 NTT DATA Corporation なぜそんなことが起きるのか? ストリーム処理併用などで細かなデータをUpsertする場合 データ流量から計算し、最適化オプション有無を選択する必要がある Upsertフェーズ 最適化オプション有 最適化オプション無 1 更新対象ファイルの リスト生成・取得処理 (Skip) Upsertするデータ(レコード)件数が、 spark.sql.autoBroadcastJoinThreshold よりも 2 ファイル更新処理 全件データ に対する SortMergeJoin 更新対象ファイル に対する SortMergeJoin 少ない 多い BroadcastHashJoin SortMergeJoin 実質0件
  • 33. 33 © 2020 NTT DATA Corporation まとめ Delta Lake の基本とマイクロベンチマーク例についてご紹介しました 1 2 Delta Lake の概要と基本的な使い方についてデータ活用基盤アーキテクチャの例を 通じてご紹介します ⇒ Delta Lakeはストレージレイヤソフトウェアの1つ ⇒ 楽観ロックに基づく排他制御を提供し、従来の分散ストレージに トランザクション管理の仕組みをもたらします Delta Lake を動かしたときの特徴の一部をご紹介します ⇒ Read, Upsertの実行例とDelta Lake利用の注意点をご紹介 ⇒ Delta Lakeの設定変更の際は Sparkへの影響を要考慮
  • 34. © 2020 NTT DATA Corporation 免責事項 • 当資料に記載されているデータは、独自の検証環境で取得した2020年10月時点での一参考値です。コンテンツ等の内容に関して記載時に最新の注意を払っておりま すが、当社はその正確性、有用性、確実性その他いかなる保証もするものではありません。コンテンツ等のご利用により万が一何らかの損害が発生したとしても、当社が一 切責任を負うものではありません。また、当資料に記載されている事項を予告なしに変更または中止することがありますのでご了承ください。 • その他、記載されている会社名、商品名、又はサービス名は、各社の登録商標又は商標です。

Editor's Notes

  • #5: そもそもDelta Lakeとは何か、そして基本的な使い方はどのようなものか、とった概要をお話します。 その後、Delta Lakeの今の実力値について、マイクロベンチを取った結果のご紹介を通じてお話します。 実際の動かしたときの特徴を一部紹介・。
  • #7: Delta Lake とは、についてお話する前に、似たような名前を持つ「データレイク」について少し触れたいと思います。 そもそもデータレイクとは、大量のデータを扱うデータの貯蔵庫のような概念であって、厳密な定義は存在しません。少なくとも、ある特定のプロダクトやソリューションのことではありません。データレイクとは、の解釈には様々な議論があると思いますので、この講演では「データを永続的に扱う分散ストレージ」と読み替えさせて頂きます。 ・・・とした時に、データを永続的に扱う分散ストレージが抱える課題感とはいったい何でしょうか。データ活用基盤はこういうアーキテクチャになることが多いと思うのですが、ここで、トレージを軸としたデータの入りと出に着目しますと、例えばこのような課題があると考えられます。そしてこの講演では、データの出の部分、「データの活用のしやすさ」について注目いたします。 この部分の課題として、データ分析や機械学習をやろうとした時に素の分散ストレージをそのまま使おうとすると、機能がシンプル過ぎて、周辺系機能の作り込みが発生しがちで処理全体が煩雑になってしまう、という点が挙げられます。その背景には、近年では要件の複雑化により、次のような特徴が求められているためです。【Next】
  • #8: 例えば、データの操作や処理について。テーブルデータ等の構造データのみならず、自然言語で書かれた文書ファイルや、動画像ファイル等、非構造データを取り扱うシーンが増えてきています。 また、データ操作そのものではなく、その周辺系・補助という点についてはどうでしょうか。例えば、機械学習ではモデル開発の際にあらゆるデータを活用して試行錯誤しながらその時々でのベストなモデルをアウトプットしますけれども、いつ、どんなデータの、どのバージョンを使ってどのモデルを作ったのか。そういったデータやモデルの再現性の担保が求められることがあるでしょう。他には非機能面でも、大量データを扱う上で前提となるスケーラビリティですとか、可用性といったこともポイントになるでしょう。 このように、分散ストレージに向けられる期待値は多岐に渡り、ストレージ単体でこれらに応えるのは難しくなってきています。従って、分散ストレージの高度化が求められています。【Next】
  • #9: そして、分散ストレージの高度化をどうやるか、についてですが、大まかにはこちらの3種類のアプローチがあるかと思います。 1つ目は、ストレージにデータを投入する側で工夫する 2つ目は、ストレージを上手く使う技術を入れて工夫する 3つ目は、ストレージそのものに手をいれて工夫する 以上3点が挙げられると思いますが、【Next】
  • #10: 今回は真ん中にフォーカスを当てたアプローチ、具体的には、ストレージレイヤ・ソフトウェアを活用する方法について紹介します。【Next】
  • #11: ストレージレイヤソフトウェアは、ストレージを上手く使う技術、とお話しましたが、どのような使われ方になるでしょうか。イメージ図を用いて簡単にご紹介いたします。 こちらのイメージ図の下部あるストレージ。HDFS等の分散ファイルシステムやOpenStack Swift等のオブジェクトストレージ等がありますけども、一般的にはデータの読み書き、削除などの素朴な機能のみをAPIとして提供しています。ここにストレージレイヤソフトウェアをかますことで、論理的なデータセットやテーブルの操作が可能になります。例えば、HDFS等はWrite at Once, 一度書いたらデータの更新は行えませんが、ストレージレイヤソフトウェアが提供する論理的なデータセットやテーブルを操作することで、あたかもデータの更新を行えたような結果を得られます。 このように、データ操作のためのアプリケーションに便利な特徴を提供するのが、このストレージレイヤソフトウェアであり、その1実装例がDelta Lakeです。
  • #12: メタデータファイルを使って、『データの実体を保持する物理的なファイル』と『論理的なテーブル』を紐づけるような仕組みになっています。つまりメタデータを見れば、目的とする論理的なテーブル内のデータを読み取るために、どの物理ファイルを読めばよいかが分かるようになっています。この仕組みを利用することで、論理的なテーブルを更新するような処理も簡潔に実現できます。
  • #13: さて、Delta Lake の基本的な使い方として、Delta Lake が提供する論理的なテーブルを操作するイメージについてご紹介しましたが、今後はもう少しマクロな視点、データ活用基盤のアーキテクチャの中でどのように使われるかについて見ていきます。 Delta Lake の最も基本的でシンプルな使い方は、ストレージと組み合わせてデータの読み書きを行うことです。 しかしそれではなんとも味気ない、ということで、Delta Lakeが提供するいくつかのライブラリおよびインターフェイスを活用して、データ処理パイプラインの一部に組み込んで活用することが出来ます。たとえば、SparkからDelta Lakeに対してデータ操作を行うことが可能です。
  • #14: そして、Delta Lakeのうまみ、つまり強みとなるポイントですが、一言で申し上げますと「楽観ロックに基づく排他制御の仕組みを提供する」というポイントになります。つまり、アプリケーションから見れば、分散ストレージにトランザクションのような便利な機能が入った、ということになります。これまで、大量のデータを扱う分散ストレージが不得手としてた部分が補われたことになります。すごくざっくり言い換えますと、信頼性高い読み書きができるようになった、ということです。 したがって、ストレージをそのまま使うケースと比べて、何らかの処理が挟まる(挟まるから、機能が提供されるんだけど)ので、それを踏まえてどのくらい性能影響があるのか気になりますよね?ということで、読み書きの仕方やパターンに基づいて色々動作検証していますが、その一部を紹介します。今回は、まさにこの絵の中に掛かれている「更新」と「スキャン」についてのベンチマーク実行例についてご紹介したいと思います。 --- トランザクションのような便利な機能が入った -> それまでのストレージ単体になかった機能が入ってきた -> 性能どんなもんじゃい? 一部ご紹介。 普通データレイクにおいては、普遍のデータとして扱う・ Delta Lakeを介することで、論理的なテーブルの更新を実現できる.
  • #15: さて、ベンチマーク実行例をご紹介する前に、講演の冒頭で質問させて頂いた結果についてご紹介します。
  • #17: ■必ず言う あくまで特定データを使った基本特性を知るためのベンチマークなので実際のワークロードでどのくらい出るのか?は個別に検証必要 ・・・ということで、マイクロベンチマークについての実施概要についてお話します。 今回のベンチで使ったソフトウェア群としてはこちらの表に記載しているものでして、Delta Lakeは0.7.0を、これに対応するApache Sparkのバージョンとして3.0.0を利用しています。また、マイクロベンチマークといえば、使ったデータとしては、装置が気になるところですが、こちらには、TPC-DSをSpark対応させたOSSのspark-tpcds-datagenというものを使っております。 負荷がけ方法としては独自に・・・ さて、先程申し上げました通り、Delta Lakeにはデータの読み書きに関するいくつかのAPIが備わっておりますが、本日ご紹介するマイクロベンチマーク結果は、ReadとUpsertに関するものです。次のスライドより、早速ご紹介したいと思います。
  • #18: ■必ず言う あくまで特定データを使った基本特性を知るためのベンチマークなので実際のワークロードでどのくらい出るのか?は個別に検証必要 ・・・ということで、マイクロベンチマークについての実施概要についてお話します。 今回のベンチで使ったソフトウェア群としてはこちらの表に記載しているものでして、Delta Lakeは0.7.0を、これに対応するApache Sparkのバージョンとして3.0.0を利用しています。また、マイクロベンチマークといえば、使ったデータとしては、装置が気になるところですが、こちらには、TPC-DSをSpark対応させたOSSのspark-tpcds-datagenというものを使っております。 負荷がけ方法としては独自に・・・ さて、先程申し上げました通り、Delta Lakeにはデータの読み書きに関するいくつかのAPIが備わっておりますが、本日ご紹介するマイクロベンチマーク結果は、ReadとUpsertに関するものです。次のスライドより、早速ご紹介したいと思います。
  • #19: まずはReadについてです。 Readは、予めHDFS上に配置されたデータを、Delta Lake越しにリードするか、HDFSから直接リードするかを相対比較することで、Delta Lakeの実力値を見て行こう、というものです。 さて、いきなりグラフが出ていますけれども、こちらが結果になります。黄色の線がHDFS直読み、青がDelta Lake越しのリードです。 やはり、HDFS直読みの方が速い、という結果が表れておりますが、
  • #20: まずはReadについてです。 Readは、予めHDFS上に配置されたデータを、Delta Lake越しにリードするか、HDFSから直接リードするかを相対比較することで、Delta Lakeの実力値を見て行こう、というものです。 さて、いきなりグラフが出ていますけれども、こちらが結果になります。黄色の線がHDFS直読み、青がDelta Lake越しのリードです。 やはり、HDFS直読みの方が速い、という結果が表れておりますが、 Readではdelta logファイルやそのチェックポイントファイルから読み込み対象のファイルを得る
  • #21: まずはReadについてです。 Readは、予めHDFS上に配置されたデータを、Delta Lake越しにリードするか、HDFSから直接リードするかを相対比較することで、Delta Lakeの実力値を見て行こう、というものです。 さて、いきなりグラフが出ていますけれども、こちらが結果になります。黄色の線がHDFS直読み、青がDelta Lake越しのリードです。 やはり、HDFS直読みの方が速い、という結果が表れておりますが、
  • #22: 続きまして、Upsertについてです。
  • #23: 続きまして、Upsertについてです。
  • #26: --- Insert50%Update50%、およびUpdate100%のときのデータ出力サイズもほぼ変わらないため、Update50%の時点で全ファイルに更新が入るようなデータであったと推察される。 更新データは`spark.read.format("parquet").load("TPCDSのデータ").limit(件数)`で抽出していた scale-factorが2000以下の場合、ファイル数は69。(Partition無しのケース) PartitionKeyありの場合、更新対象のレコードがないファイルは更新処理実施にスルーされる。(データサイズ変化ない) Parquet ・・・すべて書き直し Delta ・・・・更新対象のファイルだけを書き直しできる
  • #27: したがって、大きなデータをバッチ処理的に扱う際には、テーブルや更新データの状態によって処理時間が変わってくるケースがあります。そのため、これらの状態を予想しきれない場合は、最悪値、つまり全てのデータが更新される実行時間で見積もっておくのが安全です。【Next】
  • #28: 続きまして、Upsertについてです。
  • #30: 各々のデータサイズにおいて「どれくらい」速くなるのかについては更なる調査が必要。(どなたかご存知の方がいたら教えて)
  • #32: ストリーム処理併用などのユースケースで細かなデータをUpsertする場合は、最適化オプション付けないほうがいいケースもあるよ。データ流量から計算してね。
  • #33: 1: Delta Lake では設定に応じて、こういう仕組みで動く。 2: Sparkは、扱うデータサイズによって内部で挙動が変わるしくみになっている。 → この2つが合わさると、Delta Lake(&Spark)の設定と、Delta Lakeに与えるデータ量によって、動き方が場合分けされる。場合分けされた個々を見ると、ものによっては設定(パラメータ名)から直感的に感じる効果と、逆転がするケースがあるので、そこは注意。 本来ここはDelta Lakeのマイクロベンチマークですので、Sparkの話が入ってくるのは違和感があるかもしれません。 実はDelta Lakeは内部でSparkのAPIを多分に利用しておりまして、密結合な状態です。これをどう捉えるかは多分に議論の余地があると思いますけども、Delta Lakeのオプションを変えるとSparkの最適化技法選択にも影響を与えるので、Delta Lakeの設定を変更する際には注意が必要です。今回はUpsertの最適化オプションを一つの題材としてご紹介しましたけども、Delta Lakeを使いこなす上では、どうやらSparkの理解も求められそうだ、と言って差し支えないでしょう。