SlideShare una empresa de Scribd logo
1 de 13
Apache Airflow で作る
GCP のデータパイプライン
Nov 28, 2017
酔いどれGCPUG
@yutah_3 (Yuta Hono), Cloud Customer Engineer
Google Cloud
この図、どうやって実現してますか ?
Data
Batch
Batch
File
GCP でやるなら
Google App Engine (GAE) で
Cron を利用
Google Cloud Functions
(GCF) を使ってみる
cron:
- url: /retry
schedule: every 10 mins
retry_parameters:
min_backoff_seconds: 2.5
max_doublings: 5
Serverless で 定時処理 Function as a Service を使った
Event driven 的な処理
等 ?
現実世界でやりたいこと
Google
Cloud Storage
(GCS)
BigQuery
Load
mydataset.happyhelloweenmydataset.babynames
Save as
table
依存関係が存在する ETL処理 :
ロードが終わったら、集計用テーブルを作成。
その後にDataflowでDatastoreに...。
Cloud
Dataflow
Cloud
Datastore
どこかでエラーが起きる?
どこかで遅延が発生する?
Apache Airflow : OSS のワークフローエンジン
Operator
タスクのテンプレート
カスタムで Python や Bash
で書くことも出来、 GCP 等を
操作するための Operator が
ある程度揃っている。
DAG
依存関係を管理
例 :
スケジューリング
タスクの状態を管理
タスクが実行される条件など
を記述出来る。
例:
前のタスクが失敗した場合は
実行しない
リトライを Exponential back
offを利用し実行
インターフェース
Web インターフェース
CLI インターフェース
通知 (email)
タスク失敗だけではなく、
SLAを指定し下回った際に通
知なども可能。
主な機能
t1 = BigQueryOperator(…)
t2 =
BigQueryToCloudStorageOperator(…)
t1 >> t2
Demo
Demo
Scheduling task Dataproc Workflow
Dataproc 内部でのワークフ
ローを記述出来る。
Airflow の DAG をシンプル
に保つために利用できる。
Dataproc 以外の task との
依存関係は Airflow などで
カバーする。
https://cloud.google.com/dataproc/doc
s/concepts/workflows/overview
一つのタスクを行うのには
GAE の scheduleing task
がシンプルで簡単。
Airflow はスケジュールと
ワークフローをカバー。
Cloud Dataflow
Dataflow はデータ処理
(ETL) をするエンジン。
データ処理タスクが複数ある
場合の依存関係の管理が
Airflow でできる。
Airflow 自体はデータ処理を
メインには作られていない。
GCP サービスとの補完性
Cloud Functions
Function as a Service,
Event Driven
Airflow はワークフローを作
るのに利用する。
GCP で利用可能な Operator
DataFlowJavaOperator:
Java SDK で書かれたDataflow を実行
DataFlowPythonOperator:
Python SDK で書かれたDataflow を実行
番外編:
Beam SDK (Java) には JDBC IO があります
BigQueryOperator:
クエリを実行する(テーブル保存も可能)
BigQueryCheckOperator:
クエリを投げて結果が返ることを確認
BigQueryToBigQueryOperator:
Table から Table にコピー
BigQueryTableDeleteOperator:
Table を削除
BigQueryToCloudStorageOperator:
データを Cloud Storage にエクスポート
FileToGoogleCloudStorageOperator:
ファイルをGCS に転送
GoogleCloudStorageDownloadOperator:
GCS からファイルを転送
GoogleCloudStorageToBigQueryOperator:
GCS から BigQuery にデータロード
GoogleCloudStorageToGoogleCloudStora
geOperator:
オブジェクトを別のバケットにコピー
MySqlToGoogleCloudStorageOperator:
MySQL から GCS に JSON 形式でコピー
* 2017 年 11 月 28 日時点
https://github.com/apache/incubator-airflo
etc.
PubSubTopicCreateOperator:
Topic を作成する
PubSubPublishOperator:
Publish 操作をする
MLEngineBatchPrediction
Operator:
Prediction job を開始する
MLEngineModelOperator:
モデルを管理する
DatastoreExportOperator:
Entity を GCS にエクスポート
DatastoreImportOperator:
Entity を GCS からインポート
GCP で利用可能な Operator
* 2017 年 11 月 28 日時点
https://github.com/apache/incubator-airflo
クラスタ作成、クエリ実行等
DataprocClusterCreateOpe
rator
DataprocClusterDeleteOpe
rator
DataProcPigOperator
DataProcHiveOperator
DataProcSparkSqlOperator
DataProcSparkOperator
DataProcHadoopOperator
DataProcPySparkOperator
etc.
バッチにおけるデータ処理をもっと楽に
使ってみよう :
基本的な流れ
1. サービスアカウントを作成しJSON のキーを発行
2. Airflow で Google Cloud Platform タイプの Connection 追加
3. DAGを書く
4. 実行
Apache Airflow 公式
https://airflow.apache.org/
Apache Airflow で BigQuery のデータを集計する
https://cloud.google.com/blog/big-data/2017/07/how-to-aggregate-data-for-bigquery-using-apache-airflow
Thank you
yutah@google.com
@yutah_3

