rabbit-slide-kou-db-tech-showcase-2021 2021.11.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.rabbit +2 -0
- data/README.rd +54 -0
- data/Rakefile +17 -0
- data/apache-arrow-flight.rab +528 -0
- data/config.yaml +28 -0
- data/images/columnar.svg +561 -0
- data/images/contributor.png +0 -0
- data/images/fluentd-maintenance.png +0 -0
- data/images/record-batch-stream.svg +340 -0
- data/images/record-batch.svg +277 -0
- data/images/survey-url.svg +66 -0
- data/pdf/db-tech-showcase-2021-apache-arrow-flight.pdf +0 -0
- data/theme.rb +1 -0
- data//350/263/207/346/226/231_dbtsF6_session.pdf +0 -0
- metadata +90 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: af08ff6e29276c0cda327c43f7d833a08738a8ccd11e5a93c4304e41e99b69f5
|
4
|
+
data.tar.gz: f0fccba09b0522d37017850c039e69bc8c3146a74f4016d45039d90bc37311e3
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: e0a5bed1cefda29c5b1c83962a9b9cc427edd0e3a50180b55bcfdd9257b46c7b3c17689510b5584b097d9dca64a624998752cbd09ff8aa1afa4bd6ebf5d7714d
|
7
|
+
data.tar.gz: 1a5480768dfa2965b820508e860d9ffdd29aef3e0be4beac5be3d43b24c4f82473e05bacb4f8601214d790bc1dc5c5138518fc0a22a78a70b5a10d79675c8226
|
data/.rabbit
ADDED
data/README.rd
ADDED
@@ -0,0 +1,54 @@
|
|
1
|
+
= Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク
|
2
|
+
|
3
|
+
ビッグデータは現実的な時間で処理できてこそ活きます。処理時間はデータ処理アルゴリズムの計算量だけで決まり…ません!適切なノードにデータを配置しないとそもそもデータ処理できませんが、大量ノードが協調するビッグデータ処理ではデータ移動コストを無視できません。Apache Arrow Flightを使えばネットワーク帯域限界まで高速にデータ転送できます。
|
4
|
+
|
5
|
+
このセッションではApache Arrow Flightの仕組みおよび利用例として分散計算プラットフォームApache Arrow Ballistaを紹介します。
|
6
|
+
|
7
|
+
== ライセンス
|
8
|
+
|
9
|
+
=== スライド
|
10
|
+
|
11
|
+
CC BY-SA 4.0
|
12
|
+
|
13
|
+
原著作者:須藤功平
|
14
|
+
|
15
|
+
==== 株式会社クリアコードのロゴ
|
16
|
+
|
17
|
+
CC BY-SA 4.0
|
18
|
+
|
19
|
+
原著作者:株式会社クリアコード
|
20
|
+
|
21
|
+
ページヘッダーで使っています。
|
22
|
+
|
23
|
+
==== Apache Arrow Flightの図
|
24
|
+
|
25
|
+
Apache License 2.0
|
26
|
+
|
27
|
+
原著作者:The Apache Software Foundation
|
28
|
+
|
29
|
+
==== Apache Arrow Ballistaのロゴ
|
30
|
+
|
31
|
+
Apache License 2.0
|
32
|
+
|
33
|
+
原著作者:The Apache Software Foundation
|
34
|
+
|
35
|
+
== 作者向け
|
36
|
+
|
37
|
+
=== 表示
|
38
|
+
|
39
|
+
rake
|
40
|
+
|
41
|
+
=== 公開
|
42
|
+
|
43
|
+
rake publish
|
44
|
+
|
45
|
+
== 閲覧者向け
|
46
|
+
|
47
|
+
=== インストール
|
48
|
+
|
49
|
+
gem install rabbit-slide-kou-db-tech-showcase-2021
|
50
|
+
|
51
|
+
=== 表示
|
52
|
+
|
53
|
+
rabbit rabbit-slide-kou-db-tech-showcase-2021.gem
|
54
|
+
|
data/Rakefile
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
require "rabbit/task/slide"
|
2
|
+
|
3
|
+
# Edit ./config.yaml to customize meta data
|
4
|
+
|
5
|
+
spec = nil
|
6
|
+
Rabbit::Task::Slide.new do |task|
|
7
|
+
spec = task.spec
|
8
|
+
spec.files += Dir.glob("images/**/*.*")
|
9
|
+
# spec.files -= Dir.glob("private/**/*.*")
|
10
|
+
spec.add_runtime_dependency("rabbit-theme-clear-code")
|
11
|
+
end
|
12
|
+
|
13
|
+
desc "Tag #{spec.version}"
|
14
|
+
task :tag do
|
15
|
+
sh("git", "tag", "-a", spec.version.to_s, "-m", "Publish #{spec.version}")
|
16
|
+
sh("git", "push", "--tags")
|
17
|
+
end
|
@@ -0,0 +1,528 @@
|
|
1
|
+
= Apache Arrow Flight
|
2
|
+
|
3
|
+
: subtitle
|
4
|
+
ビッグデータ用高速データ転送フレームワーク
|
5
|
+
: author
|
6
|
+
須藤功平
|
7
|
+
: institution
|
8
|
+
株式会社クリアコード
|
9
|
+
: content-source
|
10
|
+
db tech showcase 2021
|
11
|
+
: date
|
12
|
+
2021-11-17
|
13
|
+
: allotted-time
|
14
|
+
45m
|
15
|
+
: theme
|
16
|
+
.
|
17
|
+
|
18
|
+
= モチベーション
|
19
|
+
|
20
|
+
ビッグデータを\n
|
21
|
+
処理したい!
|
22
|
+
|
23
|
+
= ビッグデータ処理に必要なもの
|
24
|
+
|
25
|
+
* 大量データ:データがないと始まらない!
|
26
|
+
* 速度:速くないと処理しきれない!
|
27
|
+
|
28
|
+
= 大量データの収集に必要なもの
|
29
|
+
|
30
|
+
* データ収集ツール
|
31
|
+
* 例:ログ:Fluentd/Fluent Bit
|
32
|
+
* ストレージ
|
33
|
+
* 例:Amazon S3
|
34
|
+
* 効率的なデータフォーマット
|
35
|
+
* トレードオフ:空間効率と時間効率
|
36
|
+
* 例:CSVよりApache Parquet
|
37
|
+
|
38
|
+
# image
|
39
|
+
# src = images/fluentd-maintenance.png
|
40
|
+
# relative-width = 20
|
41
|
+
# relative-margin-right = -10
|
42
|
+
# align = right
|
43
|
+
# vertical-align = top
|
44
|
+
|
45
|
+
= 高速処理に必要なもの
|
46
|
+
|
47
|
+
* 高速な分散システム
|
48
|
+
* 1台では処理しきれない
|
49
|
+
* 高速なアルゴリズムとその実装
|
50
|
+
* 個々の処理が速くなると全体も速くなる
|
51
|
+
|
52
|
+
= 今日注目すること
|
53
|
+
|
54
|
+
高速な分散システム
|
55
|
+
|
56
|
+
= 高速な分散システムに必要なもの
|
57
|
+
|
58
|
+
* 効率のよいタスク管理
|
59
|
+
* より速く処理が終わるようなリソース配分
|
60
|
+
* 効率のよいデータ転送
|
61
|
+
* ノード間でのデータ交換コストは無視できない
|
62
|
+
|
63
|
+
= 大量データの交換コスト
|
64
|
+
|
65
|
+
# image
|
66
|
+
# src = https://hannes.muehleisen.org/p852-muehleisen.pdf
|
67
|
+
# page = 1
|
68
|
+
# relative-width = 50
|
69
|
+
# relative-clip-y = 8
|
70
|
+
# relative-clip-height = 17
|
71
|
+
# align = center
|
72
|
+
# vertical-align = top
|
73
|
+
|
74
|
+
# image
|
75
|
+
# src = https://hannes.muehleisen.org/p852-muehleisen.pdf
|
76
|
+
# page = 1
|
77
|
+
# relative-width = 90
|
78
|
+
# relative-clip-x = 50
|
79
|
+
# relative-clip-y = 25
|
80
|
+
# relative-clip-height = 25
|
81
|
+
# align = left
|
82
|
+
# vertical-align = bottom
|
83
|
+
# relative-margin-top = 1.5
|
84
|
+
# relative-margin-left = -20
|
85
|
+
|
86
|
+
# image
|
87
|
+
# src = https://hannes.muehleisen.org/p852-muehleisen.pdf
|
88
|
+
# page = 2
|
89
|
+
# relative-width = 100
|
90
|
+
# relative-clip-x = 50
|
91
|
+
# relative-clip-height = 29
|
92
|
+
# align = right
|
93
|
+
# vertical-align = bottom
|
94
|
+
# relative-margin-top = 8
|
95
|
+
# relative-margin-right = -10
|
96
|
+
|
97
|
+
(('tag:right'))
|
98
|
+
(('tag:margin-top * 22.5'))
|
99
|
+
(('note:((<URL:https://hannes.muehleisen.org/p852-muehleisen.pdf>))'))
|
100
|
+
|
101
|
+
= 大量データの交換コスト
|
102
|
+
|
103
|
+
* ボトルネックになりやすい
|
104
|
+
(1) シリアライズ・デシリアライズ
|
105
|
+
(2) ネットワーク帯域
|
106
|
+
* 目指すところ
|
107
|
+
* メイン処理がボトルネック\n
|
108
|
+
(メイン処理以外が十分速い)
|
109
|
+
|
110
|
+
# image
|
111
|
+
# src = https://hannes.muehleisen.org/p852-muehleisen.pdf
|
112
|
+
# page = 2
|
113
|
+
# relative-width = 60
|
114
|
+
# relative-clip-x = 50
|
115
|
+
# relative-clip-height = 24
|
116
|
+
# align = right
|
117
|
+
# vertical-align = top
|
118
|
+
# relative-margin-top = -10
|
119
|
+
# relative-margin-right = -17
|
120
|
+
|
121
|
+
= 解決策
|
122
|
+
|
123
|
+
Apache Arrow Flight
|
124
|
+
|
125
|
+
= Apache Arrow Flightと私
|
126
|
+
|
127
|
+
* Apache ArrowプロジェクトのPMCメンバー
|
128
|
+
* (('note:Apache Arrow Flightも開発しているプロジェクト'))
|
129
|
+
* (('note:PMC:プロジェクト管理委員会'))
|
130
|
+
* コミット数2位
|
131
|
+
|
132
|
+
# image
|
133
|
+
# src = images/contributor.png
|
134
|
+
# relative-width = 45
|
135
|
+
# align = right
|
136
|
+
# vertical-align = bottom
|
137
|
+
# relative-margin-top = 10
|
138
|
+
# relative-margin-right = -10
|
139
|
+
|
140
|
+
= Apache Arrow Flight
|
141
|
+
|
142
|
+
* gRPCベースのデータ転送フレームワーク
|
143
|
+
* ポイント
|
144
|
+
* 並列転送対応
|
145
|
+
* 「効率のよいタスク管理」に有用
|
146
|
+
* ストリーム処理対応
|
147
|
+
* 「効率のよいタスク管理」に有用
|
148
|
+
* シリアライズ・デシリアライズがほぼ不要
|
149
|
+
* 「効率のよいデータ転送」に有用
|
150
|
+
|
151
|
+
= 簡単な使い方
|
152
|
+
|
153
|
+
# image
|
154
|
+
# src = https://arrow.apache.org/img/20191014_flight_simple.png
|
155
|
+
# relative-height = 80
|
156
|
+
|
157
|
+
(('tag:right'))
|
158
|
+
(('note:((<URL:https://arrow.apache.org/img/20191014_flight_simple.png>))'))\n
|
159
|
+
(('note:Apache License 2.0 - © 2016-2021 The Apache Software Foundation'))
|
160
|
+
|
161
|
+
= GetFlightInfo
|
162
|
+
|
163
|
+
* クライアント→サーバー
|
164
|
+
* データの取得方法を教えてもらう
|
165
|
+
* サーバーはFlightInfoを返す
|
166
|
+
* FlightInfoの中身
|
167
|
+
* メタデータ:スキーマ・総レコード数…
|
168
|
+
* 複数エンドポイント:\n
|
169
|
+
データは複数ヶ所に分散しているかもしれない!
|
170
|
+
|
171
|
+
# image
|
172
|
+
# src = https://arrow.apache.org/img/20191014_flight_simple.png
|
173
|
+
# relative-width = 20
|
174
|
+
# align = right
|
175
|
+
# vertical-align = top
|
176
|
+
# relative-margin-right = -10
|
177
|
+
|
178
|
+
= DoGet
|
179
|
+
|
180
|
+
* クライアント→サーバー
|
181
|
+
* データを取得する
|
182
|
+
* サーバーはレコードバッチをストリームで返す
|
183
|
+
* プロトコルレベルではFlightDataと呼んでいる
|
184
|
+
* レコードバッチ
|
185
|
+
* データ全体のうちの一部のレコードの集まり
|
186
|
+
|
187
|
+
# image
|
188
|
+
# src = https://arrow.apache.org/img/20191014_flight_simple.png
|
189
|
+
# relative-width = 20
|
190
|
+
# align = right
|
191
|
+
# vertical-align = top
|
192
|
+
# relative-margin-right = -10
|
193
|
+
|
194
|
+
= Apache Arrow Flightが扱うデータ
|
195
|
+
|
196
|
+
* 型付きのテーブルデータ
|
197
|
+
* RDBMSで扱うようなデータ
|
198
|
+
* カラムごとに型がある
|
199
|
+
* すべてのレコードは同じカラム構成
|
200
|
+
* レコードバッチ
|
201
|
+
* テーブルデータ内の連続したレコードの集まり
|
202
|
+
|
203
|
+
# image
|
204
|
+
# src = images/record-batch.svg
|
205
|
+
# relative-width = 30
|
206
|
+
# align = right
|
207
|
+
# vertical-align = top
|
208
|
+
# relative-margin-right = -10
|
209
|
+
|
210
|
+
= レコードバッチストリーム
|
211
|
+
|
212
|
+
# image
|
213
|
+
# src = images/record-batch-stream.svg
|
214
|
+
# relative-width = 90
|
215
|
+
|
216
|
+
== スライドプロパティー
|
217
|
+
|
218
|
+
: enable-title-on-image
|
219
|
+
false
|
220
|
+
|
221
|
+
= なぜストリームが重要か
|
222
|
+
|
223
|
+
* 大量データを準備ができた順に処理できる
|
224
|
+
* 全部準備ができるまで待たなくてよい
|
225
|
+
* リソースを有効活用できる
|
226
|
+
* レコードバッチのストリームでいいの?
|
227
|
+
* レコードのストリーム方がいいんじゃない?
|
228
|
+
|
229
|
+
= ストリームの単位
|
230
|
+
|
231
|
+
* レコード
|
232
|
+
* レコード単位で処理できる
|
233
|
+
* データはレコード単位でまとめる
|
234
|
+
* レコードバッチ
|
235
|
+
* 複数レコードをまとめて処理できる
|
236
|
+
* データをカラム単位でまとめられる
|
237
|
+
|
238
|
+
# image
|
239
|
+
# src = images/columnar.svg
|
240
|
+
# relative-width = 30
|
241
|
+
# align = right
|
242
|
+
# vertical-align = top
|
243
|
+
# relative-margin-right = -10
|
244
|
+
|
245
|
+
= レコードバッチと処理
|
246
|
+
|
247
|
+
* 複数レコードをまとめて処理
|
248
|
+
* SIMDを活用すればレコード単位の処理より高速
|
249
|
+
* カラム単位でまとまったデータ
|
250
|
+
* 分析処理が高速
|
251
|
+
* ビッグデータ処理の多くは分析処理なはず
|
252
|
+
|
253
|
+
# image
|
254
|
+
# src = images/columnar.svg
|
255
|
+
# relative-width = 30
|
256
|
+
# align = right
|
257
|
+
# vertical-align = top
|
258
|
+
# relative-margin-right = -10
|
259
|
+
|
260
|
+
= 詳細
|
261
|
+
|
262
|
+
# image
|
263
|
+
# src = https://slide.rabbit-shocker.org/authors/kou/db-tech-showcase-online-2020/why-apache-arrow-format-is-fast.pdf
|
264
|
+
# relative-width = 80
|
265
|
+
|
266
|
+
(('tag:right'))
|
267
|
+
(('note:((<URL:https://slide.rabbit-shocker.org/authors/kou/db-tech-showcase-online-2020/>))'))
|
268
|
+
|
269
|
+
= 高速な分散システムの実現方法
|
270
|
+
|
271
|
+
* レコードバッチのストリーム\n
|
272
|
+
(('note:ここまでで説明したこと'))
|
273
|
+
* 待ち時間を減らせる
|
274
|
+
* 受け取ったデータを高速処理できる
|
275
|
+
* スケールアウト\n
|
276
|
+
(('note:これから説明すること'))
|
277
|
+
* データを複数ノードで分散処理
|
278
|
+
* それを効率的に扱う
|
279
|
+
|
280
|
+
= スケールアウト構成例
|
281
|
+
|
282
|
+
# image
|
283
|
+
# src = https://arrow.apache.org/img/20191014_flight_complex.png
|
284
|
+
# relative-height = 80
|
285
|
+
|
286
|
+
(('tag:right'))
|
287
|
+
(('note:((<URL:https://arrow.apache.org/img/20191014_flight_complex.png>))'))\n
|
288
|
+
(('note:Apache License 2.0 - © 2016-2021 The Apache Software Foundation'))
|
289
|
+
|
290
|
+
= ポイント1:ムダな転送を回避可能
|
291
|
+
|
292
|
+
* 多くの分散システム
|
293
|
+
* 「コーディネーター」経由で通信
|
294
|
+
* ノード→コーディネーター→クライアント
|
295
|
+
* Apache Arrow Flight
|
296
|
+
* 直接クライアントがデータ取得可能
|
297
|
+
* ノード→クライアント
|
298
|
+
|
299
|
+
# image
|
300
|
+
# src = https://arrow.apache.org/img/20191014_flight_complex.png
|
301
|
+
# relative-width = 20
|
302
|
+
# align = right
|
303
|
+
# vertical-align = top
|
304
|
+
# relative-margin-right = -10
|
305
|
+
|
306
|
+
= ポイント2:並列転送可能
|
307
|
+
|
308
|
+
* 同時に複数ノードからデータ取得可能
|
309
|
+
* データごとに異なるエンドポイントだから可能
|
310
|
+
* ストリームなので各データを随時処理可能
|
311
|
+
|
312
|
+
# image
|
313
|
+
# src = https://arrow.apache.org/img/20191014_flight_complex.png
|
314
|
+
# relative-width = 20
|
315
|
+
# align = right
|
316
|
+
# vertical-align = top
|
317
|
+
# relative-margin-right = -10
|
318
|
+
|
319
|
+
= 個々のデータ転送も速い
|
320
|
+
|
321
|
+
* 個々のデータ転送のボトルネック
|
322
|
+
* シリアライズ・デシリアライズ
|
323
|
+
* どうすれば速くできる?
|
324
|
+
* なにもしなきゃいいじゃん!
|
325
|
+
|
326
|
+
# image
|
327
|
+
# src = https://hannes.muehleisen.org/p852-muehleisen.pdf
|
328
|
+
# page = 2
|
329
|
+
# relative-width = 60
|
330
|
+
# relative-clip-x = 50
|
331
|
+
# relative-clip-height = 24
|
332
|
+
# align = right
|
333
|
+
# vertical-align = top
|
334
|
+
# relative-margin-top = -10
|
335
|
+
# relative-margin-right = -17
|
336
|
+
|
337
|
+
= なにもしない?
|
338
|
+
|
339
|
+
* そもそもなぜシリアライズが必要?
|
340
|
+
* メモリー上のデータの配置と\n
|
341
|
+
通信時のデータの配置が違うから
|
342
|
+
* シリアライズしなくて済むには?
|
343
|
+
* メモリー上のデータの配置と\n
|
344
|
+
通信時のデータの配置を同じにすればいい!
|
345
|
+
|
346
|
+
# image
|
347
|
+
# src = https://hannes.muehleisen.org/p852-muehleisen.pdf
|
348
|
+
# page = 2
|
349
|
+
# relative-width = 60
|
350
|
+
# relative-clip-x = 50
|
351
|
+
# relative-clip-height = 24
|
352
|
+
# align = right
|
353
|
+
# vertical-align = top
|
354
|
+
# relative-margin-top = -10
|
355
|
+
# relative-margin-right = -17
|
356
|
+
|
357
|
+
= Apache Arrowフォーマット
|
358
|
+
|
359
|
+
* シリアライズ不要フォーマット
|
360
|
+
* メモリー上で効率よくデータを扱える配置
|
361
|
+
* データ交換時も↑と同じ配置を使う
|
362
|
+
* Apache Arrow Flightが扱うデータは\n
|
363
|
+
Apache Arrowフォーマット
|
364
|
+
* 個々のデータ転送も速い!
|
365
|
+
|
366
|
+
# image
|
367
|
+
# src = https://hannes.muehleisen.org/p852-muehleisen.pdf
|
368
|
+
# page = 2
|
369
|
+
# relative-width = 60
|
370
|
+
# relative-clip-x = 50
|
371
|
+
# relative-clip-height = 24
|
372
|
+
# align = right
|
373
|
+
# vertical-align = top
|
374
|
+
# relative-margin-top = -10
|
375
|
+
# relative-margin-right = -17
|
376
|
+
|
377
|
+
= Apache Arrow Flightのまとめ
|
378
|
+
|
379
|
+
* 高速データ転送フレームワーク
|
380
|
+
* 並列転送対応
|
381
|
+
* ストリーム処理対応
|
382
|
+
* シリアライズ・デシリアライズがほぼ不要
|
383
|
+
* gRPCベース
|
384
|
+
* 既存のgRPCライブラリーでも接続可能
|
385
|
+
* 専用ライブラリーあり:C, C++, C#, Go, Java, Python, R, Ruby, Rust
|
386
|
+
|
387
|
+
= Apache Arrow Flightの利用事例
|
388
|
+
|
389
|
+
(('tag:xx-large'))
|
390
|
+
Apache Arrow Ballista
|
391
|
+
|
392
|
+
# image
|
393
|
+
# src = https://raw.githubusercontent.com/apache/arrow-datafusion/master/ballista/ui/scheduler/public/logo512.png
|
394
|
+
# relative-width = 20
|
395
|
+
# relative-margin-right = -10
|
396
|
+
# align = right
|
397
|
+
|
398
|
+
(('tag:right'))
|
399
|
+
(('note:Apache License 2.0 - © 2016-2021 The Apache Software Foundation'))
|
400
|
+
|
401
|
+
= Apache Arrow Ballista
|
402
|
+
|
403
|
+
* Rust実装の分散計算プラットフォーム
|
404
|
+
* データはApache Arrowフォーマット
|
405
|
+
* 通信はgRPCとApache Arrow Flight
|
406
|
+
|
407
|
+
# image
|
408
|
+
# src = https://raw.githubusercontent.com/apache/arrow-datafusion/master/ballista/ui/scheduler/public/logo512.png
|
409
|
+
# relative-width = 20
|
410
|
+
# relative-margin-right = -10
|
411
|
+
# align = right
|
412
|
+
# vertical-align = top
|
413
|
+
|
414
|
+
= アーキテクチャー
|
415
|
+
|
416
|
+
# image
|
417
|
+
# src = https://raw.githubusercontent.com/apache/arrow-datafusion/master/ballista/docs/images/query-execution.png
|
418
|
+
# relative-width = 80
|
419
|
+
# draw[0] = [rectangle, false, 0.3, 0.5, 0.15, 0.1, "#0041ab", {line_width: 3}]
|
420
|
+
# draw[1] = [rectangle, true, 0.05, 0.52, 0.15, 0.07, white]
|
421
|
+
# draw[2] = [text, Apache Arrow Flight, 0.05, 0.52, "#0041ab", {size: 25}]
|
422
|
+
# draw[3] = [rectangle, false, 0.295, 0.75, 0.15, 0.1, "#0041ab", {line_width: 3}]
|
423
|
+
# draw[4] = [rectangle, true, 0.05, 0.76, 0.15, 0.07, white]
|
424
|
+
# draw[5] = [text, Apache Arrow Flight, 0.05, 0.76, "#0041ab", {size: 25}]
|
425
|
+
|
426
|
+
(('tag:right'))
|
427
|
+
(('note:Apache License 2.0 - © 2016-2021 The Apache Software Foundation'))
|
428
|
+
|
429
|
+
= Apache Arrow Ballistaでの使い方
|
430
|
+
|
431
|
+
* DoGetだけ使っている
|
432
|
+
* 処理済みのパーティションを受け取る
|
433
|
+
* 大量データになりうる
|
434
|
+
* その他の通信は素のgRPC
|
435
|
+
* 各Executorへの処理の依頼など
|
436
|
+
* 大量データにはならない
|
437
|
+
|
438
|
+
# image
|
439
|
+
# src = https://raw.githubusercontent.com/apache/arrow-datafusion/master/ballista/docs/images/query-execution.png
|
440
|
+
# relative-width = 20
|
441
|
+
# relative-margin-right = -10
|
442
|
+
# align = right
|
443
|
+
# vertical-align = top
|
444
|
+
|
445
|
+
= さらにApache Arrow Flight
|
446
|
+
|
447
|
+
* 利用可能なリクエスト
|
448
|
+
* ミドルウェア
|
449
|
+
* 将来の展望
|
450
|
+
|
451
|
+
= 利用可能なリクエスト1
|
452
|
+
|
453
|
+
* Handshake
|
454
|
+
* 認証
|
455
|
+
* ListFlights
|
456
|
+
* 利用可能なデータの取得方法一覧を取得
|
457
|
+
* GetSchema/DoGetなどで使える
|
458
|
+
* GetFlightInfo
|
459
|
+
* 指定したデータの取得方法を取得
|
460
|
+
* GetSchema/DoGetなどで使える
|
461
|
+
|
462
|
+
= 利用可能なリクエスト2
|
463
|
+
|
464
|
+
* GetSchema
|
465
|
+
* 指定したデータのスキーマを取得
|
466
|
+
* DoGet:指定したデータを取得
|
467
|
+
* DoPut:データを送信
|
468
|
+
* DoExchange:データを送受信
|
469
|
+
|
470
|
+
= 利用可能なリクエスト3
|
471
|
+
|
472
|
+
* DoAction
|
473
|
+
* 任意の処理を実行
|
474
|
+
* 普通のRPCなので素のgRPCでも十分
|
475
|
+
* ListActions
|
476
|
+
* 利用可能なアクション一覧を取得
|
477
|
+
|
478
|
+
= ミドルウェア
|
479
|
+
|
480
|
+
* プラグインみたいなもの
|
481
|
+
* サーバー側・クライアント側両方あり
|
482
|
+
* 利用例
|
483
|
+
* 認証機能
|
484
|
+
* 分散トレーシング機能
|
485
|
+
|
486
|
+
= 将来の展望1
|
487
|
+
|
488
|
+
* gRPC以外もサポートするかも
|
489
|
+
* (('note:((<URL:https://issues.apache.org/jira/browse/ARROW-13889>))'))
|
490
|
+
* メーリングリストで議論中
|
491
|
+
* 候補:UCX\n
|
492
|
+
(('note:((<URL:https://openucx.org/documentation/>))'))
|
493
|
+
* RDMA/GPUなどハードウェアも活用した高速通信
|
494
|
+
|
495
|
+
= 将来の展望2
|
496
|
+
|
497
|
+
* Apache Arrow Flight SQLの追加
|
498
|
+
* (('note:((<URL:https://issues.apache.org/jira/browse/ARROW-9825>))'))
|
499
|
+
* Apache Arrow Flight経由で各種RDBMSとやりとり
|
500
|
+
* GetFlightInfoでSQL送信
|
501
|
+
* DoGetで結果を受信\n
|
502
|
+
* (('note:RDBMSとFlightアダプターの間のシリアライズがボトルネックになりそうな気がするんだけど、RDBMSのプロセス内にFlightアダプターを実装するのかな。。。'))
|
503
|
+
|
504
|
+
= まとめ
|
505
|
+
|
506
|
+
* 大量データのやりとりは\n
|
507
|
+
シリアライズ・デシリアライズが遅い
|
508
|
+
* Apache Arrow Flightでそのコストをなくせる
|
509
|
+
* さらに高速に扱う仕組みもある
|
510
|
+
* 並列転送やストリーム処理
|
511
|
+
* 将来:UCXやFlight SQL
|
512
|
+
|
513
|
+
= 次のステップ
|
514
|
+
|
515
|
+
* もっと詳しく知りたくなったから\n
|
516
|
+
イベント・社内・…で紹介して!
|
517
|
+
* ((<URL:https://www.clear-code.com/contact/>))
|
518
|
+
* アンケートに答えてね!
|
519
|
+
* ⇗のQRコードあるいは⇓\n
|
520
|
+
(('note:((<URL:https://www.clear-code.com/surveys/db-tech-showcase-2021.html>))'))
|
521
|
+
|
522
|
+
# image
|
523
|
+
# src = images/survey-url.svg
|
524
|
+
# relative-width = 20
|
525
|
+
# relative-margin-right = -10
|
526
|
+
# align = right
|
527
|
+
# vertical-align = top
|
528
|
+
|
data/config.yaml
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
---
|
2
|
+
id: db-tech-showcase-2021
|
3
|
+
base_name: apache-arrow-flight
|
4
|
+
tags:
|
5
|
+
- rabbit
|
6
|
+
- dbts2021
|
7
|
+
- apache_arrow
|
8
|
+
presentation_date: 2021-11-17
|
9
|
+
presentation_start_time:
|
10
|
+
presentation_end_time:
|
11
|
+
version: 2021.11.17.0
|
12
|
+
licenses:
|
13
|
+
- CC-BY-SA-4.0
|
14
|
+
- Apache-2.0
|
15
|
+
slideshare_id: db-tech-showcase-2021
|
16
|
+
speaker_deck_id:
|
17
|
+
vimeo_id:
|
18
|
+
youtube_id:
|
19
|
+
width: 1920
|
20
|
+
height: 1080
|
21
|
+
source_code_uri: https://gitlab.com/ktou/rabbit-slide-kou-db-tech-showcase-2021
|
22
|
+
author:
|
23
|
+
markup_language: :rd
|
24
|
+
name: 須藤功平
|
25
|
+
email: kou@clear-code.com
|
26
|
+
rubygems_user: kou
|
27
|
+
slideshare_user: kou
|
28
|
+
speaker_deck_user:
|