cloud datalabとbigqueryを使ったアドホックデータ解析

32
Cloud DatalabBigQuery使ったアドホックデータ解析 gcp ja night #31 2016-01-21 Takashi Nishibayashi (@hagino3000) 1

Upload: hagino-3000

Post on 16-Apr-2017

5.152 views

Category:

Technology


0 download

TRANSCRIPT

Cloud DatalabとBigQueryを使ったアドホックデータ解析

gcp ja night #31 2016-01-21 Takashi Nishibayashi (@hagino3000)

1

お前誰よID: hagino3000 Takashi Nishibayashi !• ネット広告配信最適化エンジニア • Zucks AdNetworkデータ解析班 • 自転車

自転車

最適化処理や機械学習を実装してアプリケーションに組みこむ !

実験・モデリング・実装 (多腕バンディットアルゴリズム/機械学習/最適化)

前処理 ログ収集

人間の意思決定をサポートするためのデータ分析 施策の効果検証・検定

主にこっち

Zucks AdNetworkにおける データ解析チームの仕事

We are hiring

• 広告リクエストに対して最も適切な広告を返す

• CTR (Click through Rate) の予測 • p(Click | Request, 広告枠, 広告キャンペーン)

• CVR (Conversion Rate) の予測

• p(Conversion | 広告枠, 広告キャンペーン)

• 最適な入札価格の決定

• 広告枠ごとのインプレッション(リクエスト)予測

• 異常枠の検知

• 広告配信システムのログを活用できる状態にする

今日の話• 広告配信システムのログをいい感じにBigQueryに流しこんでる

• AWS to GCP

• BigQueryに入れたデータを使ったアドホックな解析にCloud Datalabを使いはじめた

前処理

広告配信 サーバー

広告計測 サーバー

ログ

広告計測 サーバー

広告配信 サーバー

ログ

S3前処理

SNS トピック

SQS キュー

GCP

Cloud Storage

ログ

BigQuery

テーブル

テーブル

テーブル

配信システムAWS

通知

実験環境

予測 処理

予測 データ

BigQuery

Why BigQuery• Hadoopクラスタ持ってない

• まずはAdHocにデータを利用できる環境が必要

• 利用人数は数人

• 300GB/day 突っこめれば良い

• マネージドサービスなので運用が楽

• 安い (1TByteでStorage費用が20$/Month)

Data Load

• 配信システムのログがS3に配置されるので、S3からの通知をトリガーにGCSにコピー

• 1時間に1回ファイルをGCS上でまとめてBatch Load

• Stream Insertはお金がかかるので、速く欲しいログだけ対応する方針

• 今作るならEmbulkやCloud Dataflowを使うかも

Job管理• Luigiを使っている

• タスク間の依存性定義 (ロード → 前処理 → 集計 → xxx)

• 入出力対象の抽象化 (S3, GCS, BigQuery, Local File, etc.)

• リトライ/エラー通知

• モニタリング用UI

• 処理は全てPythonで記述

• http://qiita.com/hagino3000/items/b9a7761dad1f352ec723

チーム内での共有• Googleスプレッドシート + GAS

• クエリをスケジュール実行してグラフを作ったり

• クエリをセルに入力して実行できるシートをチームで共有

• GASいいよねー、みたいな話はいろんな人がしてる

• gcp ja night #28, #29 の資料を見ていただければ

re:dash• http://redash.io/

• KPI可視化やクエリ1発で終るような調べ物には便利

• 1分で使い始められる

• EC2, GCEのイメージが用意されている

• ちゃんと使うなら • TLS化 + Googleアカウント認証のみにする

150万溶かしたとかそういう話

読めばいいと思う

Cloud Datalabhttps://cloud.google.com/datalab/?hl=ja

BETA

About Cloud Datalab• Jupyter Notebookベースの対話環境をGCP上に立てられる

• AppEngine + Managed VM 上で動作

• Github上で開発が進んでいる

• https://github.com/GoogleCloudPlatform/datalab

対話環境を何に使っているか• データ調査・分析

• 実験

• 本に書いてあるコードを実行

• メモ

• 大抵の言語は動く

• https://github.com/ipython/ipython/wiki/IPython-kernels-for-other-languages

データ調査の説明

クエリ

結果

本のコードを再現

2014年~

• 共用のIPython Notebook (旧Jupyter) Server

• 毎日再起動 (生きているsessionを全クリア)

• よくノートが壊れて動かなくなる

• ユーザーアカウントという概念は無し

2015年~

• 各自Jupyter Notebook on ローカルマシン

• Githubにノートをpushして共有

• BigQueryへのアクセス

• BigQuery-Python, pandas.io.gbq

課題

• 実験ノートをもっと気軽に共有したい

• 良い感じのアクセス制限をかけたい

• 共用Jupyter Notebook Serverの面倒はみたくない

2016年~• Cloud Datalab上でノートをコミットして共有

• 特に再起動とかしていない

• 再起動したい時はvmにsshしてdocker restart

• BigQueryへのアクセスは

• import gcp.bigquery as bq

Cost

• VMインスタンスを起動している時間

• N1 Standard VCPU1 だと3,300円/月 程度

• Good

• 30秒で使いはじめられる • GCPプロジェクトのアカウントが使える • ノートの共有が前よりは楽にできる • カスタマイズ欲が無くなる

• Bad • 他人の変更を取りこむのが割と面倒 • 数式がまだ使えない (masterブランチでは修正済み) • 既存ノートが動かなかったりする

Tips• Charting APIsあたりを全て覚えなくても良い

• 今まで通りmatplotlib, Seaborn を使えばいい

• 地図へのプロットはCharting APIが楽

• 環境構築はノートにしておく

• インスタンスタイプの変更はLaunchページのクエリパラメータで

• http://datalab.cloud.google.com?cpu=2&memorygb=7.5&diskgb=200

まとめ

• 実験ノートの共有をうまくやりたかった

• Cloud Datalabの将来に期待

• GCPのアカウント権限が使えるのは楽

• BQ本は読んでおこう