Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Apache Arrow Flight - ビッグデータ用高速データ転送フレームワーク Powered by Rabbit 3.0.2
Apache Arrow Flight
ビッグデータ用高速データ転送フレームワーク
須藤功平
株式会社クリア...
Apache Arrow Flight - ビッグデータ用高速データ転送フレームワーク Powered by Rabbit 3.0.2
モチベーション
ビッグデータを
処理したい!
Apache Arrow Flight - ビッグデータ用高速データ転送フレームワーク Powered by Rabbit 3.0.2
ビッグデータ処理に必要なもの
大量データ:データがないと始まらない!
✓
速度:速くないと処理しきれない!
✓
Apache Arrow Flight - ビッグデータ用高速データ転送フレームワーク Powered by Rabbit 3.0.2
大量データの収集に必要なもの
データ収集ツール
例:ログ:Fluentd/Fluent Bit
✓
✓
スト...
Apache Arrow Flight - ビッグデータ用高速データ転送フレームワーク Powered by Rabbit 3.0.2
高速処理に必要なもの
高速な分散システム
1台では処理しきれない
✓
✓
高速なアルゴリズムとその実装
個々...
Apache Arrow Flight - ビッグデータ用高速データ転送フレームワーク Powered by Rabbit 3.0.2
今日注目すること
高速な分散システム
Apache Arrow Flight - ビッグデータ用高速データ転送フレームワーク Powered by Rabbit 3.0.2
高速な分散システムに必要なもの
効率のよいタスク管理
より速く処理が終わるようなリソース配分
✓
✓
効率の...
Apache Arrow Flight - ビッグデータ用高速データ転送フレームワーク Powered by Rabbit 3.0.2
大量データの交換コスト
Figure 2: Communication between a client a...
Apache Arrow Flight - ビッグデータ用高速データ転送フレームワーク Powered by Rabbit 3.0.2
大量データの交換コスト
ボトルネックになりやすい
シリアライズ・デシリアライズ
a.
ネットワーク帯域
b....
Apache Arrow Flight - ビッグデータ用高速データ転送フレームワーク Powered by Rabbit 3.0.2
解決策
Apache Arrow Flight
Apache Arrow Flight - ビッグデータ用高速データ転送フレームワーク Powered by Rabbit 3.0.2
Apache Arrow Flightと私
Apache ArrowプロジェクトのPMCメンバー
Apach...
Apache Arrow Flight - ビッグデータ用高速データ転送フレームワーク Powered by Rabbit 3.0.2
Apache Arrow Flight
gRPCベースのデータ転送フレームワーク
✓
ポイント
並列転送対応...
Apache Arrow Flight - ビッグデータ用高速データ転送フレームワーク Powered by Rabbit 3.0.2
簡単な使い方
https://arrow.apache.org/img/20191014_flight_si...
Apache Arrow Flight - ビッグデータ用高速データ転送フレームワーク Powered by Rabbit 3.0.2
GetFlightInfo
クライアント→サーバー
✓
データの取得方法を教えてもらう
サーバーはFligh...
Apache Arrow Flight - ビッグデータ用高速データ転送フレームワーク Powered by Rabbit 3.0.2
DoGet
クライアント→サーバー
✓
データを取得する
サーバーはレコードバッチをストリームで返す
✓
プ...
Apache Arrow Flight - ビッグデータ用高速データ転送フレームワーク Powered by Rabbit 3.0.2
Apache Arrow Flightが扱うデータ
カラム1 カラム2 カラム3
レコード1
レコード2
レ...
Apache Arrow Flight - ビッグデータ用高速データ転送フレームワーク Powered by Rabbit 3.0.2
レコードバッチストリーム
レコード1
レコード2
レコード3
レコード
バッチ1
レコード4
レコード5
レ...
Apache Arrow Flight - ビッグデータ用高速データ転送フレームワーク Powered by Rabbit 3.0.2
なぜストリームが重要か
大量データを準備ができた順に処理できる
全部準備ができるまで待たなくてよい
✓
リソ...
Apache Arrow Flight - ビッグデータ用高速データ転送フレームワーク Powered by Rabbit 3.0.2
ストリームの単位
カラム
レコード
a b c
1
2
3
値 値 値
値 値 値
値 値 値
カラム
レコ...
Apache Arrow Flight - ビッグデータ用高速データ転送フレームワーク Powered by Rabbit 3.0.2
レコードバッチと処理
カラム
レコード
a b c
1
2
3
値 値 値
値 値 値
値 値 値
カラム
...
Apache Arrow Flight - ビッグデータ用高速データ転送フレームワーク Powered by Rabbit 3.0.2
詳細
Apache Arrowフォーマットはなぜ速いのか Powered by Rabbit 3.0.1
A...
Apache Arrow Flight - ビッグデータ用高速データ転送フレームワーク Powered by Rabbit 3.0.2
高速な分散システムの実現方法
レコードバッチのストリーム
ここまでで説明したこと
待ち時間を減らせる
✓
受...
Apache Arrow Flight - ビッグデータ用高速データ転送フレームワーク Powered by Rabbit 3.0.2
スケールアウト構成例
https://arrow.apache.org/img/20191014_fligh...
Apache Arrow Flight - ビッグデータ用高速データ転送フレームワーク Powered by Rabbit 3.0.2
ポイント1:ムダな転送を回避可能
多くの分散システム
「コーディネーター」経由で通信
✓
ノード→コーディネ...
Apache Arrow Flight - ビッグデータ用高速データ転送フレームワーク Powered by Rabbit 3.0.2
ポイント2:並列転送可能
同時に複数ノードからデータ取得可能
データごとに異なるエンドポイントだから可能
✓...
Apache Arrow Flight - ビッグデータ用高速データ転送フレームワーク Powered by Rabbit 3.0.2
個々のデータ転送も速い
個々のデータ転送のボトルネック
シリアライズ・デシリアライズ
✓
✓
どうすれば速く...
Apache Arrow Flight - ビッグデータ用高速データ転送フレームワーク Powered by Rabbit 3.0.2
なにもしない?
そもそもなぜシリアライズが必要?
メモリー上のデータの配置と
通信時のデータの配置が違うから...
Apache Arrow Flight - ビッグデータ用高速データ転送フレームワーク Powered by Rabbit 3.0.2
Apache Arrowフォーマット
シリアライズ不要フォーマット
メモリー上で効率よくデータを扱える配置
...
Apache Arrow Flight - ビッグデータ用高速データ転送フレームワーク Powered by Rabbit 3.0.2
Apache Arrow Flightのまとめ
高速データ転送フレームワーク
並列転送対応
✓
ストリーム処...
Apache Arrow Flight - ビッグデータ用高速データ転送フレームワーク Powered by Rabbit 3.0.2
Apache Arrow Flightの利用事例
Apache Arrow
Ballista
Apache ...
Apache Arrow Flight - ビッグデータ用高速データ転送フレームワーク Powered by Rabbit 3.0.2
Apache Arrow Ballista
Rust実装の分散計算プラットフォーム
✓
データはApache...
Apache Arrow Flight - ビッグデータ用高速データ転送フレームワーク Powered by Rabbit 3.0.2
アーキテクチャー
Apache Arrow Flight
Apache Arrow Flight
Apach...
Apache Arrow Flight - ビッグデータ用高速データ転送フレームワーク Powered by Rabbit 3.0.2
Apache Arrow Ballistaでの使い方
DoGetだけ使っている
処理済みのパーティションを受...
Apache Arrow Flight - ビッグデータ用高速データ転送フレームワーク Powered by Rabbit 3.0.2
さらにApache Arrow Flight
利用可能なリクエスト
✓
ミドルウェア
✓
将来の展望
✓
Apache Arrow Flight - ビッグデータ用高速データ転送フレームワーク Powered by Rabbit 3.0.2
利用可能なリクエスト1
Handshake
認証
✓
✓
ListFlights
利用可能なデータの取得方法...
Apache Arrow Flight - ビッグデータ用高速データ転送フレームワーク Powered by Rabbit 3.0.2
利用可能なリクエスト2
GetSchema
指定したデータのスキーマを取得
✓
✓
DoGet:指定したデー...
Apache Arrow Flight - ビッグデータ用高速データ転送フレームワーク Powered by Rabbit 3.0.2
利用可能なリクエスト3
DoAction
任意の処理を実行
✓
普通のRPCなので素のgRPCでも十分
✓
...
Apache Arrow Flight - ビッグデータ用高速データ転送フレームワーク Powered by Rabbit 3.0.2
ミドルウェア
プラグインみたいなもの
サーバー側・クライアント側両方あり
✓
✓
利用例
認証機能
✓
分散...
Apache Arrow Flight - ビッグデータ用高速データ転送フレームワーク Powered by Rabbit 3.0.2
将来の展望1
gRPC以外もサポートするかも
https://issues.apache.org/jira/...
Apache Arrow Flight - ビッグデータ用高速データ転送フレームワーク Powered by Rabbit 3.0.2
将来の展望2
Apache Arrow Flight SQLの追加
https://issues.apach...
Apache Arrow Flight - ビッグデータ用高速データ転送フレームワーク Powered by Rabbit 3.0.2
まとめ
大量データのやりとりは
シリアライズ・デシリアライズが遅い
Apache Arrow Flightで...
Apache Arrow Flight - ビッグデータ用高速データ転送フレームワーク Powered by Rabbit 3.0.2
次のステップ
もっと詳しく知りたくなったから
イベント・社内・…で紹介して!
https://www.cle...
Upcoming SlideShare
Loading in …5
×

