Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Creating a New Stream Data Pipeline on Google C...
Search
Shu Suzuki
July 19, 2019
Programming
1
3.8k
Creating a New Stream Data Pipeline on Google Cloud Platform 20190719
大量のログデータを、より効率的に、より柔軟に扱うためのパイプラインをGCP使って作った話
Shu Suzuki
July 19, 2019
Tweet
Share
More Decks by Shu Suzuki
See All by Shu Suzuki
財務データを題材に、 ETLとは何であるかを考える
shoe116
8
2.3k
Ruby on Railsで作る銘柄スクリーニング
shoe116
0
390
Creating Stream DataPipeline on GCP Using Apache Beam
shoe116
3
2.7k
Business Intelligence Engineer in Mercari
shoe116
0
110
Other Decks in Programming
See All in Programming
GoとPHPのインターフェイスの違い
shimabox
2
200
DROBEの生成AI活用事例 with AWS
ippey
0
140
ファインディLT_ポケモン対戦の定量的分析
fufufukakaka
0
840
color-scheme: light dark; を完全に理解する
uhyo
6
460
How mixi2 Uses TiDB for SNS Scalability and Performance
kanmo
40
15k
コミュニティ駆動 AWS CDK ライブラリ「Open Constructs Library」 / community-cdk-library
gotok365
2
180
GAEログのコスト削減
mot_techtalk
0
120
PHP ステートレス VS ステートフル 状態管理と並行性 / php-stateless-stateful
ytake
0
110
.NET Frameworkでも汎用ホストが使いたい!
tomokusaba
0
170
AIの力でお手軽Chrome拡張機能作り
taiseiue
0
180
Spring gRPC について / About Spring gRPC
mackey0225
0
230
富山発の個人開発サービスで日本中の学校の業務を改善した話
krpk1900
5
390
Featured
See All Featured
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.4k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
27
1.9k
Practical Orchestrator
shlominoach
186
10k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
Gamification - CAS2011
davidbonilla
80
5.1k
How to Ace a Technical Interview
jacobian
276
23k
For a Future-Friendly Web
brad_frost
176
9.5k
The Language of Interfaces
destraynor
156
24k
The Cost Of JavaScript in 2023
addyosmani
47
7.3k
Optimising Largest Contentful Paint
csswizardry
34
3.1k
GitHub's CSS Performance
jonrohan
1030
460k
Transcript
1 GCPでStreamなデータパイプライン作った {“id”: “@shoe116”, “team”: “Data Platform”}
2 mercariのlog収集の歴史とマイクロサービス化 GCPでStreamなデータパイプライン作った GCPで作ったStreamなデータパイプラインの概要 AvroとDataFlowを使ったETL処理 今日のまとめ 02 03 04 01
3 - Mercari Data Platform - Stream/Batch Pipeline Developer -
Scala, Python, Java, Go, etc - Apache Beam, Kafka, Storm, Hive, Hadoop… Shu Suzuki @shoe116
4 指定された区間(data sources - data sinks)で データパイプライン? 信頼性のあるデータ処理やデータ転送を 安定的に提供する仕組み 2.
3. 1. 今回は「本番環境のlogを、DWH等の分析環境に届ける」ことを 主眼にしたデータパイプラインについて話します。
5 Mercariのlog収集の歴史と マイクロサービス化
6 既存のlog収集の仕組み モノリスのWebアプリケーションのlogをfluentdで伝搬しbatch処理
7 マイクロサービスのアーキテクチャ データパイプライン的に言うと、data-sourceが不特定多数になる ??
8 GCPで作った Streamなデータパイプラインの概要
9 メッセージ志向ミドルウェア(G製Kafka) 使っているGCPのサービス Beamで記述できる処理エンジン(G製Flink) Cloud Dataflow Cloud Pub/Sub Cloud Storage
マルチリージョナルなオブジェクトストレージ BigQuery 大量データ向けのG製DWH、GCSからも読める。
10 新しい Stream データパイプライン 各MSのRamp TopicからDataHubへ集約、GCSとBigQueryへStore
11 各MSごとに設けられたデータの投入口 各Cloud Pub/SubのTopicの役割 Rampsのデータを1つのTopicに集約したTopic Raw DataHub Ramps 構造化されたSchema付きAvroが流れるTopic Structured
DataHub
12 Raw DataHubのデータを出力するGCS bucket 各データストアの役割 Structurd Datahubのデータを出力するGCS bucket Structured DataLake
Raw DataLake Structured DataHubのデータを出力するBig Query DWH
13 AvroとDataflowを使ったETL処理
14 DataHub Avro format {"type": "record", "name": "DataHubAvro", "namespace": "com.mercari.data.model.v3",
"fields": [{ {"name": "uuid", "type": "string"}, {"name": "timestamp", "type": { "type": "long", "logicalType": "timestamp-micros" }}, {"name": "topic_name", "type": "string"}, {"name": "service_name", "type": "string"}, {"name": "log_name", "type": "string"}, {"name": "content_type", "type": ["null", "string"], "default": null}, {"name": "user_agent", "type": ["null", "string"], "default": null}, {"name": "payload","type": "bytes"} ]} } パイプラインの共通フォーマット Avroを採用した理由 - AvroはそのままGCSに書ける - AvroはそのままBQに書ける - Avro fileはBQから直接読める DataHub Avro に含まれるもの - パイプラインのdestination - Schemaの引き当て情報 - データ本体
15 Map処理でRampsからデータを読む Ramps -> Raw DataHubのETL 共通のDataHub Avro formatに変換 全レコードをRaw
DataHubにwrite T L E
16 Raw DataHubからデータを読む Raw DataHub -> Structured DataHub のETL DataHub
Avroのpayloadのbyte[]を、 構造化されたAvroに変換する T L E 全レコードをStructured DataHubにwrite
17 サービスのMS化に伴いパイプラインも進化が求められる 今日のまとめ 不特定多数のdata sourceを想定して設計、開発中 Google Cloud Pratformの各サービスとAvroを利用 We are
hiring! 02 03 04 01 https://mercari.workable.com/jobs/765272