SlideShare a Scribd company logo

20190314 PGStrom Arrow_Fdw

Kohei KaiGai
Kohei KaiGai
Kohei KaiGaiSoftware Architect, Intrapreneur at NEC

Hadoop&Spark Conference Japan 2019発表資料 Arrow_Fdw ~PostgreSQLで大量のログデータを処理するためのハードウェア最適化アプローチ~

20190314 PGStrom Arrow_Fdw

1 of 49
Download to read offline
Arrow_Fdw
PostgreSQLで大量のログデータを処理するための
ハードウェア最適化アプローチ
HeteroDB,Inc
Chief Architect & CEO
KaiGai Kohei <kaigai@heterodb.com>
会社&自己紹介(1/2)
▌Who am I?
 名前: 海外 浩平(かいがい こうへい)
 所属: HeteroDB,Inc
 バックグラウンド
 Linux kernel(2003~; SELinux、JFFS2など)
 PostgreSQL(2006~; security、FDW、CustomScanなど)
 PG-Strom(2012~)
 IPA未踏ソフトウェア(2006年度、2017年度)
▌about HeteroDB
 商号 ヘテロDB株式会社
 創業 2017年7月4日
 拠点 品川区西大井1-1-2-206
 事業内容 高速データ処理製品の販売
GPU&DB領域の技術コンサルティング
Hadoop / Spark Conference Japan 2019 - Arrow_Fdw2
会社&自己紹介(2/2)
どちらかというと、
こっち側の人間
Hadoop / Spark Conference Japan 2019 - Arrow_Fdw3
本日のアジェンダ
▌PG-Stromとは?
▌Run faster, beyond the limitation
▌Pg2Arrow
▌Arrow_Fdw
▌今後のロードマップ
Hadoop / Spark Conference Japan 2019 - Arrow_Fdw4
PG-Stromとは?
Hadoop / Spark Conference Japan 2019 - Arrow_Fdw5
GPU CPU
モデル
NVIDIA
Tesla V100
Intel Xeon
Platinum 8180
世代 Volta Skylake
発表 Q2-2017 Q3-2017
トランジスタ数 21billion 8.0billion
コア数
5120
(simple)
28
(functional)
動作クロック
1.280GHz
~1.380GHz
2.50GHz
~3.80GHz
理論性能値
(FP64)
7 TFLOPS
2.2TFLOPS
(with AVX-512)
RAMサイズ 32GB (HBM2) max 768GB (DDR4)
メモリ帯域 900GB/s 119GB/s
消費電力 250W 205W
製造プロセ
ス
12nm 14nm
PG-Strom: GPUの持つ数百~数千コアと広帯域メモリを利用して、
SQLワークロードを高速化するPostgreSQL向け拡張モジュール
App
GPU
off-loading
 SQLからGPUプログラムを自動生成し、
透過的な高速化を実現
 他のGPU-DB製品と異なり、ストレージと
GPUの連携に注力(SSD-to-GPU Direct SQL)
 使い慣れたPostgreSQLの開発・運用スキルを
そのまま引き継ぐことができる。
PostgreSQLの共通インフラ
PG-Stromの構成要素
Hadoop / Spark Conference Japan 2019 - Arrow_Fdw6
SQL Parser
Query
Optimizer
Query
Executor
Storage
PG-Strom
CustomScan
Interface
Database Applications
Storage
Manager
Transaction
Manager
Parallel
Workers
【ビッグデータ処理の高速化】
 SSD-to-GPUダイレクトSQL実行
 JOIN+GROUP BY Combined kernel
 列指向ファイルマッピング
(Arrow_Fdw)
 NVME-over-Fabric対応
【基本機能】
• SQL to GPUプログラムジェネレータ
• GPUコード実行時コンパイラ
• GPUカーネルの非同期並列実行
【アナリティクスの高速化】
 GPUメモリストア (Gstore_Fdw)
 PL/CUDA ユーザ定義関数
 Pythonとのデータ交換
 Microsoft Azure(クラウド対応)
共通のSQLクエリ
共通のデータ構造
Ad

Recommended

マルチテナント Hadoop クラスタのためのモニタリング Best Practice
マルチテナント Hadoop クラスタのためのモニタリング Best Practiceマルチテナント Hadoop クラスタのためのモニタリング Best Practice
マルチテナント Hadoop クラスタのためのモニタリング Best PracticeHadoop / Spark Conference Japan
 
HDFS Supportaiblity Improvements
HDFS Supportaiblity ImprovementsHDFS Supportaiblity Improvements
HDFS Supportaiblity ImprovementsCloudera Japan
 
Apache Kuduは何がそんなに「速い」DBなのか? #dbts2017
Apache Kuduは何がそんなに「速い」DBなのか? #dbts2017Apache Kuduは何がそんなに「速い」DBなのか? #dbts2017
Apache Kuduは何がそんなに「速い」DBなのか? #dbts2017Cloudera Japan
 
機械学習の定番プラットフォームSparkの紹介
機械学習の定番プラットフォームSparkの紹介機械学習の定番プラットフォームSparkの紹介
機械学習の定番プラットフォームSparkの紹介Cloudera Japan
 
最新版Hadoopクラスタを運用して得られたもの
最新版Hadoopクラスタを運用して得られたもの最新版Hadoopクラスタを運用して得られたもの
最新版Hadoopクラスタを運用して得られたものcyberagent
 
CDHの歴史とCDH5新機能概要 #at_tokuben
CDHの歴史とCDH5新機能概要 #at_tokubenCDHの歴史とCDH5新機能概要 #at_tokuben
CDHの歴史とCDH5新機能概要 #at_tokubenCloudera Japan
 
Apache Hadoop YARNとマルチテナントにおけるリソース管理
Apache Hadoop YARNとマルチテナントにおけるリソース管理Apache Hadoop YARNとマルチテナントにおけるリソース管理
Apache Hadoop YARNとマルチテナントにおけるリソース管理Cloudera Japan
 
Yahoo! JAPANのOracle構成-2017年版
Yahoo! JAPANのOracle構成-2017年版Yahoo! JAPANのOracle構成-2017年版
Yahoo! JAPANのOracle構成-2017年版Makoto Sato
 

More Related Content

What's hot

Hadoop Conference Japan_2016 セッション「顧客事例から学んだ、 エンタープライズでの "マジな"Hadoop導入の勘所」
Hadoop Conference Japan_2016 セッション「顧客事例から学んだ、 エンタープライズでの "マジな"Hadoop導入の勘所」Hadoop Conference Japan_2016 セッション「顧客事例から学んだ、 エンタープライズでの "マジな"Hadoop導入の勘所」
Hadoop Conference Japan_2016 セッション「顧客事例から学んだ、 エンタープライズでの "マジな"Hadoop導入の勘所」オラクルエンジニア通信
 
Apache Impalaパフォーマンスチューニング #dbts2018
Apache Impalaパフォーマンスチューニング #dbts2018Apache Impalaパフォーマンスチューニング #dbts2018
Apache Impalaパフォーマンスチューニング #dbts2018Cloudera Japan
 
今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise
今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise
今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC EnterpriseYusukeKuramata
 
HAWQをCDHで動かしてみた
HAWQをCDHで動かしてみたHAWQをCDHで動かしてみた
HAWQをCDHで動かしてみたadachij2002
 
Impala + Kudu を用いたデータウェアハウス構築の勘所 (仮)
Impala + Kudu を用いたデータウェアハウス構築の勘所 (仮)Impala + Kudu を用いたデータウェアハウス構築の勘所 (仮)
Impala + Kudu を用いたデータウェアハウス構築の勘所 (仮)Cloudera Japan
 
SQL on Hadoop 比較検証 【2014月11日における検証レポート】
SQL on Hadoop 比較検証 【2014月11日における検証レポート】SQL on Hadoop 比較検証 【2014月11日における検証レポート】
SQL on Hadoop 比較検証 【2014月11日における検証レポート】NTT DATA OSS Professional Services
 