Más contenido relacionado

La actualidad más candente

それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?Yoshitaka Kawashima
 
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?京大 マイコンクラブ
 
レガシーコードの複雑さに立ち向かう~ドメイン駆動設計のアプローチ
レガシーコードの複雑さに立ち向かう~ドメイン駆動設計のアプローチレガシーコードの複雑さに立ち向かう~ドメイン駆動設計のアプローチ
レガシーコードの複雑さに立ち向かう~ドメイン駆動設計のアプローチ増田 亨
 
Devsumi 2018summer
Devsumi 2018summerDevsumi 2018summer
Devsumi 2018summerHarada Kei
 
5分でわかった気になるインセプションデッキ
5分でわかった気になるインセプションデッキ5分でわかった気になるインセプションデッキ
5分でわかった気になるインセプションデッキTakao Oyobe
 
DRIVE CHARTの裏側 〜 AI ☓ IoT ☓ ビッグデータを 支えるアーキテクチャ 〜
DRIVE CHARTの裏側  〜 AI ☓ IoT ☓ ビッグデータを 支えるアーキテクチャ 〜DRIVE CHARTの裏側  〜 AI ☓ IoT ☓ ビッグデータを 支えるアーキテクチャ 〜
DRIVE CHARTの裏側 〜 AI ☓ IoT ☓ ビッグデータを 支えるアーキテクチャ 〜DeNA
 
CEDEC2015_スマホゲーム開発を支えろ!〜汗と涙のQAエンジニアリング〜
CEDEC2015_スマホゲーム開発を支えろ!〜汗と涙のQAエンジニアリング〜CEDEC2015_スマホゲーム開発を支えろ!〜汗と涙のQAエンジニアリング〜
CEDEC2015_スマホゲーム開発を支えろ!〜汗と涙のQAエンジニアリング〜gree_tech
 
ドメイン駆動設計の正しい歩き方
ドメイン駆動設計の正しい歩き方ドメイン駆動設計の正しい歩き方
ドメイン駆動設計の正しい歩き方増田 亨
 
DRIVE CHARTを支えるAI技術
DRIVE CHARTを支えるAI技術DRIVE CHARTを支えるAI技術
DRIVE CHARTを支えるAI技術Yusuke Uchida
 
Django/Celeyを用いたデータ分析Webアプリケーションにおける非同期処理の設計と実装
Django/Celeyを用いたデータ分析Webアプリケーションにおける非同期処理の設計と実装Django/Celeyを用いたデータ分析Webアプリケーションにおける非同期処理の設計と実装
Django/Celeyを用いたデータ分析Webアプリケーションにおける非同期処理の設計と実装Satoshi Nagayasu
 
リーンなコードを書こう:実践的なオブジェクト指向設計
リーンなコードを書こう:実践的なオブジェクト指向設計リーンなコードを書こう:実践的なオブジェクト指向設計
リーンなコードを書こう:実践的なオブジェクト指向設計増田 亨
 
20180729 Preferred Networksの機械学習クラスタを支える技術
20180729 Preferred Networksの機械学習クラスタを支える技術20180729 Preferred Networksの機械学習クラスタを支える技術
20180729 Preferred Networksの機械学習クラスタを支える技術Preferred Networks
 
