Edited at
gloopsDay 15

AWS AthenaとGCP BigQueryにデータぶっこんで比べてみた ~BIツールも添えて~

More than 1 year has passed since last update.


はじめに

今年もお世話になりました。

gloops Advent Calendar 2016

15日目担当インフラエンジニアの河村です

14日目は @s_yamada さんの

家系ラーメンで学ぶ新規ゲームの企画書

でした

ラーメンが食べたくなる投稿ですね

九州出身ってこともあり基本とんこつラーメンしか食べません:ramen:

飲みのあとの締めのラーメンはやめました! :beer: -> :ramen: :no_good:


今回の目的

re:iventでAWSの新機能がわんさか発表されましたが

リリース直後はパツパツで触れてなかったので

少し触ってみました

対象のサービスは以下の2つ


  • Amazon Athena(以下、AWS Athena)


  • Google BigQuery(以下、GCP BigQuery)



AWS Athena

「AWS re:invent 2016」で発表された

新サービスです

Amazon Athena

S3においているデータに対して

標準SQLを用いてクエリを発行できるサービスです

安価で大量のデータを保存できるS3対して

ユーザーがほしいデータを分析出来るサービスですね

しかも超高速に!

タイトルにも書いていますが、

GCP BigQueryとほぼ同じサービスですね


GCP BigQuery

説明はしないですが、

gloopsでもがしがし使ってます

株式会社 gloops の導入事例

紹介もしてもらいました!

Googleの方に

笑顔がいいねと褒められました!!


AWS Athena 使ってみる


S3へログを

弊社の1つのタイトルのnginx accesslogをS3にあげあげしました

s3_01.png


AWS Athenaの設定

記事書いてる2016/12/14時点では、

AWS Athenaは、オレゴン・バージニア リージョンのみ利用可能です

S3に関しては、東京リージョンに置いていてもAWS Athenaから見てくれます


  • AWS マネージドコンソール

  • Query Editor

  • Add table

athena00.png


  • Database: Create new database

  • Databaseの名前をつける

  • tableの名前をつける

  • Location of Input Data Set -> s3://バケット名/ログ置き場/

athena01.png


  • データのフォーマット選択する(今回はlog)

athena02.png


  • Column追加してあげる

athena03.png


  • 作成完了

CREATEのクエリ実行され正常に完了すればOK


実際にクエリ実行してみる

※追記

初回投稿時は

Athena:オレゴン - S3:東京

のみの検証でしたが

以下を追加しました

Athena:オレゴン - S3:オレゴン

Athena:オレゴン - S3:オレゴン(ファイル圧縮)

また、以下の数値は数回クエリ実行した中での

平均的な数値を代表して記載しています


Athena:オレゴン - S3:東京


  • AWS Athenaで、2016/12/13のアクセスのカウントは・・・

athena04.png

約3,350万件で

17.64s

スキャンデータ:12.96GB


  • AWS Athenaで、分毎にまとめてみると・・・

athena05.png

19.98s

スキャンデータ:12.96GB


Athena:オレゴン - S3:オレゴン


  • 2016/12/13のアクセスのカウントは・・・

athena11.png

同じく、約3,350万件で

6.16s

スキャンデータ:12.96GB


  • 分毎にまとめてみると・・・

athena12.png

7.65s

スキャンデータ:12.96GB


Athena:オレゴン - S3:オレゴン(ファイル圧縮)


  • 2016/12/13のアクセスのカウントは・・・

athena13.png

同じく、約3,350万件で

9.87s

スキャンデータ:1.69GB


  • 分毎にまとめてみると・・・

athena14.png

10.1s

スキャンデータ:1.69GB


GCP BigQueryはどう?


実際にクエリ実行してみる


  • GCP BigQueryで、2016/12/13のアクセスのカウントは・・・

bq01.png

約3,360万件で

1.9s


  • GCP BigQueryで、分毎にまとめてみると・・・

bq02.png

257MBで

2.4s


比較結果

AWS Athenaは、アクセスログファイル

GCP BigQueryは、insertしたデータ

なので、スキャンするデータに大きな差がでた

件数

AWS Athena
33,522,222

GCP BigQuery
33,622,636

秒数
ただのCOUNT
毎分カウント

AWS Athena:オレゴン-東京
17.64s
19.98s

AWS Athena:オレゴン-オレゴン
6.16.64s
7.65s

AWS Athena:オレゴン-オレゴン(圧縮)
9.87s
10.1s

GCP BigQuery
1.9s
2.4s

※今回はAWS Athenaに関しては、

S3:東京、AWS Athena:オレゴンで実施したため

時間に差分がでているようです。

S3を同リージョンにして、

再検証予定です。

※※検証追記しました

スキャンデータ
ただのCOUNT
毎分カウント

AWS Athena:通常ファイル
12.96GB
12.96GB

AWS Athena:圧縮ファイル
1.96GB
1.96GB

GCP BigQuery
-
257MB

データを取得することだけ考えると

BigQueryの方がクエリ料金はやすくなりそうだ

S3のファイルの置き方が、

環境/MM/DD/HH/access.logにしているのでそのへんの影響もあるかも

コスト面で大きなことは

BigQueryは、insert料金は別途かかってます

※追記

データ転送・ストレージ等の含めた全体のコスト自体は出せていません

AWS AthenaとS3のリージョン合わせることによってrunTimeは、1/2~1/3になります

AWS Athenaは、データ圧縮すれば、単純にクエリコストが1/10になります


BIツール


AWS QuickSight

ちょっと間に合いませんでした

別機会でやろうと思います:bow:


redash

gloopsでは、GCP BigQueryのaccesslogのリアルタイム閲覧には

redash

使ってます

クエリ発行させすぎないように以下の制限かけています


  • 自動更新しない

  • 直近1hのデータのみ取得する


Google Data Studio

現在ベータ版です

Google Data Studio

使ってみた結果、

リアルタイムには向いていなく

キャンペーン期間中の振り返りレポートみたいな

使い方になるんだろうなと思いました


まとめ

年の瀬ドタバタしてますが、

新機能触れて良かったです

エンジニアや、非エンジニアのみんなが

集めたログを有効活用してくれるよう

来年も頑張りたいと思います:sunglasses:

では、忘年会に行ってきますノシ :beers: