BigQueryを用いた データ分析基盤作成入門

E1b600a54e2e4c1fe276cfe71a4fb02a?s=47 curry-like
November 23, 2019

BigQueryを用いた データ分析基盤作成入門

JJUG CCC 2019 fall 発表資料です。
JJUG CCC 2019 fall: https://ccc2019fall.java-users.jp/
タイムテーブル: https://ccc2019fall.java-users.jp/timetable.html

E1b600a54e2e4c1fe276cfe71a4fb02a?s=128

curry-like

November 23, 2019
Tweet

Transcript

  1. BigQueryを用いた データ分析基盤作成入門 #jjug_ccc #ccc_m1a 株式会社NewsPicks 西山浩太郎

  2. 自己紹介 - 西山 浩太郎 - 株式会社NewsPicks - 有料会員向け機能開発 - サーバーサイドエンジニア

    - Scala / Elm / Nuxt.js
  3. これらのクラウドに共通していることは?

  4. 本日の流れ 1. そもそもデータ基盤とは? 2. なぜ BigQuery なのか? 3. BigQuery にデータを投入するには?

    4. ETL の実装 5. デモ 6. まとめ
  5. データ分析基盤とは?

  6. None
  7. なぜ BigQuery なのか?

  8. なぜ BigQuery なの? - Redshift との比較 - クラスターを管理するかしないか - Athena

    との比較 - データをロードしてるかしてないか
  9. BigQuery を使用するメリット - フルマネージド - スケールしやすい - 保存するデータの管理が必要ない - 安定してそこそこ速い

    - データをもともとロードしている - 従量課金なので使い方に気をつけていればコストを抑えられ る - Scripting, ML などの機能
  10. BigQuery を使用するデメリット - Multi Cloud はメンテナンスが大変 - データスキャン容量に比例して課金額が増えていくので、頻繁 にクエリを発行する場合はコストが気になる BigQueryで150万円溶かした人の顔

    (https://qiita.com/itkr/items/745d54c781badc148bb9)より
  11. BigQuery にデータを投入す るには?

  12. BigQueryにデータを投入する方法 1. 読み込みジョブを使用して batch 単位でインポート • GCS や S3 からのファイル読み込み

    2. ストリーミングを使用してレコードごとにインポート • Fluetndからの取り込み • Dataflowからの取り込み • 他
  13. 読み込みジョブ 1. メインで使っているデータベースの dump の取り込み • 1日1回など、定期的に行い、それほど更新しないもの

  14. 1. アクセスログ • ログ監視をBigQueryで行う場合 2. 生配信動画番組の反応がみたい時 • リアルタイムの視聴者数やコメント数 ストリーミング https://medium.com/teads-engineering/give-meaning-to-100-billion-analytics-events-a-day-d6ba09aa8f44より

  15. データの流れのイメージ Stack Driver Cloud PubSub Cloud Dataflow BigQuery BigQuery Cloud

    Storage Cloud Function
  16. 今回関連するサービス - BigQuery - Cloud Storage - Cloud Pub/Sub -

    Cloud Dataflow - Stackdriver - Cloud functions
  17. BigQuery - Standard SQL - マネージド - 従量課金 - 分割テーブルを使用するとコスト削減

    - Redshift や Athena のような使われ方
  18. Cloud Storage - 非構造化データを格納するストレージ - マネージド - AWS での S3

    のようなもの - S3 等からの転送サービスがある
  19. Cloud Pub/Sub - ストリーミング取り込み/配信サービス - マネージド - GCP 上のサービス間の連携に使われる -

    AWS での SNS のようなもの
  20. Cloud Dataflow - ストリーミング / バッチ 処理のサービス - マネージド /

    オートスケーリング - Apache Beam SDK を使用 - Java / Scala / Python / Go
  21. Stackdriver - モニタリング、ロギングのサービス - マネージド - Cloud Watchのようなもの

  22. Cloud Functions - サーバレス - AWS の Lambda のようなもの -

    対応言語: Node, Go, Python
  23. - Spark, Hadoop クラスタ - マネージド - AWS の EMR

    のようなもの (参考) Cloud Dataproc
  24. Dataflow VS Dataproc https://cloud.google.com/dataflow/?hl=jaより

  25. データの流れのイメージ Stack Driver Cloud PubSub Cloud Dataflow BigQuery BigQuery Cloud

    Storage Cloud Function
  26. データの流れのイメージ Stack Driver Cloud PubSub Cloud Dataflow BigQuery BigQuery Cloud

    Storage Cloud Function
  27. データレイク構成 - 生のデータを一箇所にまとめておく - 後々、必要に応じて DWH にデータを投入できる Cloud Storage BigQuery

    Cloud Dataflow Cloud Function Cloud Dataproc
  28. 再実行性(冪等性) - 回復可能な作りにしておくこと - 特にstreaming処理の場合、生データを保存しなくても動くの で注意

  29. なるべくマネージドのサービスを使う - 運用が好きな人は少ない - 属人性の排除

  30. ETL の実装

  31. Apache Beam - Google 発のOSS - Dataflow, Spark 等、様々な場所で動く -

    Java, Python, Go - Batch 処理と streaming 処理両方に対応
  32. None
  33. None
  34. None
  35. Scio - Apache Beam と Google Cloud Dataflow の Scala

    API - GCP の様々なサービスと連携可能 - Type Safe BigQuery
  36. None
  37. Spotify の人によると…? Scala Matsuri 2019 「Data processing at Spotify using

    Scio」 より
  38. デモ

  39. データの流れのイメージ Stack Driver Cloud PubSub Cloud Dataflow BigQuery Cloud Storage

  40. 他にもこんな構成でも Cloud PubSub Cloud Storage Cloud Dataflow BigQuery

  41. まとめ - コストや運用の観点も踏まえて、最適なDWHを選びましょう - GCP に限らず、データ基盤を作る際に注意することは意識し ましょう • データレイク •

    再実行性 - なるべくマネージドのサービスを活用しましょう