Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

2,273 views

Published on

オープンソースのワークフローエンジンである Apache Airflow を利用して Google Cloud Platform のサーバーレスなデータ処理サービス群 (BigQuery, Cloud Storage, Cloud Dataflow等) を利用する方法についてお話しました。

Published in: Technology
  • Be the first to comment

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

  1. 1. Apache Airflow で作る GCP のデータパイプライン Nov 28, 2017 酔いどれGCPUG @yutah_3 (Yuta Hono), Cloud Customer Engineer Google Cloud
  2. 2. この図、どうやって実現してますか ? Data Batch Batch File
  3. 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. 4. 現実世界でやりたいこと Google Cloud Storage (GCS) BigQuery Load mydataset.happyhelloweenmydataset.babynames Save as table 依存関係が存在する ETL処理 : ロードが終わったら、集計用テーブルを作成。 その後にDataflowでDatastoreに...。 Cloud Dataflow Cloud Datastore どこかでエラーが起きる? どこかで遅延が発生する?
  5. 5. Apache Airflow : OSS のワークフローエンジン
  6. 6. Operator タスクのテンプレート カスタムで Python や Bash で書くことも出来、 GCP 等を 操作するための Operator が ある程度揃っている。 DAG 依存関係を管理 例 : スケジューリング タスクの状態を管理 タスクが実行される条件など を記述出来る。 例: 前のタスクが失敗した場合は 実行しない リトライを Exponential back offを利用し実行 インターフェース Web インターフェース CLI インターフェース 通知 (email) タスク失敗だけではなく、 SLAを指定し下回った際に通 知なども可能。 主な機能 t1 = BigQueryOperator(…) t2 = BigQueryToCloudStorageOperator(…) t1 >> t2
  7. 7. Demo
  8. 8. Demo
  9. 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. 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. 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. 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
  13. 13. Thank you yutah@google.com @yutah_3

×