クラウドネイティブ時代の大規模ウォーターフォール開発(CloudNative Days Tokyo 2021 発表資料)
クラウドネイティブ時代の大規模ウォーターフォール開発(CloudNative Days Tokyo 2021 発表資料)クラウドネイティブ時代の大規模ウォーターフォール開発(CloudNative Days Tokyo 2021 発表資料)
クラウドネイティブ時代の大規模ウォーターフォール開発(CloudNative Days Tokyo 2021 発表資料)NTT DATA Technology & Innovation
 
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!mosa siru
 
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分けネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分けモノビット エンジン
 
MagicOnion入門
MagicOnion入門MagicOnion入門
MagicOnion入門torisoup
 
Grafana Dashboards as Code
Grafana Dashboards as CodeGrafana Dashboards as Code
Grafana Dashboards as CodeTakuhiro Yoshida
 
13.12.21_大ヒットの方程式数理モデル解説
13.12.21_大ヒットの方程式数理モデル解説13.12.21_大ヒットの方程式数理モデル解説
13.12.21_大ヒットの方程式数理モデル解説LINE Corp.
 
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織Takafumi ONAKA
 
[JJUG CCC 2021 Spring]Eclipse ユーザのための VSCode のススメ
[JJUG CCC 2021 Spring]Eclipse ユーザのための VSCode のススメ[JJUG CCC 2021 Spring]Eclipse ユーザのための VSCode のススメ
[JJUG CCC 2021 Spring]Eclipse ユーザのための VSCode のススメSatoshi Takami
 

La actualidad más candente (20)

それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
 
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
 
レガシーコードの複雑さに立ち向かう~ドメイン駆動設計のアプローチ
レガシーコードの複雑さに立ち向かう~ドメイン駆動設計のアプローチレガシーコードの複雑さに立ち向かう~ドメイン駆動設計のアプローチ
レガシーコードの複雑さに立ち向かう~ドメイン駆動設計のアプローチ
 
Devsumi 2018summer
Devsumi 2018summerDevsumi 2018summer
Devsumi 2018summer
 
5分でわかった気になるインセプションデッキ
5分でわかった気になるインセプションデッキ5分でわかった気になるインセプションデッキ
5分でわかった気になるインセプションデッキ
 
DRIVE CHARTの裏側 〜 AI ☓ IoT ☓ ビッグデータを 支えるアーキテクチャ 〜
DRIVE CHARTの裏側  〜 AI ☓ IoT ☓ ビッグデータを 支えるアーキテクチャ 〜DRIVE CHARTの裏側  〜 AI ☓ IoT ☓ ビッグデータを 支えるアーキテクチャ 〜
DRIVE CHARTの裏側 〜 AI ☓ IoT ☓ ビッグデータを 支えるアーキテクチャ 〜
 
CEDEC2015_スマホゲーム開発を支えろ!〜汗と涙のQAエンジニアリング〜
CEDEC2015_スマホゲーム開発を支えろ!〜汗と涙のQAエンジニアリング〜CEDEC2015_スマホゲーム開発を支えろ!〜汗と涙のQAエンジニアリング〜
CEDEC2015_スマホゲーム開発を支えろ!〜汗と涙のQAエンジニアリング〜
 
ドメイン駆動設計の正しい歩き方
ドメイン駆動設計の正しい歩き方ドメイン駆動設計の正しい歩き方
ドメイン駆動設計の正しい歩き方
 
DRIVE CHARTを支えるAI技術
DRIVE CHARTを支えるAI技術DRIVE CHARTを支えるAI技術
DRIVE CHARTを支えるAI技術
 
Django/Celeyを用いたデータ分析Webアプリケーションにおける非同期処理の設計と実装
Django/Celeyを用いたデータ分析Webアプリケーションにおける非同期処理の設計と実装Django/Celeyを用いたデータ分析Webアプリケーションにおける非同期処理の設計と実装
Django/Celeyを用いたデータ分析Webアプリケーションにおける非同期処理の設計と実装
 