ポスト・ラムダアーキテクチャの切り札? Apache Hudi(NTTデータ テクノロジーカンファレンス 2020 発表資料)
ポスト・ラムダアーキテクチャの切り札? Apache Hudi(NTTデータ テクノロジーカンファレンス 2020 発表資料)ポスト・ラムダアーキテクチャの切り札? Apache Hudi(NTTデータ テクノロジーカンファレンス 2020 発表資料)
ポスト・ラムダアーキテクチャの切り札? Apache Hudi(NTTデータ テクノロジーカンファレンス 2020 発表資料)NTT DATA Technology & Innovation
 
HiveとImpalaのおいしいとこ取り
HiveとImpalaのおいしいとこ取りHiveとImpalaのおいしいとこ取り
HiveとImpalaのおいしいとこ取りYukinori Suda
 
Apache Hadoop の現在と将来(Hadoop / Spark Conference Japan 2016 キーノート講演資料)
Apache Hadoop の現在と将来(Hadoop / Spark Conference Japan 2016 キーノート講演資料)Apache Hadoop の現在と将来(Hadoop / Spark Conference Japan 2016 キーノート講演資料)
Apache Hadoop の現在と将来(Hadoop / Spark Conference Japan 2016 キーノート講演資料)Hadoop / Spark Conference Japan
 
(LT)Spark and Cassandra
(LT)Spark and Cassandra(LT)Spark and Cassandra
(LT)Spark and Cassandradatastaxjp
 
Sparkパフォーマンス検証
Sparkパフォーマンス検証Sparkパフォーマンス検証
Sparkパフォーマンス検証BrainPad Inc.
 
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~NTT DATA OSS Professional Services
 
マルチテナント化に向けたHadoopの最新セキュリティ事情 #hcj2014
マルチテナント化に向けたHadoopの最新セキュリティ事情 #hcj2014マルチテナント化に向けたHadoopの最新セキュリティ事情 #hcj2014
マルチテナント化に向けたHadoopの最新セキュリティ事情 #hcj2014Cloudera Japan
 
[db tech showcase Tokyo 2015] B34:データの仮想化を具体化するIBMのロジカルデータウェアハウス by 日本アイ・ビー・エ...
[db tech showcase Tokyo 2015] B34:データの仮想化を具体化するIBMのロジカルデータウェアハウス by 日本アイ・ビー・エ...[db tech showcase Tokyo 2015] B34:データの仮想化を具体化するIBMのロジカルデータウェアハウス by 日本アイ・ビー・エ...
[db tech showcase Tokyo 2015] B34:データの仮想化を具体化するIBMのロジカルデータウェアハウス by 日本アイ・ビー・エ...Insight Technology, Inc.
 
サポートメンバは見た! Hadoopバグワースト10 (adoop / Spark Conference Japan 2016 ライトニングトーク発表資料)
サポートメンバは見た! Hadoopバグワースト10 (adoop / Spark Conference Japan 2016 ライトニングトーク発表資料)サポートメンバは見た! Hadoopバグワースト10 (adoop / Spark Conference Japan 2016 ライトニングトーク発表資料)
サポートメンバは見た! Hadoopバグワースト10 (adoop / Spark Conference Japan 2016 ライトニングトーク発表資料)NTT DATA OSS Professional Services
 
HBase Across the World #LINE_DM
HBase Across the World #LINE_DMHBase Across the World #LINE_DM
HBase Across the World #LINE_DMCloudera Japan
 

What's hot (20)

Hadoop Conference Japan_2016 セッション「顧客事例から学んだ、 エンタープライズでの "マジな"Hadoop導入の勘所」
Hadoop Conference Japan_2016 セッション「顧客事例から学んだ、 エンタープライズでの "マジな"Hadoop導入の勘所」Hadoop Conference Japan_2016 セッション「顧客事例から学んだ、 エンタープライズでの "マジな"Hadoop導入の勘所」
Hadoop Conference Japan_2016 セッション「顧客事例から学んだ、 エンタープライズでの "マジな"Hadoop導入の勘所」
 
Apache Impalaパフォーマンスチューニング #dbts2018
Apache Impalaパフォーマンスチューニング #dbts2018Apache Impalaパフォーマンスチューニング #dbts2018
Apache Impalaパフォーマンスチューニング #dbts2018
 
今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise
今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise
今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise
 
HAWQをCDHで動かしてみた
HAWQをCDHで動かしてみたHAWQをCDHで動かしてみた
HAWQをCDHで動かしてみた
 
Impala + Kudu を用いたデータウェアハウス構築の勘所 (仮)
Impala + Kudu を用いたデータウェアハウス構築の勘所 (仮)Impala + Kudu を用いたデータウェアハウス構築の勘所 (仮)
Impala + Kudu を用いたデータウェアハウス構築の勘所 (仮)
 
SQL on Hadoop 比較検証 【2014月11日における検証レポート】
SQL on Hadoop 比較検証 【2014月11日における検証レポート】SQL on Hadoop 比較検証 【2014月11日における検証レポート】
SQL on Hadoop 比較検証 【2014月11日における検証レポート】
 
ポスト・ラムダアーキテクチャの切り札? Apache Hudi(NTTデータ テクノロジーカンファレンス 2020 発表資料)
ポスト・ラムダアーキテクチャの切り札? Apache Hudi(NTTデータ テクノロジーカンファレンス 2020 発表資料)ポスト・ラムダアーキテクチャの切り札? Apache Hudi(NTTデータ テクノロジーカンファレンス 2020 発表資料)
ポスト・ラムダアーキテクチャの切り札? Apache Hudi(NTTデータ テクノロジーカンファレンス 2020 発表資料)
 
HiveとImpalaのおいしいとこ取り
HiveとImpalaのおいしいとこ取りHiveとImpalaのおいしいとこ取り
HiveとImpalaのおいしいとこ取り
 
Apache Hadoop の現在と将来(Hadoop / Spark Conference Japan 2016 キーノート講演資料)
Apache Hadoop の現在と将来(Hadoop / Spark Conference Japan 2016 キーノート講演資料)Apache Hadoop の現在と将来(Hadoop / Spark Conference Japan 2016 キーノート講演資料)
Apache Hadoop の現在と将来(Hadoop / Spark Conference Japan 2016 キーノート講演資料)
 
(LT)Spark and Cassandra
(LT)Spark and Cassandra(LT)Spark and Cassandra
(LT)Spark and Cassandra
 
オラクルのHadoopソリューションご紹介
オラクルのHadoopソリューションご紹介オラクルのHadoopソリューションご紹介
オラクルのHadoopソリューションご紹介
 
Sparkパフォーマンス検証
Sparkパフォーマンス検証Sparkパフォーマンス検証
Sparkパフォーマンス検証
 
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
 
マルチテナント化に向けたHadoopの最新セキュリティ事情 #hcj2014
マルチテナント化に向けたHadoopの最新セキュリティ事情 #hcj2014マルチテナント化に向けたHadoopの最新セキュリティ事情 #hcj2014
マルチテナント化に向けたHadoopの最新セキュリティ事情 #hcj2014
 
[db tech showcase Tokyo 2015] B34:データの仮想化を具体化するIBMのロジカルデータウェアハウス by 日本アイ・ビー・エ...
[db tech showcase Tokyo 2015] B34:データの仮想化を具体化するIBMのロジカルデータウェアハウス by 日本アイ・ビー・エ...[db tech showcase Tokyo 2015] B34:データの仮想化を具体化するIBMのロジカルデータウェアハウス by 日本アイ・ビー・エ...
[db tech showcase Tokyo 2015] B34:データの仮想化を具体化するIBMのロジカルデータウェアハウス by 日本アイ・ビー・エ...
 
Apache Hadoopの未来 3系になって何が変わるのか?
Apache Hadoopの未来 3系になって何が変わるのか?Apache Hadoopの未来 3系になって何が変わるのか?
Apache Hadoopの未来 3系になって何が変わるのか?
 
