Kinesis から S3 へのログの保存、Athena と Glue
ref: Kinesis Data Streams についてしらべたこと
前提
複数のアプリケーションから、Kinesis Data Streamsへログを送信している。
このログを(必要に応じて加工して)S3 に保存したい。
Athena でアドホックな分析・調査クエリを投げれるようにしておきたい。
Kinesis から S3 におくる
大きく二つの方法が考えられる
Kinesis Data Streams から Lambda でレコードを取得して、S3 へ Put する。
なんでもできるが、自分で実装する必要がある。
Kinesis Data Streams を送信元として、 Kinesis Firehose に送る。 Kinesis Firehose の送信先にS3を指定する。
Amazon Kinesis Data Firehose とは
Lambda でレコードの変換を行うこともできる。
S3 への配信前にデータを圧縮や暗号化も行える。
Athena と Glue
あらゆるログは、全てとにかく S3 へ永続化
S3 を中心としたデータレイク
アドホックなクエリは、Athenaで
Athena
Presto ベースのマネージドサービス Amazon Athena
データベースとテーブル
クエリを投げる前に、データセットのスキーマを定義しておく必要がある(テーブル)
Athena でデータベースやテーブルを作成するとは、単にスキーマと Amazon S3 内のテーブルデータの場所を記述することに過ぎません。データはクエリ実行時に読み取られます。データは、データベースやテーブルのスキーマ定義と一緒に保存されないため、データベースやテーブルの意味が従来のリレーショナルデータベースシステムの場合とは少し異なります。
パーティショニング・最適化
Amazon Athena のパフォーマンスチューニング Tips トップ 10
Amazon Athena のPartitioningとBucketingによるパフォーマンス戦略
パーティショニング
where句で読み込み範囲を絞るときに頻繁に使われるカラム(日付など)をキーとして指定することでスキャンするファイルを限定できるため、パフォーマンスの改善とコストの削減が行える
圧縮・列指向ストレージ形式
適切なファイルサイズ
AWS Glue
Athena と Glue Data Catalog との関係
以前は、Athena 独自にデータベース・テーブル管理がされていた。
現在では、のちリリースされた AWS Glue の Data Catalog 上でのデータベース・テーブル管理がされる。
AWS Glue との統合
AWS Glue クローラ
AWS Glue クローラの使用
AWS Glue クローラを使用すると、データセットのスキーマを検出して AWS Glue データカタログに登録できます。
CTAS
Amazon Athena が待望のCTAS(CREATE TABLE AS)をサポートしました!
BIツールとの連携
Re:dash はAthenaをサポート
AWS で構築するデータレイク基盤のアーキテクチャ 資料及び QA 公開
ログ管理のベストプラクティス
ソーシャルゲームの運用に欠かせないデータ分析基盤の作り方
AWSサービスで実現するEightの行動ログ活用基盤
Glue と Athena と Data Lake
#インフラ #AWS #分析