of

Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021 Slide 1 Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021 Slide 2 Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021 Slide 3 Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021 Slide 4 Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021 Slide 5 Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021 Slide 6 Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021 Slide 7 Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021 Slide 8 Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021 Slide 9 Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021 Slide 10 Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021 Slide 11 Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021 Slide 12 Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021 Slide 13 Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021 Slide 14 Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021 Slide 15 Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021 Slide 16 Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021 Slide 17 Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021 Slide 18 Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021 Slide 19 Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021 Slide 20 Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021 Slide 21 Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021 Slide 22 Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021 Slide 23 Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021 Slide 24 Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021 Slide 25 Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021 Slide 26 Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021 Slide 27 Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021 Slide 28 Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021 Slide 29 Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021 Slide 30 Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021 Slide 31 Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021 Slide 32 Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021 Slide 33 Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021 Slide 34 Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021 Slide 35 Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021 Slide 36 Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021 Slide 37 Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021 Slide 38 Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021 Slide 39 Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021 Slide 40 Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021 Slide 41 Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021 Slide 42
Upcoming SlideShare
What to Upload to SlideShare
Next
Download to read offline and view in fullscreen.

0 Likes

Share

Download to read offline

Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021

Download to read offline

ビッグデータは現実的な時間で処理できてこそ活きます。処理時間はデータ処理アルゴリズムの計算量だけで決まり…ません!適切なノードにデータを配置しないとそもそもデータ処理できませんが、大量ノードが協調するビッグデータ処理ではデータ移動コストを無視できません。Apache Arrow Flightを使えばネットワーク帯域限界まで高速にデータ転送できます。

