More Related Content
Similar to データプロダクトを支えるビッグデータ基盤 (20)
More from Google Cloud Platform - Japan (20)
データプロダクトを支えるビッグデータ基盤
- 2. 自己紹介
南谷 和毅 Data Engineer
[略歴]
2015.4 リクルートホールディングス新卒入社
2015.7- リクルートライフスタイル
データ基盤チーム配属
他5つほどチームを兼務..
[業務]
新サービスの開発、ログ基盤の開発、運用
2
- 20. 1.1 Oracle DB→BigQuery
20
S3Oracle DB
Container
Engine
BigQuery
SQS
1. Oracle からデータをダンプして、 S3
に書き出す処理. putされたらSQSに
通知
2. GKEでS3 に書き出されたデータを
GCS へコピーする処理. 1.のSQSを
polling
3. GKEでGCS にコピーされたデータを
BigQuery へロードする処理. 2.の
SQSをpolling
4. GKEで差分更新のテーブルを洗い
替えする処理
①
② ③ ④
元々あったOracle→S3→Redshiftのパイプラインを利用し、
S3 → BigQueryのパイプラインを構築
Red
shift
Cloud
Storage
SQSのキューの長さでAuto Scaleするように設計
- 21. 1.2 本サービスからのデータ取り込み
21
① 右記のように共通のconfigファイルを
jsonで定義
② Config用バケットにおき
③ 後は所定のGCSのパスにputする
gs://bq-loader/:dataset/:table/**
bigquery-connector-gcsをcloud functionで開発
GCSにデータをputすると、BQにイベントドリブンでデータがロードさ
れる {
"bq_config": {
"load": {
"createDisposition":
"CREATE_IF_NEEDED",
"writeDisposition": "WRITE_TRUNCATE",
"encoding": "UTF-8",
"maxBadRecords": "0",
"ignoreUnknownValues": "false"
}
},
"job_config" : {
"timeout" : 30000
},
"slack" : {
"url" : "#slack.url#",
"channel" : "#slack.channel#"
}
- 26. 2.2 Cloud Dataflow
1) SQLでも書こうと思えば書けるが、将来の開発・運用面を考えた時
に、コードが冗長で可読性などが低く、修正などが辛い場合
2) BigQueryではパフォーマンスがでない場合
e.g., 対象レコードが数千万件のクロスジョインなど
26
1)の例 集客分析
種類Aj(時間帯) * Bk(来店経路) * Cl(人数)のすべての組み合わせにおける来客数を計算したい .
さらにDm(hoge)、En(fuga)と種類が増える可能性があり、さらに種類の中のパターン j, k, lも増え
る可能性がある
- 27. 2.2 Cloud Dataflow
27
❖ Apache Beamのドキュメントを参考に
Cloud Dataflowのドキュメントは最新のバージョンを追えていないことがあ
るので、Apache Beamのドキュメントを参考に.
❖ 開発/デバッグはDirectRunner(ローカル実行モード)
DirectRunnerで実行するとインスタンス起動のオーバーヘッドがなく、またデ
バッグログを手元で見れる. 以前はDataflowRunner(リモート実行モード)と
一部互換性がないバグがあったがv2.2.0で修正された
Dataflowで一般的に使われているJavaではなく、
データ処理に適したPythonを採用
- 30. Digdag on GCE
- Ansible, Packerで構成管理
- gcloud beta compute
instance-groups managed
rolling-action replaceでローリング
アップデート
- Auto Scaleを設定
30
digdag / nginx
Compute Engine
Postgres
SQL
Cloud SQL
Global LB
Cloud Load Balancing