Hadoopエコシステムのデータストア振り返り
Hadoopエコシステムのデータストア振り返りHadoopエコシステムのデータストア振り返り
Hadoopエコシステムのデータストア振り返り
 
サポートメンバは見た! Hadoopバグワースト10 (adoop / Spark Conference Japan 2016 ライトニングトーク発表資料)
サポートメンバは見た! Hadoopバグワースト10 (adoop / Spark Conference Japan 2016 ライトニングトーク発表資料)サポートメンバは見た! Hadoopバグワースト10 (adoop / Spark Conference Japan 2016 ライトニングトーク発表資料)
サポートメンバは見た! Hadoopバグワースト10 (adoop / Spark Conference Japan 2016 ライトニングトーク発表資料)
 
Hadoop ecosystem NTTDATA osc15tk
Hadoop ecosystem NTTDATA osc15tkHadoop ecosystem NTTDATA osc15tk
Hadoop ecosystem NTTDATA osc15tk
 
HBase Across the World #LINE_DM
HBase Across the World #LINE_DMHBase Across the World #LINE_DM
HBase Across the World #LINE_DM
 

Similar to 20190314 PGStrom Arrow_Fdw

20190925_DBTS_PGStrom
20190925_DBTS_PGStrom20190925_DBTS_PGStrom
20190925_DBTS_PGStromKohei KaiGai
 
20191211_Apache_Arrow_Meetup_Tokyo
20191211_Apache_Arrow_Meetup_Tokyo20191211_Apache_Arrow_Meetup_Tokyo
20191211_Apache_Arrow_Meetup_TokyoKohei KaiGai
 
20191115-PGconf.Japan
20191115-PGconf.Japan20191115-PGconf.Japan
20191115-PGconf.JapanKohei KaiGai
 
20190516_DLC10_PGStrom
20190516_DLC10_PGStrom20190516_DLC10_PGStrom
20190516_DLC10_PGStromKohei KaiGai
 
20180217 FPGA Extreme Computing #10
20180217 FPGA Extreme Computing #1020180217 FPGA Extreme Computing #10
20180217 FPGA Extreme Computing #10Kohei KaiGai
 
GPUとSSDがPostgreSQLを加速する~クエリ処理スループット10GB/sへの挑戦~ [DB Tech Showcase Tokyo/2017]
GPUとSSDがPostgreSQLを加速する~クエリ処理スループット10GB/sへの挑戦~ [DB Tech Showcase Tokyo/2017]GPUとSSDがPostgreSQLを加速する~クエリ処理スループット10GB/sへの挑戦~ [DB Tech Showcase Tokyo/2017]
GPUとSSDがPostgreSQLを加速する~クエリ処理スループット10GB/sへの挑戦~ [DB Tech Showcase Tokyo/2017]Kohei KaiGai
 
SSDとGPUがPostgreSQLを加速する【OSC.Enterprise】
SSDとGPUがPostgreSQLを加速する【OSC.Enterprise】SSDとGPUがPostgreSQLを加速する【OSC.Enterprise】
SSDとGPUがPostgreSQLを加速する【OSC.Enterprise】Kohei KaiGai
 
20210731_OSC_Kyoto_PGStrom3.0
20210731_OSC_Kyoto_PGStrom3.020210731_OSC_Kyoto_PGStrom3.0
20210731_OSC_Kyoto_PGStrom3.0Kohei KaiGai
 
20171212_GTCJapan_InceptionSummt_HeteroDB
20171212_GTCJapan_InceptionSummt_HeteroDB20171212_GTCJapan_InceptionSummt_HeteroDB
20171212_GTCJapan_InceptionSummt_HeteroDBKohei KaiGai
 
FPGAによる大規模データ処理の高速化
FPGAによる大規模データ処理の高速化FPGAによる大規模データ処理の高速化
FPGAによる大規模データ処理の高速化Kazunori Sato
 
[de:code 2019 振り返り Night!] Data Platform
[de:code 2019 振り返り Night!] Data Platform[de:code 2019 振り返り Night!] Data Platform
[de:code 2019 振り返り Night!] Data PlatformNaoki (Neo) SATO
 
pgconfasia2016 lt ssd2gpu
pgconfasia2016 lt ssd2gpupgconfasia2016 lt ssd2gpu
pgconfasia2016 lt ssd2gpuKohei KaiGai
 
20171220_hbstudy80_pgstrom
20171220_hbstudy80_pgstrom20171220_hbstudy80_pgstrom
20171220_hbstudy80_pgstromKohei KaiGai
 
D22 目覚めよDBエンジニア 〜世界最速カラムナーデータベースは本物だ!〜 by Koji Shinkubo
D22 目覚めよDBエンジニア 〜世界最速カラムナーデータベースは本物だ!〜 by Koji ShinkuboD22 目覚めよDBエンジニア 〜世界最速カラムナーデータベースは本物だ!〜 by Koji Shinkubo
D22 目覚めよDBエンジニア 〜世界最速カラムナーデータベースは本物だ!〜 by Koji ShinkuboInsight Technology, Inc.
 
20160220 MSのビッグデータ分析基盤 - データマイニング+WEB@東京
20160220 MSのビッグデータ分析基盤 - データマイニング+WEB@東京20160220 MSのビッグデータ分析基盤 - データマイニング+WEB@東京
20160220 MSのビッグデータ分析基盤 - データマイニング+WEB@東京Koichiro Sasaki
 
[db tech showcase Tokyo 2017] A15: レプリケーションを使用したデータ分析基盤構築のキモ(事例)by 株式会社インサイトテ...
[db tech showcase Tokyo 2017] A15: レプリケーションを使用したデータ分析基盤構築のキモ(事例)by 株式会社インサイトテ...[db tech showcase Tokyo 2017] A15: レプリケーションを使用したデータ分析基盤構築のキモ(事例)by 株式会社インサイトテ...
[db tech showcase Tokyo 2017] A15: レプリケーションを使用したデータ分析基盤構築のキモ(事例)by 株式会社インサイトテ...Insight Technology, Inc.
 

Similar to 20190314 PGStrom Arrow_Fdw (20)

20190925_DBTS_PGStrom
20190925_DBTS_PGStrom20190925_DBTS_PGStrom
20190925_DBTS_PGStrom
 
20191211_Apache_Arrow_Meetup_Tokyo
20191211_Apache_Arrow_Meetup_Tokyo20191211_Apache_Arrow_Meetup_Tokyo
20191211_Apache_Arrow_Meetup_Tokyo
 
20191115-PGconf.Japan
20191115-PGconf.Japan20191115-PGconf.Japan
20191115-PGconf.Japan
 
20190516_DLC10_PGStrom
20190516_DLC10_PGStrom20190516_DLC10_PGStrom
20190516_DLC10_PGStrom
 
20180217 FPGA Extreme Computing #10
20180217 FPGA Extreme Computing #1020180217 FPGA Extreme Computing #10
20180217 FPGA Extreme Computing #10
 
GPUとSSDがPostgreSQLを加速する~クエリ処理スループット10GB/sへの挑戦~ [DB Tech Showcase Tokyo/2017]
GPUとSSDがPostgreSQLを加速する~クエリ処理スループット10GB/sへの挑戦~ [DB Tech Showcase Tokyo/2017]GPUとSSDがPostgreSQLを加速する~クエリ処理スループット10GB/sへの挑戦~ [DB Tech Showcase Tokyo/2017]
GPUとSSDがPostgreSQLを加速する~クエリ処理スループット10GB/sへの挑戦~ [DB Tech Showcase Tokyo/2017]
 
SSDとGPUがPostgreSQLを加速する【OSC.Enterprise】
SSDとGPUがPostgreSQLを加速する【OSC.Enterprise】SSDとGPUがPostgreSQLを加速する【OSC.Enterprise】
SSDとGPUがPostgreSQLを加速する【OSC.Enterprise】
 
20210731_OSC_Kyoto_PGStrom3.0
20210731_OSC_Kyoto_PGStrom3.020210731_OSC_Kyoto_PGStrom3.0
20210731_OSC_Kyoto_PGStrom3.0
 