このセッションではApache Arrow Flightの仕組みを説明します。また、分散計算プラットフォームApache Arrow BallistaがApache Arrow Flightをどのように利用しているかも紹介します。

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all
  • Be the first to like this

Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021

  1. 1. Apache Arrow Flight - ビッグデータ用高速データ転送フレームワーク Powered by Rabbit 3.0.2 Apache Arrow Flight ビッグデータ用高速データ転送フレームワーク 須藤功平 株式会社クリアコード db tech showcase 2021 2021-11-17
  2. 2. Apache Arrow Flight - ビッグデータ用高速データ転送フレームワーク Powered by Rabbit 3.0.2 モチベーション ビッグデータを 処理したい!
  3. 3. Apache Arrow Flight - ビッグデータ用高速データ転送フレームワーク Powered by Rabbit 3.0.2 ビッグデータ処理に必要なもの 大量データ:データがないと始まらない! ✓ 速度:速くないと処理しきれない! ✓
  4. 4. Apache Arrow Flight - ビッグデータ用高速データ転送フレームワーク Powered by Rabbit 3.0.2 大量データの収集に必要なもの データ収集ツール 例:ログ:Fluentd/Fluent Bit ✓ ✓ ストレージ 例:Amazon S3 ✓ ✓ 効率的なデータフォーマット トレードオフ:空間効率と時間効率 ✓ 例:CSVよりApache Parquet ✓ ✓
  5. 5. Apache Arrow Flight - ビッグデータ用高速データ転送フレームワーク Powered by Rabbit 3.0.2 高速処理に必要なもの 高速な分散システム 1台では処理しきれない ✓ ✓ 高速なアルゴリズムとその実装 個々の処理が速くなると全体も速くなる ✓ ✓
  6. 6. Apache Arrow Flight - ビッグデータ用高速データ転送フレームワーク Powered by Rabbit 3.0.2 今日注目すること 高速な分散システム
  7. 7. Apache Arrow Flight - ビッグデータ用高速データ転送フレームワーク Powered by Rabbit 3.0.2 高速な分散システムに必要なもの 効率のよいタスク管理 より速く処理が終わるようなリソース配分 ✓ ✓ 効率のよいデータ転送 ノード間でのデータ交換コストは無視できない ✓ ✓
  8. 8. Apache Arrow Flight - ビッグデータ用高速データ転送フレームワーク Powered by Rabbit 3.0.2 大量データの交換コスト Figure 2: Communication between a client and a server Don’t Hold My Data Hostage – A Case For Client Protocol Redesign Mark Raasveldt Centrum Wiskunde & Informatica Amsterdam, The Netherlands m.raasveldt@cwi.nl Hannes Mühleisen Centrum Wiskunde & Informatica Amsterdam, The Netherlands hannes@cwi.nl Netcat (10.25s) 170.9 170.9 170.9 189.6 189.6 189.6 629.9 629.9 629.9 221.2 221.2 221.2 686.5 686.5 686.5 101.3 101.3 101.3 391.3 391.3 391.3 202 202 202 MongoDB Hive MySQL+C MonetDB PostgreSQL DBMS X DB2 MySQL 0 200 400 600 Wall clock time (s) Operation Connection Query Execution RSS + Transfer Figure 1: Wall clock time for retrieving the lineitem table (SF10) over a loopback connection. The dashed line is the wall clock time for netcat to trans- fer a CSV of the data. https://hannes.muehleisen.org/p852-muehleisen.pdf
  9. 9. Apache Arrow Flight - ビッグデータ用高速データ転送フレームワーク Powered by Rabbit 3.0.2 大量データの交換コスト ボトルネックになりやすい シリアライズ・デシリアライズ a. ネットワーク帯域 b. ✓ 目指すところ メイン処理がボトルネック (メイン処理以外が十分速い) ✓ ✓
  10. 10. Apache Arrow Flight - ビッグデータ用高速データ転送フレームワーク Powered by Rabbit 3.0.2 解決策 Apache Arrow Flight
  11. 11. Apache Arrow Flight - ビッグデータ用高速データ転送フレームワーク Powered by Rabbit 3.0.2 Apache Arrow Flightと私 Apache ArrowプロジェクトのPMCメンバー Apache Arrow Flightも開発しているプロジェクト ✓ PMC:プロジェクト管理委員会 ✓ ✓ コミット数2位 ✓
  12. 12. Apache Arrow Flight - ビッグデータ用高速データ転送フレームワーク Powered by Rabbit 3.0.2 Apache Arrow Flight gRPCベースのデータ転送フレームワーク ✓ ポイント 並列転送対応 「効率のよいタスク管理」に有用 ✓ ✓ ストリーム処理対応 「効率のよいタスク管理」に有用 ✓ ✓ シリアライズ・デシリアライズがほぼ不要 「効率のよいデータ転送」に有用 ✓ ✓ ✓
  13. 13. Apache Arrow Flight - ビッグデータ用高速データ転送フレームワーク Powered by Rabbit 3.0.2 簡単な使い方 https://arrow.apache.org/img/20191014_flight_simple.png Apache License 2.0 - © 2016-2021 The Apache Software Foundation
  14. 14. Apache Arrow Flight - ビッグデータ用高速データ転送フレームワーク Powered by Rabbit 3.0.2 GetFlightInfo クライアント→サーバー ✓ データの取得方法を教えてもらう サーバーはFlightInfoを返す ✓ ✓ FlightInfoの中身 メタデータ:スキーマ・総レコード数… ✓ 複数エンドポイント: データは複数ヶ所に分散しているかもしれない! ✓ ✓
  15. 15. Apache Arrow Flight - ビッグデータ用高速データ転送フレームワーク Powered by Rabbit 3.0.2 DoGet クライアント→サーバー ✓ データを取得する サーバーはレコードバッチをストリームで返す ✓ プロトコルレベルではFlightDataと呼んでいる ✓ ✓ レコードバッチ データ全体のうちの一部のレコードの集まり ✓ ✓
  16. 16. Apache Arrow Flight - ビッグデータ用高速データ転送フレームワーク Powered by Rabbit 3.0.2 Apache Arrow Flightが扱うデータ カラム1 カラム2 カラム3 レコード1 レコード2 レコード3 レコード4 レコード5 レコード バッチ1 レコード バッチ2 型付きのテーブルデータ RDBMSで扱うようなデータ ✓ カラムごとに型がある ✓ すべてのレコードは同じカラム構成 ✓ ✓ レコードバッチ テーブルデータ内の連続したレコードの集まり ✓ ✓
  17. 17. Apache Arrow Flight - ビッグデータ用高速データ転送フレームワーク Powered by Rabbit 3.0.2 レコードバッチストリーム レコード1 レコード2 レコード3 レコード バッチ1 レコード4 レコード5 レコード バッチ2 クライアント サーバー
  18. 18. Apache Arrow Flight - ビッグデータ用高速データ転送フレームワーク Powered by Rabbit 3.0.2 なぜストリームが重要か 大量データを準備ができた順に処理できる 全部準備ができるまで待たなくてよい ✓ リソースを有効活用できる ✓ ✓ レコードバッチのストリームでいいの? レコードのストリーム方がいいんじゃない? ✓ ✓
  19. 19. Apache Arrow Flight - ビッグデータ用高速データ転送フレームワーク Powered by Rabbit 3.0.2 ストリームの単位 カラム レコード a b c 1 2 3 値 値 値 値 値 値 値 値 値 カラム レコード a b c 1 2 3 値 値 値 値 値 値 値 値 値 レコード バッチ 単位 レコード 単位 レコード レコード単位で処理できる ✓ データはレコード単位でまとめる ✓ ✓ レコードバッチ 複数レコードをまとめて処理できる ✓ データをカラム単位でまとめられる ✓ ✓
  20. 20. Apache Arrow Flight - ビッグデータ用高速データ転送フレームワーク Powered by Rabbit 3.0.2 レコードバッチと処理 カラム レコード a b c 1 2 3 値 値 値 値 値 値 値 値 値 カラム レコード a b c 1 2 3 値 値 値 値 値 値 値 値 値 レコード バッチ 単位 レコード 単位 複数レコードをまとめて処理 SIMDを活用すればレコード単位の処理より高速 ✓ ✓ カラム単位でまとまったデータ 分析処理が高速 ✓ ビッグデータ処理の多くは分析処理なはず ✓ ✓
  21. 21. Apache Arrow Flight - ビッグデータ用高速データ転送フレームワーク Powered by Rabbit 3.0.2 詳細 Apache Arrowフォーマットはなぜ速いのか Powered by Rabbit 3.0.1 Apache Arrowフォーマットは なぜ速いのか 須藤功平 株式会社クリアコード db tech showcase ONLINE 2020 2020-12-08 https://slide.rabbit-shocker.org/authors/kou/db-tech-showcase-online-2020/
  22. 22. Apache Arrow Flight - ビッグデータ用高速データ転送フレームワーク Powered by Rabbit 3.0.2 高速な分散システムの実現方法 レコードバッチのストリーム ここまでで説明したこと 待ち時間を減らせる ✓ 受け取ったデータを高速処理できる ✓ ✓ スケールアウト これから説明すること データを複数ノードで分散処理 ✓ それを効率的に扱う ✓ ✓
  23. 23. Apache Arrow Flight - ビッグデータ用高速データ転送フレームワーク Powered by Rabbit 3.0.2 スケールアウト構成例 https://arrow.apache.org/img/20191014_flight_complex.png Apache License 2.0 - © 2016-2021 The Apache Software Foundation
  24. 24. Apache Arrow Flight - ビッグデータ用高速データ転送フレームワーク Powered by Rabbit 3.0.2 ポイント1:ムダな転送を回避可能 多くの分散システム 「コーディネーター」経由で通信 ✓ ノード→コーディネーター→クライアント ✓ ✓ Apache Arrow Flight 直接クライアントがデータ取得可能 ✓ ノード→クライアント ✓ ✓
  25. 25. Apache Arrow Flight - ビッグデータ用高速データ転送フレームワーク Powered by Rabbit 3.0.2 ポイント2:並列転送可能 同時に複数ノードからデータ取得可能 データごとに異なるエンドポイントだから可能 ✓ ✓ ストリームなので各データを随時処理可能 ✓
  26. 26. Apache Arrow Flight - ビッグデータ用高速データ転送フレームワーク Powered by Rabbit 3.0.2 個々のデータ転送も速い 個々のデータ転送のボトルネック シリアライズ・デシリアライズ ✓ ✓ どうすれば速くできる? なにもしなきゃいいじゃん! ✓ ✓
  27. 27. Apache Arrow Flight - ビッグデータ用高速データ転送フレームワーク Powered by Rabbit 3.0.2 なにもしない? そもそもなぜシリアライズが必要? メモリー上のデータの配置と 通信時のデータの配置が違うから ✓ ✓ シリアライズしなくて済むには? メモリー上のデータの配置と 通信時のデータの配置を同じにすればいい! ✓ ✓
  28. 28. Apache Arrow Flight - ビッグデータ用高速データ転送フレームワーク Powered by Rabbit 3.0.2 Apache Arrowフォーマット シリアライズ不要フォーマット メモリー上で効率よくデータを扱える配置 ✓ データ交換時も↑と同じ配置を使う ✓ ✓ Apache Arrow Flightが扱うデータは Apache Arrowフォーマット 個々のデータ転送も速い! ✓ ✓
  29. 29. Apache Arrow Flight - ビッグデータ用高速データ転送フレームワーク Powered by Rabbit 3.0.2 Apache Arrow Flightのまとめ 高速データ転送フレームワーク 並列転送対応 ✓ ストリーム処理対応 ✓ シリアライズ・デシリアライズがほぼ不要 ✓ ✓ gRPCベース 既存のgRPCライブラリーでも接続可能 ✓ 専用ライブラリーあり:C, C++, C#, Go, Java, Python, R, Ruby, Rust ✓ ✓
  30. 30. Apache Arrow Flight - ビッグデータ用高速データ転送フレームワーク Powered by Rabbit 3.0.2 Apache Arrow Flightの利用事例 Apache Arrow Ballista Apache License 2.0 - © 2016-2021 The Apache Software Foundation
  31. 31. Apache Arrow Flight - ビッグデータ用高速データ転送フレームワーク Powered by Rabbit 3.0.2 Apache Arrow Ballista Rust実装の分散計算プラットフォーム ✓ データはApache Arrowフォーマット ✓ 通信はgRPCとApache Arrow Flight ✓
  32. 32. Apache Arrow Flight - ビッグデータ用高速データ転送フレームワーク Powered by Rabbit 3.0.2 アーキテクチャー Apache Arrow Flight Apache Arrow Flight Apache License 2.0 - © 2016-2021 The Apache Software Foundation
  33. 33. Apache Arrow Flight - ビッグデータ用高速データ転送フレームワーク Powered by Rabbit 3.0.2 Apache Arrow Ballistaでの使い方 DoGetだけ使っている 処理済みのパーティションを受け取る ✓ 大量データになりうる ✓ ✓ その他の通信は素のgRPC 各Executorへの処理の依頼など ✓ 大量データにはならない ✓ ✓
  34. 34. Apache Arrow Flight - ビッグデータ用高速データ転送フレームワーク Powered by Rabbit 3.0.2 さらにApache Arrow Flight 利用可能なリクエスト ✓ ミドルウェア ✓ 将来の展望 ✓
  35. 35. Apache Arrow Flight - ビッグデータ用高速データ転送フレームワーク Powered by Rabbit 3.0.2 利用可能なリクエスト1 Handshake 認証 ✓ ✓ ListFlights 利用可能なデータの取得方法一覧を取得 ✓ GetSchema/DoGetなどで使える ✓ ✓ GetFlightInfo 指定したデータの取得方法を取得 ✓ GetSchema/DoGetなどで使える ✓ ✓
  36. 36. Apache Arrow Flight - ビッグデータ用高速データ転送フレームワーク Powered by Rabbit 3.0.2 利用可能なリクエスト2 GetSchema 指定したデータのスキーマを取得 ✓ ✓ DoGet:指定したデータを取得 ✓ DoPut:データを送信 ✓ DoExchange:データを送受信 ✓
  37. 37. Apache Arrow Flight - ビッグデータ用高速データ転送フレームワーク Powered by Rabbit 3.0.2 利用可能なリクエスト3 DoAction 任意の処理を実行 ✓ 普通のRPCなので素のgRPCでも十分 ✓ ✓ ListActions 利用可能なアクション一覧を取得 ✓ ✓
  38. 38. Apache Arrow Flight - ビッグデータ用高速データ転送フレームワーク Powered by Rabbit 3.0.2 ミドルウェア プラグインみたいなもの サーバー側・クライアント側両方あり ✓ ✓ 利用例 認証機能 ✓ 分散トレーシング機能 ✓ ✓
  39. 39. Apache Arrow Flight - ビッグデータ用高速データ転送フレームワーク Powered by Rabbit 3.0.2 将来の展望1 gRPC以外もサポートするかも https://issues.apache.org/jira/browse/ARROW-13889 ✓ メーリングリストで議論中 ✓ ✓ 候補:UCX https://openucx.org/documentation/ RDMA/GPUなどハードウェアも活用した高速通信 ✓ ✓
  40. 40. Apache Arrow Flight - ビッグデータ用高速データ転送フレームワーク Powered by Rabbit 3.0.2 将来の展望2 Apache Arrow Flight SQLの追加 https://issues.apache.org/jira/browse/ARROW-9825 ✓ Apache Arrow Flight経由で各種RDBMSとやりとり ✓ ✓ GetFlightInfoでSQL送信 ✓ DoGetで結果を受信 RDBMSとFlightアダプターの間のシリアライズがボトルネックになりそうな気 がするんだけど、RDBMSのプロセス内にFlightアダプターを実装するのか な。。。 ✓ ✓
  41. 41. Apache Arrow Flight - ビッグデータ用高速データ転送フレームワーク Powered by Rabbit 3.0.2 まとめ 大量データのやりとりは シリアライズ・デシリアライズが遅い Apache Arrow Flightでそのコストをなくせる ✓ ✓ さらに高速に扱う仕組みもある 並列転送やストリーム処理 ✓ 将来:UCXやFlight SQL ✓ ✓
  42. 42. Apache Arrow Flight - ビッグデータ用高速データ転送フレームワーク Powered by Rabbit 3.0.2 次のステップ もっと詳しく知りたくなったから イベント・社内・…で紹介して! https://www.clear-code.com/contact/ ✓ ✓ アンケートに答えてね! ⇗のQRコードあるいは⇓ https://www.clear-code.com/surveys/db-tech-showcase-2021.html ✓ ✓

ビッグデータは現実的な時間で処理できてこそ活きます。処理時間はデータ処理アルゴリズムの計算量だけで決まり…ません!適切なノードにデータを配置しないとそもそもデータ処理できませんが、大量ノードが協調するビッグデータ処理ではデータ移動コストを無視できません。Apache Arrow Flightを使えばネットワーク帯域限界まで高速にデータ転送できます。 このセッションではApache Arrow Flightの仕組みを説明します。また、分散計算プラットフォームApache Arrow BallistaがApache Arrow Flightをどのように利用しているかも紹介します。

Views

Total views

71

On Slideshare

0

From embeds

0

Number of embeds

0

Actions

Downloads

0

Shares

0

Comments

0

Likes

0

×