Download - Aws athenaを使ってみた
自己紹介
RettyでWeb, InfraのEngineerやってます
AWS、Elasticsearchが好き最近Apache Drill触り始めました
李 晟圭(イ・ソンギュ)35歳
韓国出身、日本9年目[email protected]
Before Athena -リアルな話
ELB S3 TreasureData
CloudFront S3
Elasticsearch
Fluentd
Lambda
Kinesis
Logstash
API Gatewayものは増え
Before Athena -リアルな話
▸ 権限どうなってんの?
▸ 自前?マネージド?
▸ コスト見積れるの?
▸ 監視は?
▸ いつまで保持するの?
▸ 誰が面倒見るの?
▸ Elasticsearchのクエリはエンジニアでも一部しか投げれないよ?
▸ TreasureDataのプランってどんなんだっけ?まだ入れていいの?
▸ アクセスログたまーにしかみないんだけどここまでやる?
▸ もう面倒だからAPIGatewayでキックしたら見れるようにしたから使って?
▹ 誰にも使ってもらえなかった(悲しい)
▸ これやる?!
After Athena -リアルな話
▸ 権限?IAMってのがありまして。
▸ マネージドって楽だよね。
▸ 見積もり?コスト予測は明確ではないけど安心感はある。
▸ 監視?要らない。
▸ 保持?安いし気にしない。
▸ 面倒?S3面倒みたことある?
▸ クエリ?パーティションだけ気をつければ非エンジニアでも投げれる。
▸ あんまり使わない?Adhocでの確認がめっちゃ簡単。
▸ redashからjdbc使って見れるようにしたからAPIなんか作らなくていい。
▹ みんな見てくれる(ビジュアライズ・慣れ大事)
▸ これいいね!
簡単な使い方の説明
本当に簡単なので説明は省きます
一応下記のような記事公開してるのでよろしければ。。。
Athenaを早速試してみた
S3にあるログ分析が非常に簡単に
▸ ELB, Cloudfront, その他溜め込んでるログなど
▸ 分析するデータソースの準備は非常に簡単
▸ AWSのサービスからのデータならなおさら簡単
▸ gzでも見れる
▸ 4テラのログを141個のパーティション付けが13分で完了
▸ カラム設定には骨が折れる
▸ パーティション設定はもっと骨が折れる
▹ パーティションの付け方
▸ 予想スキャンサイズがわからない
▸ クエリタイムアウトがある?
▸ ユーザ・アカウントごとのスキャン上限などは?
その他のデータ分析まで使うか?
CREATE EXTERNAL TABLE table_name (...)PARTITIONED BY (year string, month string, day string)...
でテーブル作成後にパーティション付けを行うのですが
パーティションの付け方
ALTER TABLE database_name.table_name ADD PARTITION (year='2016',month='08',day='28') location 's3://elb-access-log/AWSLogs/00000000000000/elasticloadbalancing/ap-northeast-1/2016/08/28/';
これで1日分。数年分やりたい場合は?
パーティションの付け方
ALTER TABLE database_name.table_name ADD PARTITION (year='2016',month='08',day='28') location 's3://elb-access-log/AWSLogs/00000000000000/elasticloadbalancing/ap-northeast-1/2016/08/28/'PARTITION (year='2016',month='08',day='29') location 's3://elb-access-log/AWSLogs/00000000000000/elasticloadbalancing/ap-northeast-1/2016/08/29/'PARTITION (year='2016',month='08',day='30') location 's3://elb-access-log/AWSLogs/00000000000000/elasticloadbalancing/ap-northeast-1/2016/08/30/'…
パーティションの付け方(期待)
ALTER TABLE database_name.table_name ADD PARTITION (year='2016',month='08',day='28') location 's3://elb-access-log/AWSLogs/00000000000000/elasticloadbalancing/ap-northeast-1/2016/08/28/';ALTER TABLE database_name.table_name ADDPARTITION (year='2016',month='08',day='29') location 's3://elb-access-log/AWSLogs/00000000000000/elasticloadbalancing/ap-northeast-1/2016/08/29/';ALTER TABLE database_name.table_name ADDPARTITION (year='2016',month='08',day='30') location 's3://elb-access-log/AWSLogs/00000000000000/elasticloadbalancing/ap-northeast-1/2016/08/30/';…
パーティションの付け方(現実)
なので、公式JDBCを入手してJavaで久しぶりに
Class.forName("com.amazonaws.athena.jdbc.AthenaDriver");
とか書いたり(規則あるならこっちをおすすめ)
パーティションの付け方(残酷な現実)
Rettyでは
S3に貯めたログをアドホックで確認するときのみ
今の所、その他の分析はTD、BigQuery派が多い
だけど、やっぱデータの移管なしで分析できるのは
強烈な魅力なので、社内での熱も上昇中
今後に期待
▸ AWSを使ってる以上、S3にログは溜まる
▸ もっと効率よく・簡単にS3と連携できるたら
▸ クエリのスキャンサイズ・タイムリミット制限周り
▸ パーティショニングなんとかしてもらいたい
▸ もっと安く。。。