Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Creating a New Stream Data Pipeline on Google Cloud Platform 20190719

Creating a New Stream Data Pipeline on Google Cloud Platform 20190719

大量のログデータを、より効率的に、より柔軟に扱うためのパイプラインをGCP使って作った話

Shu Suzuki

July 19, 2019
Tweet

More Decks by Shu Suzuki

Other Decks in Programming

Transcript

  1. 3 - Mercari Data Platform - Stream/Batch Pipeline Developer -

    Scala, Python, Java, Go, etc - Apache Beam, Kafka, Storm, Hive, Hadoop… Shu Suzuki @shoe116
  2. 4 指定された区間(data sources - data sinks)で データパイプライン? 信頼性のあるデータ処理やデータ転送を 安定的に提供する仕組み 2.

    3. 1. 今回は「本番環境のlogを、DWH等の分析環境に届ける」ことを 主眼にしたデータパイプラインについて話します。
  3. 9 メッセージ志向ミドルウェア(G製Kafka) 使っているGCPのサービス Beamで記述できる処理エンジン(G製Flink) Cloud Dataflow Cloud Pub/Sub Cloud Storage

    マルチリージョナルなオブジェクトストレージ BigQuery 大量データ向けのG製DWH、GCSからも読める。
  4. 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の引き当て情報 - データ本体
  5. 16 Raw DataHubからデータを読む Raw DataHub -> Structured DataHub のETL DataHub

    Avroのpayloadのbyte[]を、 構造化されたAvroに変換する T L E 全レコードをStructured DataHubにwrite