リーンなコードを書こう:実践的なオブジェクト指向設計
リーンなコードを書こう:実践的なオブジェクト指向設計リーンなコードを書こう:実践的なオブジェクト指向設計
リーンなコードを書こう:実践的なオブジェクト指向設計
 
20180729 Preferred Networksの機械学習クラスタを支える技術
20180729 Preferred Networksの機械学習クラスタを支える技術20180729 Preferred Networksの機械学習クラスタを支える技術
20180729 Preferred Networksの機械学習クラスタを支える技術
 
クラウドネイティブ時代の大規模ウォーターフォール開発(CloudNative Days Tokyo 2021 発表資料)
クラウドネイティブ時代の大規模ウォーターフォール開発(CloudNative Days Tokyo 2021 発表資料)クラウドネイティブ時代の大規模ウォーターフォール開発(CloudNative Days Tokyo 2021 発表資料)
クラウドネイティブ時代の大規模ウォーターフォール開発(CloudNative Days Tokyo 2021 発表資料)
 
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
 
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分けネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分け
 
MagicOnion入門
MagicOnion入門MagicOnion入門
MagicOnion入門
 
Grafana Dashboards as Code
Grafana Dashboards as CodeGrafana Dashboards as Code
Grafana Dashboards as Code
 
13.12.21_大ヒットの方程式数理モデル解説
13.12.21_大ヒットの方程式数理モデル解説13.12.21_大ヒットの方程式数理モデル解説
13.12.21_大ヒットの方程式数理モデル解説
 
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
 
[JJUG CCC 2021 Spring]Eclipse ユーザのための VSCode のススメ
[JJUG CCC 2021 Spring]Eclipse ユーザのための VSCode のススメ[JJUG CCC 2021 Spring]Eclipse ユーザのための VSCode のススメ
[JJUG CCC 2021 Spring]Eclipse ユーザのための VSCode のススメ
 

Similar a Apache Airflow で作る GCP のデータパイプライン @ 酔いどれGCPUG 2017/11/28

CEDEC 2015: Google スケールで実現する!ゲーム&分析基盤
CEDEC 2015: Google スケールで実現する!ゲーム&分析基盤CEDEC 2015: Google スケールで実現する!ゲーム&分析基盤
CEDEC 2015: Google スケールで実現する!ゲーム&分析基盤Google Cloud Platform - Japan
 
[Cloud OnAir] Google Cloud 主催イベント Anthos Day 情報 2020 年 2 月 13 日放送
[Cloud OnAir] Google Cloud 主催イベント Anthos Day 情報 2020 年 2 月 13 日放送[Cloud OnAir] Google Cloud 主催イベント Anthos Day 情報 2020 年 2 月 13 日放送
[Cloud OnAir] Google Cloud 主催イベント Anthos Day 情報 2020 年 2 月 13 日放送Google Cloud Platform - Japan
 
キャバァーン! サツバツエアアイオー弐〇壱弐
キャバァーン! サツバツエアアイオー弐〇壱弐キャバァーン! サツバツエアアイオー弐〇壱弐
キャバァーン! サツバツエアアイオー弐〇壱弐Kei Nakazawa
 
KubeCon + CloudNativeCon Europe 2022 Recap - Batch/HPCの潮流とScheduler拡張事例 / Kub...
KubeCon + CloudNativeCon Europe 2022 Recap - Batch/HPCの潮流とScheduler拡張事例 / Kub...KubeCon + CloudNativeCon Europe 2022 Recap - Batch/HPCの潮流とScheduler拡張事例 / Kub...
KubeCon + CloudNativeCon Europe 2022 Recap - Batch/HPCの潮流とScheduler拡張事例 / Kub...Preferred Networks
 
Flex with Google App Engine for Java
Flex with Google App Engine for JavaFlex with Google App Engine for Java
Flex with Google App Engine for JavaTakeya Waki
 
[Cloud OnAir] GCP 上でストリーミングデータ処理基盤を構築してみよう! 2018年9月13日 放送
[Cloud OnAir] GCP 上でストリーミングデータ処理基盤を構築してみよう! 2018年9月13日 放送[Cloud OnAir] GCP 上でストリーミングデータ処理基盤を構築してみよう! 2018年9月13日 放送
[Cloud OnAir] GCP 上でストリーミングデータ処理基盤を構築してみよう! 2018年9月13日 放送Google Cloud Platform - Japan
 