AI・HPC・ビッグデータで利用される分散ファイルシステムを知る
AI・HPC・ビッグデータで利用される分散ファイルシステムを知るAI・HPC・ビッグデータで利用される分散ファイルシステムを知る
AI・HPC・ビッグデータで利用される分散ファイルシステムを知る
 
20171212_GTCJapan_InceptionSummt_HeteroDB
20171212_GTCJapan_InceptionSummt_HeteroDB20171212_GTCJapan_InceptionSummt_HeteroDB
20171212_GTCJapan_InceptionSummt_HeteroDB
 
Apache spark 2.3 and beyond
Apache spark 2.3 and beyondApache spark 2.3 and beyond
Apache spark 2.3 and beyond
 
FPGAによる大規模データ処理の高速化
FPGAによる大規模データ処理の高速化FPGAによる大規模データ処理の高速化
FPGAによる大規模データ処理の高速化
 
0151209 Oracle DDD OracleとHadoop連携の勘所
0151209 Oracle DDD OracleとHadoop連携の勘所0151209 Oracle DDD OracleとHadoop連携の勘所
0151209 Oracle DDD OracleとHadoop連携の勘所
 
[de:code 2019 振り返り Night!] Data Platform
[de:code 2019 振り返り Night!] Data Platform[de:code 2019 振り返り Night!] Data Platform
[de:code 2019 振り返り Night!] Data Platform
 
pgconfasia2016 lt ssd2gpu
pgconfasia2016 lt ssd2gpupgconfasia2016 lt ssd2gpu
pgconfasia2016 lt ssd2gpu
 
Hadoop, NoSQL, GlusterFSの概要
Hadoop, NoSQL, GlusterFSの概要Hadoop, NoSQL, GlusterFSの概要
Hadoop, NoSQL, GlusterFSの概要
 
20171220_hbstudy80_pgstrom
20171220_hbstudy80_pgstrom20171220_hbstudy80_pgstrom
20171220_hbstudy80_pgstrom
 
D22 目覚めよDBエンジニア 〜世界最速カラムナーデータベースは本物だ!〜 by Koji Shinkubo
D22 目覚めよDBエンジニア 〜世界最速カラムナーデータベースは本物だ!〜 by Koji ShinkuboD22 目覚めよDBエンジニア 〜世界最速カラムナーデータベースは本物だ!〜 by Koji Shinkubo
D22 目覚めよDBエンジニア 〜世界最速カラムナーデータベースは本物だ!〜 by Koji Shinkubo
 
20160220 MSのビッグデータ分析基盤 - データマイニング+WEB@東京
20160220 MSのビッグデータ分析基盤 - データマイニング+WEB@東京20160220 MSのビッグデータ分析基盤 - データマイニング+WEB@東京
20160220 MSのビッグデータ分析基盤 - データマイニング+WEB@東京
 
[db tech showcase Tokyo 2017] A15: レプリケーションを使用したデータ分析基盤構築のキモ(事例)by 株式会社インサイトテ...
[db tech showcase Tokyo 2017] A15: レプリケーションを使用したデータ分析基盤構築のキモ(事例)by 株式会社インサイトテ...[db tech showcase Tokyo 2017] A15: レプリケーションを使用したデータ分析基盤構築のキモ(事例)by 株式会社インサイトテ...
[db tech showcase Tokyo 2017] A15: レプリケーションを使用したデータ分析基盤構築のキモ(事例)by 株式会社インサイトテ...
 

More from Kohei KaiGai

20221116_DBTS_PGStrom_History
20221116_DBTS_PGStrom_History20221116_DBTS_PGStrom_History
20221116_DBTS_PGStrom_HistoryKohei KaiGai
 
20221111_JPUG_CustomScan_API
20221111_JPUG_CustomScan_API20221111_JPUG_CustomScan_API
20221111_JPUG_CustomScan_APIKohei KaiGai
 
20211112_jpugcon_gpu_and_arrow
20211112_jpugcon_gpu_and_arrow20211112_jpugcon_gpu_and_arrow
20211112_jpugcon_gpu_and_arrowKohei KaiGai
 
20210928_pgunconf_hll_count
20210928_pgunconf_hll_count20210928_pgunconf_hll_count
20210928_pgunconf_hll_countKohei KaiGai
 
20210511_PGStrom_GpuCache
20210511_PGStrom_GpuCache20210511_PGStrom_GpuCache
20210511_PGStrom_GpuCacheKohei KaiGai
 
20210301_PGconf_Online_GPU_PostGIS_GiST_Index
20210301_PGconf_Online_GPU_PostGIS_GiST_Index20210301_PGconf_Online_GPU_PostGIS_GiST_Index
20210301_PGconf_Online_GPU_PostGIS_GiST_IndexKohei KaiGai
 
20201128_OSC_Fukuoka_Online_GPUPostGIS
20201128_OSC_Fukuoka_Online_GPUPostGIS20201128_OSC_Fukuoka_Online_GPUPostGIS
20201128_OSC_Fukuoka_Online_GPUPostGISKohei KaiGai
 
20201113_PGconf_Japan_GPU_PostGIS
20201113_PGconf_Japan_GPU_PostGIS20201113_PGconf_Japan_GPU_PostGIS
20201113_PGconf_Japan_GPU_PostGISKohei KaiGai
 
20201006_PGconf_Online_Large_Data_Processing
20201006_PGconf_Online_Large_Data_Processing20201006_PGconf_Online_Large_Data_Processing
20201006_PGconf_Online_Large_Data_ProcessingKohei KaiGai
 
20200828_OSCKyoto_Online
20200828_OSCKyoto_Online20200828_OSCKyoto_Online
20200828_OSCKyoto_OnlineKohei KaiGai
 
20200806_PGStrom_PostGIS_GstoreFdw
20200806_PGStrom_PostGIS_GstoreFdw20200806_PGStrom_PostGIS_GstoreFdw
20200806_PGStrom_PostGIS_GstoreFdwKohei KaiGai
 
20200424_Writable_Arrow_Fdw
20200424_Writable_Arrow_Fdw20200424_Writable_Arrow_Fdw
20200424_Writable_Arrow_FdwKohei KaiGai
 
20190926_Try_RHEL8_NVMEoF_Beta
20190926_Try_RHEL8_NVMEoF_Beta20190926_Try_RHEL8_NVMEoF_Beta
20190926_Try_RHEL8_NVMEoF_BetaKohei KaiGai
 
20190909_PGconf.ASIA_KaiGai
20190909_PGconf.ASIA_KaiGai20190909_PGconf.ASIA_KaiGai
20190909_PGconf.ASIA_KaiGaiKohei KaiGai
 
20190418_PGStrom_on_ArrowFdw
20190418_PGStrom_on_ArrowFdw20190418_PGStrom_on_ArrowFdw
20190418_PGStrom_on_ArrowFdwKohei KaiGai
 
20181212 - PGconfASIA - LT - English
20181212 - PGconfASIA - LT - English20181212 - PGconfASIA - LT - English
20181212 - PGconfASIA - LT - EnglishKohei KaiGai
 
20181212 - PGconf.ASIA - LT
20181212 - PGconf.ASIA - LT20181212 - PGconf.ASIA - LT
20181212 - PGconf.ASIA - LTKohei KaiGai
 
20181211 - PGconf.ASIA - NVMESSD&GPU for BigData
20181211 - PGconf.ASIA - NVMESSD&GPU for BigData20181211 - PGconf.ASIA - NVMESSD&GPU for BigData
20181211 - PGconf.ASIA - NVMESSD&GPU for BigDataKohei KaiGai
 
20181210 - PGconf.ASIA Unconference
20181210 - PGconf.ASIA Unconference20181210 - PGconf.ASIA Unconference
20181210 - PGconf.ASIA UnconferenceKohei KaiGai
 
