10. (C) Recruit Technologies Co.,Ltd. All rights reserved.
BIG DATA Department
Source: AWS Summit San Francisco 2017: Keynote with Werner Vogels
https://www.youtube.com/watch?v=RpPf38L0HHU 9
12. (C) Recruit Technologies Co.,Ltd. All rights reserved.
BIG DATA Department
S3に直接クエリする、ロード不要
ストレージに容量上限無し
CSVやParquetを直接扱える
Athena の Data Catalogを利用
Data Catalogにテーブル定義情報を登録
RedshiftからはExternal Schema/Tableとして扱う
Redshift Spectrum
11
Publicスキーマ
Table
Table
Table
S3スキーマ
(External)
Table
S3ファイルパス
テーブル定義
Table
(External)
Data Catalog
External Schema
External
Table
13. (C) Recruit Technologies Co.,Ltd. All rights reserved.
BIG DATA Departmentアーキテクチャ比較:Redshift と Redshift Spectrum
Redshift Spectrum Layer
(不可視領域)
Data
Catalog
L C
C
C
SQL
Pre-Load
L C
C
C
SQL
S3 Get
S
S
S
S
・
・
・
Redshift Spectrum
12
14. (C) Recruit Technologies Co.,Ltd. All rights reserved.
BIG DATA Department検証・評価
AWSの協力のもと、発表前にプロダクト評価を実施
目的:Spectrumで我々の課題が解決できるか
課題①:データ量上限
課題②:クエリ多重度
課題③:データ連携
使ったデータセット
TSV
約6億行
約50GB(非圧縮時、gzip圧縮で約25GB)
既にRedshift内に保有済みデータをSpectrum用にS3出力
13
15. (C) Recruit Technologies Co.,Ltd. All rights reserved.
BIG DATA Department検証前の期待感
Redshiftに抱いてた課題感を元にすると…
データ量上限:ストレージの分離!上限なし!
クエリ多重度:Spectrum Layerが何者か次第…
目的別に分けてたクラスタが統合できるかも?
データ連携:ロード不要!バッチ作らなくていい!メンテも無くなる!
その他:
• コスト:ストレージはS3だからRedshiftは処理リソース分の料金だけで済む!
そもそもノード数関係無くなるのか?(減らせれる?)
• 性能:S3へのIOだから圧倒的に遅くなりそう…
14
16. (C) Recruit Technologies Co.,Ltd. All rights reserved.
BIG DATA Department結果①:Small File かつ Multi Nodeは必須
Big File vs Small File
Single Node, TSV, Compress(gzip)
15
Big File
(6GB/file * 6files)
Small File
(600MB/file * 40files)
Redshift(参考値)
Full Scan (select *) 111 29 3
単位:秒
Spectrum Redshift(参考値)
1 node 20 nodes 20 nodes
Full Scan (select *) 28 16 1
Filter (select 4 columns,
3 filters)
30 18 3
Join (dimension x fact) 81 19 4
Single Node vs Multi Node
600MB/file, TSV, Compress(gzip)
単位:秒
17. (C) Recruit Technologies Co.,Ltd. All rights reserved.
BIG DATA Department結果②:多重度による劣化はクエリ特性による
16
Single Query 15 Parallel Query 30 Parallel Query
Spectrum Redshift Spectrum Redshift Spectrum Redshift
Full Scan (select *) 16 0.1 22 2 15 4
Filter (select 4 columns,
3 filters)
15 1 24 17 21 34
Join (dimension x fact) 19 3 65 50 131 109
1多重 vs 15多重 vs 30多重 (※リリース後に追加検証)
20 nodes, 600MB/file, TSV, Compress(gzip)
単位:秒(平均)
18. (C) Recruit Technologies Co.,Ltd. All rights reserved.
BIG DATA Department結果②-Full Scan:大きな性能劣化なし
RedshiftとSpectrumとで平行線
クラスタローカルディスクとS3との
IO速度の差がそのまま出ていると推察
高多重度でのクエリ速度の大きな劣
化はない
IO競合も気にならない程度
17
0
20
40
60
80
100
120
140
1パラ 15パラ 30パラ
クエリ時間(秒) クエリ多重度
Redshift - Full Scan Spectrum - Full Scan
select * from fact
■ Query←Fast
19. (C) Recruit Technologies Co.,Ltd. All rights reserved.
BIG DATA Department結果②-Filter:Spectrumが高多重度に強い
Spectrumは大きな劣化は見られな
い
Spectrum Layerの多大なリソース量
が頑張ってる
Redshiftはリニアに遅くなる
Compute Nodeの処理性能
18
0
20
40
60
80
100
120
140
1パラ 15パラ 30パラ
クエリ時間(秒) クエリ多重度
Redshift - Fillter Spectrum - Filter
select key from fact
where
mode like 'REG%'
and tax = 1
and lo_discount = 0;
■ Query←Fast
20. (C) Recruit Technologies Co.,Ltd. All rights reserved.
BIG DATA Department結果②-Join:両者大きく性能劣化
RedshiftとSpectrumとで平行線
Full Scan同様
クエリ性能はものすごく劣化
Leader NodeがJOIN処理を担う
Leader Nodeが処理のボトルネックに
19
0
20
40
60
80
100
120
140
1パラ 15パラ 30パラ
クエリ時間(秒) クエリ多重度
Redshift - Join Spectrum - Join
select fact.price, fact.priority
from fact inner join dim
on fact.key = dim.key
where
dim.address = ’Tokyo'
■ Query←Fast
21. (C) Recruit Technologies Co.,Ltd. All rights reserved.
BIG DATA Department結果③:ParquetにするとRedshiftに迫る勢い
TSV vs Parquet
20 nodes, 600MB/file, Compress(gzip)
20
TSV Parquet Redshift(参考値)
Full Scan (select *) 16 2 1
Filter (select 4 columns,
3 filters)
18 6 6
Join (demension x fact) 19 12 9
単位:秒
確かにParquet形式は早かった! がしかし…!
既存データの多くはCSV/TSV
わざわざParquetに変換してまで保持するか?
AWS Glue(Managed ETL)との組み合わせに期待
• Parquet形式への自動変換
22. (C) Recruit Technologies Co.,Ltd. All rights reserved.
BIG DATA Departmentハマりどころ①
Redshiftからアンロードした巨大なファイルだと遅い
データ生成のためにRedshiftからUnload
Redshiftの仕様として最大約6GBで自動分割
Spectrumでクエリすると非常に遅かった
Spectrumのチューニングポイント
1ファイルを1GB以下にすること
Redshiftからアンロードする場合はファイルサイズに注意(Unload後に分割すべし)
21
Source: Amazon Redshift Database Developer Guide
https://docs.aws.amazon.com/ja_jp/redshift/latest/dg/c-spectrum-external-performance.html
23. (C) Recruit Technologies Co.,Ltd. All rights reserved.
BIG DATA DepartmentSpectrumをうまく使うには
ファイル数は分割しておく
数百MB単位を目安に
Multi Node クラスタにする
クエリ時間とコストのトレードオフ
コストが許されるなら多いほうが早い
Spectrum Layerで処理させる
コンピュートノードでやってたことがオフロードされる
Spectrumを使ってもLeader Nodeは1つなのでJOINは諦める
カラムナフォーマット + 必要なカラムのみクエリする
Parquet形式が推奨
データの読み出し量の差も性能に効いている
22