[Cloud OnAir] オンプレミスにあるデータを GCP で分析する前に知っておきたいアーキテクチャ 2019年5月30日 放送
[Cloud OnAir] オンプレミスにあるデータを GCP で分析する前に知っておきたいアーキテクチャ 2019年5月30日 放送[Cloud OnAir] オンプレミスにあるデータを GCP で分析する前に知っておきたいアーキテクチャ 2019年5月30日 放送
[Cloud OnAir] オンプレミスにあるデータを GCP で分析する前に知っておきたいアーキテクチャ 2019年5月30日 放送Google Cloud Platform - Japan
 
Shibuya Pm Tt08 Advanced Mogilefs
Shibuya Pm Tt08 Advanced MogilefsShibuya Pm Tt08 Advanced Mogilefs
Shibuya Pm Tt08 Advanced Mogilefsguest172cfb
 
GoogleCloudPlatform概要
GoogleCloudPlatform概要GoogleCloudPlatform概要
GoogleCloudPlatform概要Kumano Ryo
 
機械学習プロジェクトにおける Cloud AI Platform の使い方 (2018-11-19)
機械学習プロジェクトにおける Cloud AI Platform の使い方 (2018-11-19)機械学習プロジェクトにおける Cloud AI Platform の使い方 (2018-11-19)
機械学習プロジェクトにおける Cloud AI Platform の使い方 (2018-11-19)Yaboo Oyabu
 
[Cloud OnAir] 最新アップデート Google Cloud データ関連ソリューション 2020年5月14日 放送
[Cloud OnAir] 最新アップデート Google Cloud データ関連ソリューション 2020年5月14日 放送[Cloud OnAir] 最新アップデート Google Cloud データ関連ソリューション 2020年5月14日 放送
[Cloud OnAir] 最新アップデート Google Cloud データ関連ソリューション 2020年5月14日 放送Google Cloud Platform - Japan
 
[Cloud OnAir] 最新版 GCP ではじめる、サーバーレスアプリケーションの開発。 2018年11月8日 放送
[Cloud OnAir]   最新版 GCP ではじめる、サーバーレスアプリケーションの開発。 2018年11月8日 放送[Cloud OnAir]   最新版 GCP ではじめる、サーバーレスアプリケーションの開発。 2018年11月8日 放送
[Cloud OnAir] 最新版 GCP ではじめる、サーバーレスアプリケーションの開発。 2018年11月8日 放送Google Cloud Platform - Japan
 
[Cloud OnAir] 安心して GCP を使うための処方箋 ~ 実際のインシデントをもとに ~ 2019年11月14日 放送
[Cloud OnAir] 安心して GCP を使うための処方箋 ~ 実際のインシデントをもとに ~ 2019年11月14日 放送[Cloud OnAir] 安心して GCP を使うための処方箋 ~ 実際のインシデントをもとに ~ 2019年11月14日 放送
[Cloud OnAir] 安心して GCP を使うための処方箋 ~ 実際のインシデントをもとに ~ 2019年11月14日 放送Google Cloud Platform - Japan
 
Developer summit 2015 GCP
Developer summit 2015  GCPDeveloper summit 2015  GCP
Developer summit 2015 GCPKiyoshi Fukuda
 