20181116 Massive Log Processing using I/O optimized PostgreSQL
20181116 Massive Log Processing using I/O optimized PostgreSQL20181116 Massive Log Processing using I/O optimized PostgreSQL
20181116 Massive Log Processing using I/O optimized PostgreSQLKohei KaiGai
 

More from Kohei KaiGai (20)

20221116_DBTS_PGStrom_History
20221116_DBTS_PGStrom_History20221116_DBTS_PGStrom_History
20221116_DBTS_PGStrom_History
 
20221111_JPUG_CustomScan_API
20221111_JPUG_CustomScan_API20221111_JPUG_CustomScan_API
20221111_JPUG_CustomScan_API
 
20211112_jpugcon_gpu_and_arrow
20211112_jpugcon_gpu_and_arrow20211112_jpugcon_gpu_and_arrow
20211112_jpugcon_gpu_and_arrow
 
20210928_pgunconf_hll_count
20210928_pgunconf_hll_count20210928_pgunconf_hll_count
20210928_pgunconf_hll_count
 
20210511_PGStrom_GpuCache
20210511_PGStrom_GpuCache20210511_PGStrom_GpuCache
20210511_PGStrom_GpuCache
 
20210301_PGconf_Online_GPU_PostGIS_GiST_Index
20210301_PGconf_Online_GPU_PostGIS_GiST_Index20210301_PGconf_Online_GPU_PostGIS_GiST_Index
20210301_PGconf_Online_GPU_PostGIS_GiST_Index
 
20201128_OSC_Fukuoka_Online_GPUPostGIS
20201128_OSC_Fukuoka_Online_GPUPostGIS20201128_OSC_Fukuoka_Online_GPUPostGIS
20201128_OSC_Fukuoka_Online_GPUPostGIS
 
20201113_PGconf_Japan_GPU_PostGIS
20201113_PGconf_Japan_GPU_PostGIS20201113_PGconf_Japan_GPU_PostGIS
20201113_PGconf_Japan_GPU_PostGIS
 
20201006_PGconf_Online_Large_Data_Processing
20201006_PGconf_Online_Large_Data_Processing20201006_PGconf_Online_Large_Data_Processing
20201006_PGconf_Online_Large_Data_Processing
 
20200828_OSCKyoto_Online
20200828_OSCKyoto_Online20200828_OSCKyoto_Online
20200828_OSCKyoto_Online
 
20200806_PGStrom_PostGIS_GstoreFdw
20200806_PGStrom_PostGIS_GstoreFdw20200806_PGStrom_PostGIS_GstoreFdw
20200806_PGStrom_PostGIS_GstoreFdw
 
20200424_Writable_Arrow_Fdw
20200424_Writable_Arrow_Fdw20200424_Writable_Arrow_Fdw
20200424_Writable_Arrow_Fdw
 
20190926_Try_RHEL8_NVMEoF_Beta
20190926_Try_RHEL8_NVMEoF_Beta20190926_Try_RHEL8_NVMEoF_Beta
20190926_Try_RHEL8_NVMEoF_Beta
 
20190909_PGconf.ASIA_KaiGai
20190909_PGconf.ASIA_KaiGai20190909_PGconf.ASIA_KaiGai
20190909_PGconf.ASIA_KaiGai
 
20190418_PGStrom_on_ArrowFdw
20190418_PGStrom_on_ArrowFdw20190418_PGStrom_on_ArrowFdw
20190418_PGStrom_on_ArrowFdw
 
20181212 - PGconfASIA - LT - English
20181212 - PGconfASIA - LT - English20181212 - PGconfASIA - LT - English
20181212 - PGconfASIA - LT - English
 
20181212 - PGconf.ASIA - LT
20181212 - PGconf.ASIA - LT20181212 - PGconf.ASIA - LT
20181212 - PGconf.ASIA - LT
 
20181211 - PGconf.ASIA - NVMESSD&GPU for BigData
20181211 - PGconf.ASIA - NVMESSD&GPU for BigData20181211 - PGconf.ASIA - NVMESSD&GPU for BigData
20181211 - PGconf.ASIA - NVMESSD&GPU for BigData
 
20181210 - PGconf.ASIA Unconference
20181210 - PGconf.ASIA Unconference20181210 - PGconf.ASIA Unconference
20181210 - PGconf.ASIA Unconference
 
20181116 Massive Log Processing using I/O optimized PostgreSQL
20181116 Massive Log Processing using I/O optimized PostgreSQL20181116 Massive Log Processing using I/O optimized PostgreSQL
20181116 Massive Log Processing using I/O optimized PostgreSQL
 

