概要
AWS
Athenaの紹介 + AWSのサービス紹介 + Athenaのベストプラクティス
Athena
- S3のデータに対してSQLを投げるサービス
- re:Invent 2016
- tokyoリージョンではまだ使えない
データ分析基盤の進化の流れ
- 1985 Dataware house
- 2006 Hadoop clusters
- 2009 Decoupled EMR clusters
- 2012 Cloud DWH redshift
2016 clusterless クエリを投げるだけ!
サーバーレス
- 高速なクエリ
- S3にクエリを投げれるのでロードは必要ない
- クエリのスキャンに課金(使わなければ発生しない)
- JDBC / API / CLIからクエリを投げれる
Athenaの想定ユースケース
- ユースケース
- データ
ユーザー
S3にデータを溜め込み続けて、必要が出たときに投げる
アーキテクチャ
- Prestoと完全互換ではないがPrestoベース
- 細かい違いはいくつかある
- Presto on EMRでHive connectorをつかってS3データと読み込むのと同義
- floatやtime型はathenaにはない
- AWSのブログには書いている
- パーティション
- 列指向フォーマット
- データ圧縮
- いちおう無邪気なJSONを置いてもクエリは投げれる
I/Oの制約
- どのリージョンのS3にも使える
- リージョンをまたぐと転送料金と時間は別途かかる
- 暗号化に対応
料金
- 1TBあたり5ドル
- 軽いクエリをぽこぽこ投げたい場合はお安い
- 生のCSVを圧縮したほうが料金は安くなる(ファイルサイズベースなので)
demo
- cloudtrailのデータを抽出(失敗)
アップデートについて
- あたらしいSerDeのサポート
- opencsvserdeのサポート
- 囲み文字を指定できる
- パーティションが多いときのスキャン速度を改善
- msck repair tableの速度を改善
- オハイオリージョン
- 入出力データの暗号化
- JDBCドライバ
- alter table
- LZO対応
- クエリ関連処理がAPIに対応
- aws sdkやaws cliもAPIに対応した形でアップデート
- 性能改善
API
- クエリ実行
- ネームドクエリ
- よく使われるクエリの保存
サードパーティー製品対応
- tableau
Athenaを含むAWSのデータ分析サービス
- なぜAthenaを出したのか
- データストレージにデータを置くだけじゃなくて、必要な処理を必要なタイミングでできるようにしたかった
- データストアとデータ処理の分離
- 用途に応じた適切な処理方法
- その中心にS3
- ETL EMR Glue(正式リリースされてはいない)
- データウェアハウス RedShift(定常的なものはこちら)
- BI QuickSight
- 機械学習 EC2 Batch EMR
アドホッククエリ Athena(不定期なものを手軽に抽出したい)
1000単位のモデルを並列に動かす
Athenaに向いていないもの
- フルスキャン EMR
- リトライ EMR − 多段ETL処理 EMR Glue
サブクエリ JOIN 長期間かかるクエリ redshift
Atehna サーバーレスなので利用者では制御できないものがある
- ピークタイミングのノード数
- prestoパラメタ設定
- prestoバージョン固定
- 料金価格
Presto on EMR
- クラスタの構築/運用/チューニング
- インスタンスフリート スポットブロックでコスト削減
Redshift + Spectrum
- Spectrum RedshiftからS3へ直接データをロードする
- ほっとデータに対する重いワークロード主体の場合はredshiftを使ったほうがいい
- spectrumで取ってきたデータとredshiftとで組み合わせて抽出できる
事例 NASDAQ
- オンプレでprestoを動かしたけど、サイジングとかの関係でしんどかった
- でもフィアルサイズが大きすぎてS3には全部入れられない
- ホットデータはRedshift
古いデータはpresto on EMR x BI
Dataxu
- Japan Taxi
- athenaしつつ、digdag/embulkなどと組み合わせてデータを加工整形
まとめ
- Athena S3上のデータに対するprestoベースのインタラクティブなクエリサービス
- 多くの機能追加/機能改善
- Athenaは万能じゃないので適材適所
質疑
- プロトコルはs3のみ(s3aとかは使えない)
- Athenaはread-only(コンシステンシーの問題は起きない)
- ユースケースとして重たいレポートを提供したいならSpectrum
- アドホックにデータを見たい場合はAthena
- 両方共我々は力を入れている