Postgres Playground で pgbench を走らせよう!(第35回PostgreSQLアンカンファレンス@オンライン 発表資料)
Postgres Playground で pgbench を走らせよう!(第35回PostgreSQLアンカンファレンス@オンライン 発表資料)Postgres Playground で pgbench を走らせよう!(第35回PostgreSQLアンカンファレンス@オンライン 発表資料)
Postgres Playground で pgbench を走らせよう!(第35回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
[GCC18] 世界中のプレイヤーを3つの「S」で支える Google Cloud Platform (GCP) 〜スピード・スケール・スタビリティ〜
[GCC18] 世界中のプレイヤーを3つの「S」で支える  Google Cloud Platform (GCP) 〜スピード・スケール・スタビリティ〜[GCC18] 世界中のプレイヤーを3つの「S」で支える  Google Cloud Platform (GCP) 〜スピード・スケール・スタビリティ〜
[GCC18] 世界中のプレイヤーを3つの「S」で支える Google Cloud Platform (GCP) 〜スピード・スケール・スタビリティ〜Samir Hammoudi
 
Dart flightschool cloudendpoint with dart
Dart flightschool cloudendpoint with dartDart flightschool cloudendpoint with dart
Dart flightschool cloudendpoint with dart啓介 大橋
 

Similar a Apache Airflow で作る GCP のデータパイプライン @ 酔いどれGCPUG 2017/11/28 (20)

What’s new in cloud run 2021 後期
What’s new in cloud run 2021 後期What’s new in cloud run 2021 後期
What’s new in cloud run 2021 後期
 
Google Cloud Dataflow を理解する - #bq_sushi
Google Cloud Dataflow を理解する - #bq_sushiGoogle Cloud Dataflow を理解する - #bq_sushi
Google Cloud Dataflow を理解する - #bq_sushi
 
CEDEC 2015: Google スケールで実現する!ゲーム&分析基盤
CEDEC 2015: Google スケールで実現する!ゲーム&分析基盤CEDEC 2015: Google スケールで実現する!ゲーム&分析基盤
CEDEC 2015: Google スケールで実現する!ゲーム&分析基盤
 
[Cloud OnAir] Google Cloud 主催イベント Anthos Day 情報 2020 年 2 月 13 日放送
[Cloud OnAir] Google Cloud 主催イベント Anthos Day 情報 2020 年 2 月 13 日放送[Cloud OnAir] Google Cloud 主催イベント Anthos Day 情報 2020 年 2 月 13 日放送
[Cloud OnAir] Google Cloud 主催イベント Anthos Day 情報 2020 年 2 月 13 日放送
 
キャバァーン! サツバツエアアイオー弐〇壱弐
キャバァーン! サツバツエアアイオー弐〇壱弐キャバァーン! サツバツエアアイオー弐〇壱弐
キャバァーン! サツバツエアアイオー弐〇壱弐
 
KubeCon + CloudNativeCon Europe 2022 Recap - Batch/HPCの潮流とScheduler拡張事例 / Kub...
KubeCon + CloudNativeCon Europe 2022 Recap - Batch/HPCの潮流とScheduler拡張事例 / Kub...KubeCon + CloudNativeCon Europe 2022 Recap - Batch/HPCの潮流とScheduler拡張事例 / Kub...
KubeCon + CloudNativeCon Europe 2022 Recap - Batch/HPCの潮流とScheduler拡張事例 / Kub...
 
Flex with Google App Engine for Java
Flex with Google App Engine for JavaFlex with Google App Engine for Java
Flex with Google App Engine for Java
 
[Cloud OnAir] GCP 上でストリーミングデータ処理基盤を構築してみよう! 2018年9月13日 放送
[Cloud OnAir] GCP 上でストリーミングデータ処理基盤を構築してみよう! 2018年9月13日 放送[Cloud OnAir] GCP 上でストリーミングデータ処理基盤を構築してみよう! 2018年9月13日 放送
[Cloud OnAir] GCP 上でストリーミングデータ処理基盤を構築してみよう! 2018年9月13日 放送
 
[Cloud OnAir] オンプレミスにあるデータを GCP で分析する前に知っておきたいアーキテクチャ 2019年5月30日 放送
[Cloud OnAir] オンプレミスにあるデータを GCP で分析する前に知っておきたいアーキテクチャ 2019年5月30日 放送[Cloud OnAir] オンプレミスにあるデータを GCP で分析する前に知っておきたいアーキテクチャ 2019年5月30日 放送
[Cloud OnAir] オンプレミスにあるデータを GCP で分析する前に知っておきたいアーキテクチャ 2019年5月30日 放送
 
Shibuya Pm Tt08 Advanced Mogilefs
Shibuya Pm Tt08 Advanced MogilefsShibuya Pm Tt08 Advanced Mogilefs
Shibuya Pm Tt08 Advanced Mogilefs
 
GoogleCloudPlatform概要
GoogleCloudPlatform概要GoogleCloudPlatform概要
GoogleCloudPlatform概要
 
機械学習プロジェクトにおける Cloud AI Platform の使い方 (2018-11-19)
機械学習プロジェクトにおける Cloud AI Platform の使い方 (2018-11-19)機械学習プロジェクトにおける Cloud AI Platform の使い方 (2018-11-19)
機械学習プロジェクトにおける Cloud AI Platform の使い方 (2018-11-19)
 
[Cloud OnAir] 最新アップデート Google Cloud データ関連ソリューション 2020年5月14日 放送
[Cloud OnAir] 最新アップデート Google Cloud データ関連ソリューション 2020年5月14日 放送[Cloud OnAir] 最新アップデート Google Cloud データ関連ソリューション 2020年5月14日 放送
[Cloud OnAir] 最新アップデート Google Cloud データ関連ソリューション 2020年5月14日 放送
 
[Cloud OnAir] 最新版 GCP ではじめる、サーバーレスアプリケーションの開発。 2018年11月8日 放送
[Cloud OnAir]   最新版 GCP ではじめる、サーバーレスアプリケーションの開発。 2018年11月8日 放送[Cloud OnAir]   最新版 GCP ではじめる、サーバーレスアプリケーションの開発。 2018年11月8日 放送
[Cloud OnAir] 最新版 GCP ではじめる、サーバーレスアプリケーションの開発。 2018年11月8日 放送
 
[Cloud OnAir] 安心して GCP を使うための処方箋 ~ 実際のインシデントをもとに ~ 2019年11月14日 放送
[Cloud OnAir] 安心して GCP を使うための処方箋 ~ 実際のインシデントをもとに ~ 2019年11月14日 放送[Cloud OnAir] 安心して GCP を使うための処方箋 ~ 実際のインシデントをもとに ~ 2019年11月14日 放送
[Cloud OnAir] 安心して GCP を使うための処方箋 ~ 実際のインシデントをもとに ~ 2019年11月14日 放送
 
Developer summit 2015 gcp
Developer summit 2015   gcpDeveloper summit 2015   gcp
Developer summit 2015 gcp
 
Developer summit 2015 GCP
Developer summit 2015  GCPDeveloper summit 2015  GCP
Developer summit 2015 GCP
 
Postgres Playground で pgbench を走らせよう!(第35回PostgreSQLアンカンファレンス@オンライン 発表資料)
Postgres Playground で pgbench を走らせよう!(第35回PostgreSQLアンカンファレンス@オンライン 発表資料)Postgres Playground で pgbench を走らせよう!(第35回PostgreSQLアンカンファレンス@オンライン 発表資料)
Postgres Playground で pgbench を走らせよう!(第35回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
[GCC18] 世界中のプレイヤーを3つの「S」で支える Google Cloud Platform (GCP) 〜スピード・スケール・スタビリティ〜
[GCC18] 世界中のプレイヤーを3つの「S」で支える  Google Cloud Platform (GCP) 〜スピード・スケール・スタビリティ〜[GCC18] 世界中のプレイヤーを3つの「S」で支える  Google Cloud Platform (GCP) 〜スピード・スケール・スタビリティ〜
[GCC18] 世界中のプレイヤーを3つの「S」で支える Google Cloud Platform (GCP) 〜スピード・スケール・スタビリティ〜
 
Dart flightschool cloudendpoint with dart
Dart flightschool cloudendpoint with dartDart flightschool cloudendpoint with dart
Dart flightschool cloudendpoint with dart
 

Apache Airflow で作る GCP のデータパイプライン @ 酔いどれGCPUG 2017/11/28

  • 1. Apache Airflow で作る GCP のデータパイプライン Nov 28, 2017 酔いどれGCPUG @yutah_3 (Yuta Hono), Cloud Customer Engineer Google Cloud
  • 3. GCP でやるなら Google App Engine (GAE) で Cron を利用 Google Cloud Functions (GCF) を使ってみる cron: - url: /retry schedule: every 10 mins retry_parameters: min_backoff_seconds: 2.5 max_doublings: 5 Serverless で 定時処理 Function as a Service を使った Event driven 的な処理 等 ?
  • 4. 現実世界でやりたいこと Google Cloud Storage (GCS) BigQuery Load mydataset.happyhelloweenmydataset.babynames Save as table 依存関係が存在する ETL処理 : ロードが終わったら、集計用テーブルを作成。 その後にDataflowでDatastoreに...。 Cloud Dataflow Cloud Datastore どこかでエラーが起きる? どこかで遅延が発生する?
  • 5. Apache Airflow : OSS のワークフローエンジン
  • 6. Operator タスクのテンプレート カスタムで Python や Bash で書くことも出来、 GCP 等を 操作するための Operator が ある程度揃っている。 DAG 依存関係を管理 例 : スケジューリング タスクの状態を管理 タスクが実行される条件など を記述出来る。 例: 前のタスクが失敗した場合は 実行しない リトライを Exponential back offを利用し実行 インターフェース Web インターフェース CLI インターフェース 通知 (email) タスク失敗だけではなく、 SLAを指定し下回った際に通 知なども可能。 主な機能 t1 = BigQueryOperator(…) t2 = BigQueryToCloudStorageOperator(…) t1 >> t2
  • 9. Scheduling task Dataproc Workflow Dataproc 内部でのワークフ ローを記述出来る。 Airflow の DAG をシンプル に保つために利用できる。 Dataproc 以外の task との 依存関係は Airflow などで カバーする。 https://cloud.google.com/dataproc/doc s/concepts/workflows/overview 一つのタスクを行うのには GAE の scheduleing task がシンプルで簡単。 Airflow はスケジュールと ワークフローをカバー。 Cloud Dataflow Dataflow はデータ処理 (ETL) をするエンジン。 データ処理タスクが複数ある 場合の依存関係の管理が Airflow でできる。 Airflow 自体はデータ処理を メインには作られていない。 GCP サービスとの補完性 Cloud Functions Function as a Service, Event Driven Airflow はワークフローを作 るのに利用する。
  • 10. GCP で利用可能な Operator DataFlowJavaOperator: Java SDK で書かれたDataflow を実行 DataFlowPythonOperator: Python SDK で書かれたDataflow を実行 番外編: Beam SDK (Java) には JDBC IO があります BigQueryOperator: クエリを実行する(テーブル保存も可能) BigQueryCheckOperator: クエリを投げて結果が返ることを確認 BigQueryToBigQueryOperator: Table から Table にコピー BigQueryTableDeleteOperator: Table を削除 BigQueryToCloudStorageOperator: データを Cloud Storage にエクスポート FileToGoogleCloudStorageOperator: ファイルをGCS に転送 GoogleCloudStorageDownloadOperator: GCS からファイルを転送 GoogleCloudStorageToBigQueryOperator: GCS から BigQuery にデータロード GoogleCloudStorageToGoogleCloudStora geOperator: オブジェクトを別のバケットにコピー MySqlToGoogleCloudStorageOperator: MySQL から GCS に JSON 形式でコピー * 2017 年 11 月 28 日時点 https://github.com/apache/incubator-airflo etc.
  • 11. PubSubTopicCreateOperator: Topic を作成する PubSubPublishOperator: Publish 操作をする MLEngineBatchPrediction Operator: Prediction job を開始する MLEngineModelOperator: モデルを管理する DatastoreExportOperator: Entity を GCS にエクスポート DatastoreImportOperator: Entity を GCS からインポート GCP で利用可能な Operator * 2017 年 11 月 28 日時点 https://github.com/apache/incubator-airflo クラスタ作成、クエリ実行等 DataprocClusterCreateOpe rator DataprocClusterDeleteOpe rator DataProcPigOperator DataProcHiveOperator DataProcSparkSqlOperator DataProcSparkOperator DataProcHadoopOperator DataProcPySparkOperator etc.
  • 12. バッチにおけるデータ処理をもっと楽に 使ってみよう : 基本的な流れ 1. サービスアカウントを作成しJSON のキーを発行 2. Airflow で Google Cloud Platform タイプの Connection 追加 3. DAGを書く 4. 実行 Apache Airflow 公式 https://airflow.apache.org/ Apache Airflow で BigQuery のデータを集計する https://cloud.google.com/blog/big-data/2017/07/how-to-aggregate-data-for-bigquery-using-apache-airflow