20190314 PGStrom Arrow_Fdw

  • 2. 会社&自己紹介(1/2) ▌Who am I?  名前: 海外 浩平(かいがい こうへい)  所属: HeteroDB,Inc  バックグラウンド  Linux kernel(2003~; SELinux、JFFS2など)  PostgreSQL(2006~; security、FDW、CustomScanなど)  PG-Strom(2012~)  IPA未踏ソフトウェア(2006年度、2017年度) ▌about HeteroDB  商号 ヘテロDB株式会社  創業 2017年7月4日  拠点 品川区西大井1-1-2-206  事業内容 高速データ処理製品の販売 GPU&DB領域の技術コンサルティング Hadoop / Spark Conference Japan 2019 - Arrow_Fdw2
  • 4. 本日のアジェンダ ▌PG-Stromとは? ▌Run faster, beyond the limitation ▌Pg2Arrow ▌Arrow_Fdw ▌今後のロードマップ Hadoop / Spark Conference Japan 2019 - Arrow_Fdw4
  • 5. PG-Stromとは? Hadoop / Spark Conference Japan 2019 - Arrow_Fdw5 GPU CPU モデル NVIDIA Tesla V100 Intel Xeon Platinum 8180 世代 Volta Skylake 発表 Q2-2017 Q3-2017 トランジスタ数 21billion 8.0billion コア数 5120 (simple) 28 (functional) 動作クロック 1.280GHz ~1.380GHz 2.50GHz ~3.80GHz 理論性能値 (FP64) 7 TFLOPS 2.2TFLOPS (with AVX-512) RAMサイズ 32GB (HBM2) max 768GB (DDR4) メモリ帯域 900GB/s 119GB/s 消費電力 250W 205W 製造プロセ ス 12nm 14nm PG-Strom: GPUの持つ数百~数千コアと広帯域メモリを利用して、 SQLワークロードを高速化するPostgreSQL向け拡張モジュール App GPU off-loading  SQLからGPUプログラムを自動生成し、 透過的な高速化を実現  他のGPU-DB製品と異なり、ストレージと GPUの連携に注力(SSD-to-GPU Direct SQL)  使い慣れたPostgreSQLの開発・運用スキルを そのまま引き継ぐことができる。
  • 6. PostgreSQLの共通インフラ PG-Stromの構成要素 Hadoop / Spark Conference Japan 2019 - Arrow_Fdw6 SQL Parser Query Optimizer Query Executor Storage PG-Strom CustomScan Interface Database Applications Storage Manager Transaction Manager Parallel Workers 【ビッグデータ処理の高速化】  SSD-to-GPUダイレクトSQL実行  JOIN+GROUP BY Combined kernel  列指向ファイルマッピング (Arrow_Fdw)  NVME-over-Fabric対応 【基本機能】 • SQL to GPUプログラムジェネレータ • GPUコード実行時コンパイラ • GPUカーネルの非同期並列実行 【アナリティクスの高速化】  GPUメモリストア (Gstore_Fdw)  PL/CUDA ユーザ定義関数  Pythonとのデータ交換  Microsoft Azure(クラウド対応) 共通のSQLクエリ 共通のデータ構造
  • 7. データ処理とストレージ階層 CPU/GPU処理能力 + 処理すべきデータを供給するスループット プロセッサ ストレージ GPU内蔵 デバイスメモリ 900GB/s 120GB/s PCIe 3.0: 32GB/s NVLink 2.0: 150GB/s PCIe 3.0: 3.2~12.8GB/s 容量:~32GB 容量:~2TB 容量: unlimited Hadoop / Spark Conference Japan 2019 - Arrow_Fdw7
  • 8. 一般的な x86_64 サーバの構成 GPUSSD CPU RAM HDD N/W Hadoop / Spark Conference Japan 2019 - Arrow_Fdw8
  • 10. 中核機能:SSD-to-GPUダイレクトSQL CPU RAM SSD GPU PCIe PostgreSQL データブロック NVIDIA GPUDirect RDMA CPU/RAMを介することなく、 Peer-to-PeerのDMAを用いて SSD上のデータブロックを直接 GPUに転送する機能。 WHERE句 JOIN GROUP BY GPUでSQLを処理し、 データ量を削減する データ量:小 Hadoop / Spark Conference Japan 2019 - Arrow_Fdw10 v2.0
  • 11. ベンチマーク結果(シングルノード) Hadoop / Spark Conference Japan 2019 - Arrow_Fdw11 2172.3 2159.6 2158.9 2086.0 2127.2 2104.3 1920.3 2023.4 2101.1 2126.9 1900.0 1960.3 2072.1 6149.4 6279.3 6282.5 5985.6 6055.3 6152.5 5479.3 6051.2 6061.5 6074.2 5813.7 5871.8 5800.1 0 1000 2000 3000 4000 5000 6000 7000 Q1_1 Q1_2 Q1_3 Q2_1 Q2_2 Q2_3 Q3_1 Q3_2 Q3_3 Q3_4 Q4_1 Q4_2 Q4_3 QueryProcessingThroughput[MB/sec] Star Schema Benchmark on NVMe-SSD + md-raid0 PgSQL9.6(SSDx3) PGStrom2.0(SSDx3) H/W Spec (3xSSD) SSD-to-GPU Direct SQLでハードウェアの限界に近いSQL処理速度を実現  DBサイズ 353GB (sf: 401) の Star Schema Benchmark を用いてクエリ処理時間を計測  CPU: Intel Xeon E5-2650v4, RAM: 128GB, GPU: NVIDIA Tesla P40, SSD: Intel 750 (400GB; SeqRead 2.2GB/s)x3  NVME-SSDの理論限界は 2.2GB/s x 3 = 6.6GB/s。SQL処理スループットもそれに近い 6.2GB/s まで出ている。
  • 12. SSD-to-GPU Direct SQL - ソフトウェアスタック Hadoop / Spark Conference Japan 2019 - Arrow_Fdw12 Filesystem (ext4, xfs) nvme_strom kernel module NVMe SSD NVIDIA Tesla GPU PostgreSQL pg_strom extension read(2) ioctl(2) Hardware Layer Operating System Software Layer Database Software Layer blk-mq nvme pcie nvme rdma Network HBA ファイルオフセット  NVME-SSDのセクタ番号変換 NVMEoF Target (JBOF) NVMe Request ■ その他のソフトウェア コンポーネント ■ PG-Stromプロジェクトの 開発したソフトウェア ■ ハードウェア NVME over Fabric nvme_strom v2.0 で NVME-over-Fabric (RDMA) に対応
  • 13. 適用例:ログ集積・解析システム Hadoop / Spark Conference Japan 2019 - Arrow_Fdw13 GPU+NVME-SSD搭載 データベースサーバ SQLによる検索 セキュリティ事故 被害状況把握 影響範囲特定 責任者への報告 • 高速なトライ&エラー • 使い慣れたインターフェース • 行データのままで高速な検索 従来システム40分の クエリを30秒で実行 Aug 12 18:01:01 saba systemd: Started Session 21060 of user root. v2.0
  • 14. ハードウェア構成に関する分析 Hadoop / Spark Conference Japan 2019 - Arrow_Fdw14 PCIe-switchがI/Oをバイパスする事でCPUの負荷を軽減できる。 CPU CPU PLX SSD GPU PLX SSD GPU PLX SSD GPU PLX SSD GPU SCAN SCAN SCAN SCAN JOIN JOIN JOIN JOIN GROUP BY GROUP BY GROUP BY GROUP BY 非常に少ないボリュームのデータ GATHER GATHER
  • 15. PCIeスイッチ付ハードウェア(1/2)- HPC向けサーバ Hadoop / Spark Conference Japan 2019 - Arrow_Fdw15 Supermicro SYS-4029TRT2 x96 lane PCIe switch x96 lane PCIe switch CPU2 CPU1 QPI Gen3 x16 Gen3 x16 for each slot Gen3 x16 for each slot Gen3 x16 マルチノードMPI向けに最適化されたハードウェアが売られている
  • 16. PCIeスイッチ付ハードウェア(2/2)- I/O拡張ボックス Hadoop / Spark Conference Japan 2019 - Arrow_Fdw16 NEC ExpEther 40G (4slots) 4 slots of PCIe Gen3 x8 PCIe Swich 40Gb Ethernet ネットワーク スイッチ CPU NIC 追加のI/O boxes 必要性能・容量に応じてハードウェアを柔軟に増設できる
  • 17. ベンチマーク(1/2)– システム構成 Hadoop / Spark Conference Japan 2019 - Arrow_Fdw17 NEC Express5800/R120g-2m CPU: Intel Xeon E5-2603 v4 (6C, 1.7GHz) RAM: 64GB OS: Red Hat Enterprise Linux 7 (kernel: 3.10.0-862.9.1.el7.x86_64) CUDA-9.2.148 + driver 396.44 DB: PostgreSQL 11beta3 + PG-Strom v2.1devel lineorder_a (351GB) lineorder_b (351GB) lineorder_c (351GB) NEC ExpEther (40Gb; 4slots版) I/F: PCIe 3.0 x8 (x16幅) x4スロット + internal PCIe switch N/W: 40Gb-ethernet NVIDIA Tesla P40 # of cores: 3840 (1.3GHz) Device RAM: 24GB (347GB/s, GDDR5) CC: 6.1 (Pascal, GP104) I/F: PCIe 3.0 x16 Intel DC P4600 (2.0TB; HHHL) SeqRead: 3200MB/s SeqWrite: 1575MB/s RandRead: 610k IOPS RandWrite: 196k IOPS I/F: PCIe 3.0 x4 v2.1 SPECIAL THANKS FOR
  • 18. ベンチマーク(2/2) – 測定結果 Hadoop / Spark Conference Japan 2019 - Arrow_Fdw18  I/O拡張ボックス毎に351GB、計1055GBのデータベースを構築し、13種類のSSBMクエリを実行  SQL実行を伴わない SSDHost への Raw-I/O データ転送は 9GB/s 弱が限界。 つまり、Raw-I/Oのストレージ読出しよりも、SQLを高速に実行てきている。 2,388 2,477 2,493 2,502 2,739 2,831 1,865 2,268 2,442 2,418 1,789 1,848 2,202 13,401 13,534 13,536 13,330 12,696 12,965 12,533 11,498 12,312 12,419 12,414 12,622 12,594 0 2,000 4,000 6,000 8,000 10,000 12,000 14,000 Q1_1 Q1_2 Q1_3 Q2_1 Q2_2 Q2_3 Q3_1 Q3_2 Q3_3 Q3_4 Q4_1 Q4_2 Q4_3 QueryExecutionThroughput[MB/s] Star Schema Benchmark for PgSQL v11beta3 / PG-Strom v2.1devel on NEC ExpEther x3 PostgreSQL v11beta3 PG-Strom v2.1devel Raw-I/O限界値 I/O拡張ボックス3台構成で、max 13.5GB/s のクエリ処理速度を実現! v2.1
  • 19. Run faster, beyond the limitation
  • 20. 前提を疑う(1/3)- PostgreSQLのデータ構造(行データ) テーブル セグメント 1GB単位に分割 されたファイル ブロック 通常8KBの固定長領域で、 PostgreSQLにおけるI/O単位 PageHeaderData HeapTuple-0HeapTuple-1 HeapTuple-2 ItemPointer HeapTuple Header • MVCC可視性制御情報 • 各種のフラグ情報 • 含まれる列の個数 • オブジェクトID(≦PG11) NULL Bitmap Column-1 value Column-2 value Column-4 value タプル PostgreSQLにおけるストレージ上の行 NULL値や可変長データがあると、 常に一定の場所にデータが置かれる わけではない。 Hadoop / Spark Conference Japan 2019 - Arrow_Fdw20
  • 21. 前提を疑う(2/3)- Apache Arrowのデータ構造(列データ) Footer Apache Arrow形式ファイル RecordBatch-2 RecordBatch-N RecordBatch-1 Schema column-1 null-bitmap column-1 values-array column-2 values-array column-3 null-bitmap column-3 offset-array column-3 extra buffer column-4 values-array SELECT sum(col2) WHERE col2 < col4; “被参照列のみロードする” 事が容易なデータ形式 Hadoop / Spark Conference Japan 2019 - Arrow_Fdw21
  • 22. 《補足》なぜGPUには列指向のデータが向いているか? Hadoop / Spark Conference Japan 2019 - Arrow_Fdw22 ▌行データ形式 – 不連続なデータアクセス (random memory access)  メモリトランザクションの回数が増え、データバスの使用率が低下 ▌列データ形式 – 隣接領域に対するデータアクセス (coalesced memory access)  最小限のメモリトランザクション回数、データバスの使用率を最大化 32bit Memory transaction width: 256bit 32bit 32bit32bit 32bit 32bit 32bit 32bit 32bit 32bit 32bit 32bit 32bit 32bit Memory transaction width: 256bit 256bit幅のメモリトランザクション中、 32bit x 8 = 256bitが有効なデータ (バス使用率 100.0%) 256bit幅のメモリトランザクション中、 32bit x 1 = 32bitのみ有効なデータ (バス使用率 12.5%) GPUコア GPUコア
  • 23. 前提を疑う(3/3)- データはどこで生まれるのか ETL OLTP OLAP 伝統的なOLTP&OLAPシステム - データはDBシステムの内側で生成される Data Creation IoT/M2M時代 - データはDBシステムの外側で生成される Log processing BI Tools BI Tools Gateway Server Async Write Async Read Data Creation Many Devices Import! Hadoop / Spark Conference Japan 2019 - Arrow_Fdw23
  • 24. Run faster, beyond the limitation ▌これまでPG-Stromに取り込んできた高速化アプローチ  CPU + GPUハイブリッド並列処理  SSD-to-GPU Direct SQL  マルチGPU対応  パーティショニング対応  NVME-SSDやPCIe P2P DMAの限界に近付きつつあり、 PostgreSQLのデータ構造のままではこれ以上の高速化が困難 ▌改善アプローチ  列データ形式の採用 … I/O量の削減、GPU最適化  外部ファイルの直接読み出し … DBインポート処理を省く Apache Arrow形式ファイルに対応した FDW (Foreign Data Wrapper) 必ずしもGPUに最適ではない事は承知の上で、行  列変換の 手間を避けるために PostgreSQL のストレージを使い続けてきたが…。 Hadoop / Spark Conference Japan 2019 - Arrow_Fdw24
  • 25. FDW (Foreign Data Wrapper) 機能とは Hadoop / Spark Conference Japan 2019 - Arrow_Fdw25 ▌大量のログデータをDBへ取り込む際の課題  PostgreSQL内部データ形式への変換と、トランザクション制御の負荷が高く時間を要する  そもそもログデータに行単位の可視性チェック(MVCC)は不要 特定の外部データ形式(Apache Arrowなど)をGPUが理解し、処理できるようにする事で、 センサ/ログデータの高速な解析と、SQLによる柔軟なデータ操作の両立が可能。 外部テーブル(Foreign Table)- PostgreSQL管理外のデータソースを、 あたかもテーブルであるかのように取り扱うための機能 Table 外部テーブル postgres_fdw 外部テーブル file_fdw 外部テーブル Gstore_fdw 外部テーブル Arrow_fdw 外部RDBMSサーバ CSVファイル GPUデバイスメモリ Arrowファイル WIP
  • 26. Pg2Arrow Hadoop / Spark Conference Japan 2019 - Arrow_Fdw26
  • 27. Apache Arrowとは(1/2) ▌特徴  列指向で分析用途向けに設計されたデータ形式  アプリケーションによらず、共通のデータ交換形式として利用可能  整数、実数、日付時刻、文字列など基本的なデータ型を定義 NVIDIA GPU Hadoop / Spark Conference Japan 2019 - Arrow_Fdw27
  • 28. Apache Arrowとは(2/2) Apache Arrowデータ型 PostgreSQLデータ型 備考 Int int2, int4, int8 FloatingPoint float2, float4, float8 float2はPG-Stromによる独自拡張 Binary bytea Utf8 text Bool bool Decimal numeric Date date unitsz = Day に補正 Time time unitsz = MicroSecondに補正 Timestamp timestamp unitsz = MicroSecondに補正 Interval interval List array型 PostgreSQLでは行ごとに異なる次元数を指定可 Struct composite型 Union ------ FixedSizeBinary bytea型? FixedSizeList array型? Map ------ Apache Arrowデータ型とPostgreSQLデータ型の対応 Hadoop / Spark Conference Japan 2019 - Arrow_Fdw28
  • 29. Pg2arrowコマンド $./pg2arrow -h Usage: pg2arrow [OPTION]... [DBNAME [USERNAME]] General options: -d, --dbname=DBNAME database name to connect to -c, --command=COMMAND SQL command to run -f, --file=FILENAME SQL command from file -o, --output=FILENAME result file in Apache Arrow format Arrow format options: -s, --segment-size=SIZE size of record batch for each (default is 512MB) Connection options: -h, --host=HOSTNAME database server host -p, --port=PORT database server port -U, --username=USERNAME database user name -w, --no-password never prompt for password -W, --password force password prompt Debug options: --dump=FILENAME dump information of arrow file --progress shows progress of the job. Hadoop / Spark Conference Japan 2019 - Arrow_Fdw29
  • 30. Pandas + PyArrowでもRDBArrow変換できるけど…。(1/2) $ python3.5 >>> import pyarrow as pa >>> import pandas as pd >>> X = pd.read_sql(sql="SELECT * FROM hogehoge LIMIT 1000", con="postgresql://localhost/postgres") >>> Y = pa.Table.from_pandas(X) >>> Y.num_rows 1000 >>> Y pyarrow.Table id: int64 a: int64 b: double c: string d: string e: double ymd: date32[day] __index_level_0__: int64 Hadoop / Spark Conference Japan 2019 - Arrow_Fdw30
  • 31. Pandas + PyArrowでもRDBArrow変換できるけど…。(2/2) postgres=# ¥d hogehoge Table "public.hogehoge" Column | Type | Collation | Nullable | Default --------+------------------+-----------+----------+--------- id | integer | | not null | a | bigint | | not null | b | double precision | | not null | c | comp | | | d | text | | | e | double precision | | | ymd | date | | | Indexes: "hogehoge_pkey" PRIMARY KEY, btree (id) postgres=# ¥d comp Composite type "public.comp" Column | Type | Collation | Nullable | Default --------+------------------+-----------+----------+--------- x | integer | | | y | double precision | | | z | numeric | | | memo | text | | | composite typeが 暗黙裡にtextへ 変換されていた Hadoop / Spark Conference Japan 2019 - Arrow_Fdw31
  • 32. Pg2arrow使用例 $ ./pg2arrow -d postgres -c “SELECT * FROM hogehoge LIMIT 1000“ -o /tmp/hogehoge1000.arrow $ python >>> import pyarrow as pa >>> X = pa.RecordBatchFileReader("/tmp/hogehoge1000.arrow").read_all() >>> X.schema id: int32 a: int64 b: double c: struct<x: int32, y: double, z: decimal(30, 11), memo: string> child 0, x: int32 child 1, y: double child 2, z: decimal(30, 11) child 3, memo: string d: string e: double ymd: date32[day] Hadoop / Spark Conference Japan 2019 - Arrow_Fdw32
  • 33. Arrow_Fdw Hadoop / Spark Conference Japan 2019 - Arrow_Fdw33
  • 35. How to use Arrow_Fdw(1/3) postgres=# create extension pg_strom; CREATE EXTENSION Hadoop / Spark Conference Japan 2019 - Arrow_Fdw35
  • 36. How to use Arrow_Fdw(2/3) postgres=# IMPORT FOREIGN SCHEMA mytest FROM SERVER arrow_fdw INTO public OPTIONS (file '/tmp/hogehoge1000.arrow'); IMPORT FOREIGN SCHEMA postgres=# ¥d mytest Foreign table "public.mytest" Column | Type | Collation | Nullable | Default | FDW options --------+------------------+-----------+----------+---------+------------- id | integer | | | | a | bigint | | | | b | double precision | | | | c | comp | | | | d | text | | | | e | double precision | | | | ymd | date | | | | Server: arrow_fdw FDW options: (file '/tmp/hogehoge1000.arrow') Hadoop / Spark Conference Japan 2019 - Arrow_Fdw36
  • 37. How to use Arrow_Fdw(3/3) postgres=# EXPLAIN VERBOSE SELECT id,a,ymd FROM mytest WHERE ymd > '2020-01-01'; QUERY PLAN ----------------------------------------------------------------------- Foreign Scan on public.mytest (cost=0.00..139264.00 rows=1 width=16) Output: id, a, ymd Filter: (mytest.ymd > '2020-01-01'::date) files0: /tmp/hogehoge1000.arrow record-batch0: offset=1396, length=132160, nitems=1000 (5 rows) postgres=# SELECT id,a,ymd FROM mytest WHERE ymd > '2020-01-01'; id | a | ymd ------+------+------------ 24 | 3379 | 2085-08-07 2041 | 2208 | 2078-09-25 2042 | 7040 | 2085-03-01 2043 | 1635 | 2076-12-28 2044 | 3295 | 2080-10-07 : : : Hadoop / Spark Conference Japan 2019 - Arrow_Fdw37
  • 38. SQLでArrow_Fdwを操作する(1/4) postgres=# explain select a,c from mytest join t1 on a = aid; QUERY PLAN ---------------------------------------------------------------------- Hash Join (cost=3185.00..142449.01 rows=1 width=40) Hash Cond: (mytest.a = t1.aid) -> Foreign Scan on mytest (cost=0.00..139264.00 rows=1 width=40) files0: /tmp/hogehoge1000.arrow -> Hash (cost=1935.00..1935.00 rows=100000 width=4) -> Seq Scan on t1 (cost=0.00..1935.00 rows=100000 width=4) (6 rows) あたかも通常のテーブルで”あるかのように”振る舞う機能なので、 JOIN、GROUP BY、Window関数などのソースとして利用可能。 Hadoop / Spark Conference Japan 2019 - Arrow_Fdw38
  • 39. SQLでArrow_Fdwを操作する(2/4) postgres=# create table f_lineorder ( : ) partition by range (lo_orderdate); CREATE TABLE postgres=# create foreign table f_lineorder_1994 partition of f_lineorder for values from (19940101) to (19950101) server arrow_fdw options (file '/tmp/lineorder1994.arrow'); CREATE FOREIGN TABLE postgres=# create foreign table f_lineorder_1995 partition of f_lineorder for values from (19950101) to (19960101) server arrow_fdw options (file '/tmp/lineorder1995.arrow'); CREATE FOREIGN TABLE : Hadoop / Spark Conference Japan 2019 - Arrow_Fdw39
  • 40. SQLでArrow_Fdwを操作する(3/4) postgres=# explain select count(*) from f_lineorder; QUERY PLAN ---------------------------------------------------------------------------------- Aggregate (cost=8388608.01..8388608.02 rows=1 width=8) -> Append (cost=0.00..8388608.00 rows=4 width=0) -> Foreign Scan on f_lineorder_1994 (cost=0.00..2097152.00 rows=1 width=0) files0: /tmp/lineorder1994.arrow -> Foreign Scan on f_lineorder_1995 (cost=0.00..2097152.00 rows=1 width=0) files0: /tmp/lineorder1995.arrow -> Foreign Scan on f_lineorder_1996 (cost=0.00..2097152.00 rows=1 width=0) files0: /tmp/lineorder1996.arrow -> Foreign Scan on f_lineorder_1997 (cost=0.00..2097152.00 rows=1 width=0) files0: /tmp/lineorder1997.arrow (10 rows) postgres=# select count(*) from f_lineorder; count ------- 40000 (1 row) Hadoop / Spark Conference Japan 2019 - Arrow_Fdw40
  • 41. SQLでArrow_Fdwを操作する(4/4) postgres=# explain select count(*) from f_lineorder where lo_orderdate between 19970401 and 19970531; QUERY PLAN ---------------------------------------------------------------------------------- Aggregate (cost=2097152.00..2097152.01 rows=1 width=8) -> Append (cost=0.00..2097152.00 rows=1 width=0) -> Foreign Scan on f_lineorder_1997 (cost=0.00..2097152.00 rows=1 width=0) Filter: ((lo_orderdate >= 19970401) AND (lo_orderdate <= 19970531)) files0: /tmp/lineorder1997.arrow (5 rows) postgres=# select count(*) from f_lineorder where lo_orderdate between 19970401 and 19970531; count ------- 1851 (1 row) PostgreSQLのパーティション機能との組合せで、 明らかに範囲外の Arrow ファイルを読み飛ばしている Hadoop / Spark Conference Japan 2019 - Arrow_Fdw41
  • 42. 今後のロードマップ Hadoop / Spark Conference Japan 2019 - Arrow_Fdw42
  • 43. SSD-to-GPUダイレクトSQL への対応 Hadoop / Spark Conference Japan 2019 - Arrow_Fdw43 ▌SSD-to-GPUダイレクトSQLでArrowファイルに対応する  Linux kernelドライバの機能強化(done)  Arrow_Fdw 外部テーブル機構(done)  GpuScan, GpuJoin, GpuPreAgg での対応(WIP) PCIe Bus NVMe SSD GPU SSD-to-GPU P2P DMA (NVMe-Stromドライバ) WHERE句 JOIN GROUP BY Large PostgreSQL Tables PostgreSQL データブロック SSD-to-GPUダイレクトSQL SSDから転送したレコードを、 GPUの数千コアを用いて SQLワークロードを実行。 CPUがロード/処理すべきデータ 量を削減し、I/Oを高速化。 従来のデータフロー 本来は不要なレコードであっても、 一度CPU/RAMへロードしなければ 要・不要を判断できないため、 データサイズは大きくなりがち。 Arrow形式 ファイル
  • 44. NVIDIA RAPIDSへの対応(1/2) Hadoop / Spark Conference Japan 2019 - Arrow_Fdw44
  • 45. NVIDIA RAPIDSへの対応(2/2) PG-Stromの対応領域 Hadoop / Spark Conference Japan 2019 - Arrow_Fdw45
  • 47. 想定利用シーン – M2Mログデータ処理・解析 Hadoop / Spark Conference Japan 2019 - Arrow_Fdw47 増え続けるログデータの管理、集計から解析・機械学習まで対応したデータ管理基盤 Manufacturing Logistics Mobile Home electronics  処理ユニットの拡張により、シングルノードで~数十TBのデータにも対応。  システム全体の大幅なダウンサイジングが可能に(ラック  2Uサイズ)  蓄積した生ログデータのまま、H/W限界に近い速度で集計する事が可能。  使い慣れたPostgreSQLのSQL構文、周辺アプリケーションを適用可能。 JBoF: Just Bunch of Flash NVME over Fabric (RDMA) DB管理者 BIツール BigData
  • 48. Any Questions? ▌e-mail: kaigai@heterodb.com ▌twitter: @kkaigai Hadoop / Spark Conference Japan 2019 - Arrow_Fdw48