SlideShare a Scribd company logo

Apache Airflow入門 (マーケティングデータ分析基盤技術勉強会)

Apache Airflowとは、 「Python言語で定義したワークフローを、スケジュール・モニタリングするためのプラットフォーム」です。 この勉強会では、Apache Airflowの概要と特徴を紹介し。 Airflowをセットアップし簡単なワークフローを実行する方法を説明します。 ジョブの依存関係解決・再実行が行いやすいというAirflowの特徴が活かせる利用シーンとして、 レポーティングや機械学習での利用イメージについても紹介します。

1 of 26
Download to read offline
takemikami’s note	– http://takemikami.com/
三上 威 (フリーランスITエンジニア)		twitter:	@takemikami
マーケティングデータ分析基盤技術勉強会
『Apache	Airflow	入門』
Apache	Airflowの概要・Airflowによるジョブ実行と利用シーン
1
Airflow
2017.3.16	株式会社フロムスクラッチ 社内勉強会
Copyright	(C)	2017	Takeshi	Mikami.	All	rights	reserved.
フロムスクラッチ
社内勉強会
takemikami’s note	– http://takemikami.com/
はじめに
• 本勉強会では、Airflowの以下の点についてお話しします。
– Apache	Airflowの概要と特徴の紹介
– Airflowでの簡単なワークフローを実行方法
– Airflowの特徴を活かせる利用シーンの紹介
2Copyright	(C)	2017	Takeshi	Mikami.	All	rights	reserved.
本勉強会で説明する内容の概要を示します。
Python言語で定義したワークフローを
スケジュール・モニタリングするプラットフォーム
Apache	Airflowとは
takemikami’s note	– http://takemikami.com/
アジェンダ
• Apache	Airflowとは
– Apache	Airflowとは
– Apache	Airflowの特徴
– いわゆるジョブ管理ツールとの違い
– 類似ツールの紹介
• Apache	Airflowでのジョブ実行
– Airflowのセットアップ
– AirflowのUI
– デモ
• Apache	Airflowの利用シーン
– レポーティングでの利用イメージ
– 機械学習での利用イメージ
3Copyright	(C)	2017	Takeshi	Mikami.	All	rights	reserved.
Apache	Airflow入門のアジェンダを示します。
takemikami’s note	– http://takemikami.com/Copyright	(C)	2017	Takeshi	Mikami.	All	rights	reserved. 4
Apache	Airflowとは
• Apache	Airflowとは
• Apache	Airflowの特徴
• いわゆるジョブ管理ツールとの違い
• 類似ツールの紹介
takemikami’s note	– http://takemikami.com/
Apache	Airflowとは
• Python言語によるタスクのワークフロー定義
• 依存関係に基づいたジョブの実行
• ワークフロー管理のためのUI提供
– パイプラインのヴィジュアライズ
– プロセスのモニタリング
5Copyright	(C)	2017	Takeshi	Mikami.	All	rights	reserved.
Apache	Airflowとは
Apache	Airflowの紹介をします。
Python言語で定義したワークフローを
スケジュール・モニタリングするプラットフォーム
takemikami’s note	– http://takemikami.com/
Apache	Airflowの特徴
• タスクの依存関係をPython言語で定義・管理
– 特別な記法の習得が不要
– ワークフローの定義を、SCMで管理しやすい
• タスクの依存関係に基づいたワークフローの動的生成
– タスクの要求変換の対応が容易
• タスクの実行ログの管理と再実行
– 未実行のタスクのみ実行するスケジュールが可能
6Copyright	(C)	2017	Takeshi	Mikami.	All	rights	reserved.
Apache	Airflowとは
Airflowの主な特徴について説明します。

Recommended

AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)Trainocate Japan, Ltd.
 
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティスAmazon Web Services Japan
 
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)NTT DATA Technology & Innovation
 
分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)NTT DATA Technology & Innovation
 
NTTデータ流Infrastructure as Code~ 大規模プロジェクトを通して考え抜いた基盤自動化の新たな姿~(NTTデータ テクノロジーカンフ...
NTTデータ流Infrastructure as Code~ 大規模プロジェクトを通して考え抜いた基盤自動化の新たな姿~(NTTデータ テクノロジーカンフ...NTTデータ流Infrastructure as Code~ 大規模プロジェクトを通して考え抜いた基盤自動化の新たな姿~(NTTデータ テクノロジーカンフ...
NTTデータ流Infrastructure as Code~ 大規模プロジェクトを通して考え抜いた基盤自動化の新たな姿~(NTTデータ テクノロジーカンフ...NTT DATA Technology & Innovation
 
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)Noritaka Sekiyama
 
AWS Organizations連携サービスの罠(Security JAWS 第26回 発表資料)
AWS Organizations連携サービスの罠(Security JAWS 第26回 発表資料)AWS Organizations連携サービスの罠(Security JAWS 第26回 発表資料)
AWS Organizations連携サービスの罠(Security JAWS 第26回 発表資料)NTT DATA Technology & Innovation
 

More Related Content

What's hot

今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)NTT DATA Technology & Innovation
 
202110 AWS Black Belt Online Seminar AWS Site-to-Site VPN
202110 AWS Black Belt Online Seminar AWS Site-to-Site VPN202110 AWS Black Belt Online Seminar AWS Site-to-Site VPN
202110 AWS Black Belt Online Seminar AWS Site-to-Site VPNAmazon Web Services Japan
 
Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)
Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)
Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)NTT DATA Technology & Innovation
 
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編Masahito Zembutsu
 
初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!Tetsutaro Watanabe
 
AWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティスAWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティスAkihiro Kuwano
 
Amazon Redshift パフォーマンスチューニングテクニックと最新アップデート
Amazon Redshift パフォーマンスチューニングテクニックと最新アップデートAmazon Redshift パフォーマンスチューニングテクニックと最新アップデート
Amazon Redshift パフォーマンスチューニングテクニックと最新アップデートAmazon Web Services Japan
 
AWSで作る分析基盤
AWSで作る分析基盤AWSで作る分析基盤
AWSで作る分析基盤Yu Otsubo
 
大規模データ処理の定番OSS Hadoop / Spark 最新動向 - 2021秋 -(db tech showcase 2021 / ONLINE 発...
大規模データ処理の定番OSS Hadoop / Spark 最新動向 - 2021秋 -(db tech showcase 2021 / ONLINE 発...大規模データ処理の定番OSS Hadoop / Spark 最新動向 - 2021秋 -(db tech showcase 2021 / ONLINE 発...
大規模データ処理の定番OSS Hadoop / Spark 最新動向 - 2021秋 -(db tech showcase 2021 / ONLINE 発...NTT DATA Technology & Innovation
 
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -onozaty
 
20190828 AWS Black Belt Online Seminar Amazon Aurora with PostgreSQL Compatib...
20190828 AWS Black Belt Online Seminar Amazon Aurora with PostgreSQL Compatib...20190828 AWS Black Belt Online Seminar Amazon Aurora with PostgreSQL Compatib...
20190828 AWS Black Belt Online Seminar Amazon Aurora with PostgreSQL Compatib...Amazon Web Services Japan
 
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design PatternAWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design PatternAmazon Web Services Japan
 
GraphQLのsubscriptionで出来ること
GraphQLのsubscriptionで出来ることGraphQLのsubscriptionで出来ること
GraphQLのsubscriptionで出来ることShingo Fukui
 
分散システムについて語らせてくれ
分散システムについて語らせてくれ分散システムについて語らせてくれ
分散システムについて語らせてくれKumazaki Hiroki
 
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理NTT DATA Technology & Innovation
 
20200422 AWS Black Belt Online Seminar Amazon Elastic Container Service (Amaz...
20200422 AWS Black Belt Online Seminar Amazon Elastic Container Service (Amaz...20200422 AWS Black Belt Online Seminar Amazon Elastic Container Service (Amaz...
20200422 AWS Black Belt Online Seminar Amazon Elastic Container Service (Amaz...Amazon Web Services Japan
 
DockerとPodmanの比較
DockerとPodmanの比較DockerとPodmanの比較
DockerとPodmanの比較Akihiro Suda
 
20210216 AWS Black Belt Online Seminar AWS Database Migration Service
20210216 AWS Black Belt Online Seminar AWS Database Migration Service20210216 AWS Black Belt Online Seminar AWS Database Migration Service
20210216 AWS Black Belt Online Seminar AWS Database Migration ServiceAmazon Web Services Japan
 
アーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーションアーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーションMasahiko Sawada
 

What's hot (20)

今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
 
Serverless時代のJavaについて
Serverless時代のJavaについてServerless時代のJavaについて
Serverless時代のJavaについて
 
202110 AWS Black Belt Online Seminar AWS Site-to-Site VPN
202110 AWS Black Belt Online Seminar AWS Site-to-Site VPN202110 AWS Black Belt Online Seminar AWS Site-to-Site VPN
202110 AWS Black Belt Online Seminar AWS Site-to-Site VPN
 
Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)
Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)
Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)
 
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
 
初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!
 
AWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティスAWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティス
 
Amazon Redshift パフォーマンスチューニングテクニックと最新アップデート
Amazon Redshift パフォーマンスチューニングテクニックと最新アップデートAmazon Redshift パフォーマンスチューニングテクニックと最新アップデート
Amazon Redshift パフォーマンスチューニングテクニックと最新アップデート
 
AWSで作る分析基盤
AWSで作る分析基盤AWSで作る分析基盤
AWSで作る分析基盤
 
大規模データ処理の定番OSS Hadoop / Spark 最新動向 - 2021秋 -(db tech showcase 2021 / ONLINE 発...
大規模データ処理の定番OSS Hadoop / Spark 最新動向 - 2021秋 -(db tech showcase 2021 / ONLINE 発...大規模データ処理の定番OSS Hadoop / Spark 最新動向 - 2021秋 -(db tech showcase 2021 / ONLINE 発...
大規模データ処理の定番OSS Hadoop / Spark 最新動向 - 2021秋 -(db tech showcase 2021 / ONLINE 発...
 
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
 
20190828 AWS Black Belt Online Seminar Amazon Aurora with PostgreSQL Compatib...
20190828 AWS Black Belt Online Seminar Amazon Aurora with PostgreSQL Compatib...20190828 AWS Black Belt Online Seminar Amazon Aurora with PostgreSQL Compatib...
20190828 AWS Black Belt Online Seminar Amazon Aurora with PostgreSQL Compatib...
 
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design PatternAWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
 
GraphQLのsubscriptionで出来ること
GraphQLのsubscriptionで出来ることGraphQLのsubscriptionで出来ること
GraphQLのsubscriptionで出来ること
 
分散システムについて語らせてくれ
分散システムについて語らせてくれ分散システムについて語らせてくれ
分散システムについて語らせてくれ
 
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
 
20200422 AWS Black Belt Online Seminar Amazon Elastic Container Service (Amaz...
20200422 AWS Black Belt Online Seminar Amazon Elastic Container Service (Amaz...20200422 AWS Black Belt Online Seminar Amazon Elastic Container Service (Amaz...
20200422 AWS Black Belt Online Seminar Amazon Elastic Container Service (Amaz...
 
DockerとPodmanの比較
DockerとPodmanの比較DockerとPodmanの比較
DockerとPodmanの比較
 
20210216 AWS Black Belt Online Seminar AWS Database Migration Service
20210216 AWS Black Belt Online Seminar AWS Database Migration Service20210216 AWS Black Belt Online Seminar AWS Database Migration Service
20210216 AWS Black Belt Online Seminar AWS Database Migration Service
 
アーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーションアーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーション
 

Viewers also liked

Jenkins 2.0 Pipeline & Blue Ocean
Jenkins 2.0 Pipeline & Blue OceanJenkins 2.0 Pipeline & Blue Ocean
Jenkins 2.0 Pipeline & Blue OceanAkihiko Horiuchi
 
Apache Hbase バルクロードの使い方
Apache Hbase バルクロードの使い方Apache Hbase バルクロードの使い方
Apache Hbase バルクロードの使い方Takeshi Mikami
 
表参道.rb #19 / ただRailsで使われていないメソッドを削除したい人生だった
表参道.rb #19 / ただRailsで使われていないメソッドを削除したい人生だった表参道.rb #19 / ただRailsで使われていないメソッドを削除したい人生だった
表参道.rb #19 / ただRailsで使われていないメソッドを削除したい人生だったYasuhiro Matsumura
 
分散ワークフローエンジン『Digdag』の実装 at Tokyo RubyKaigi #11
分散ワークフローエンジン『Digdag』の実装 at Tokyo RubyKaigi #11分散ワークフローエンジン『Digdag』の実装 at Tokyo RubyKaigi #11
分散ワークフローエンジン『Digdag』の実装 at Tokyo RubyKaigi #11Sadayuki Furuhashi
 
Digdagによる大規模データ処理の自動化とエラー処理
Digdagによる大規模データ処理の自動化とエラー処理Digdagによる大規模データ処理の自動化とエラー処理
Digdagによる大規模データ処理の自動化とエラー処理Sadayuki Furuhashi
 
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とEmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とToru Takahashi
 

Viewers also liked (7)

Azkaban
AzkabanAzkaban
Azkaban
 
Jenkins 2.0 Pipeline & Blue Ocean
Jenkins 2.0 Pipeline & Blue OceanJenkins 2.0 Pipeline & Blue Ocean
Jenkins 2.0 Pipeline & Blue Ocean
 
Apache Hbase バルクロードの使い方
Apache Hbase バルクロードの使い方Apache Hbase バルクロードの使い方
Apache Hbase バルクロードの使い方
 
表参道.rb #19 / ただRailsで使われていないメソッドを削除したい人生だった
表参道.rb #19 / ただRailsで使われていないメソッドを削除したい人生だった表参道.rb #19 / ただRailsで使われていないメソッドを削除したい人生だった
表参道.rb #19 / ただRailsで使われていないメソッドを削除したい人生だった
 
分散ワークフローエンジン『Digdag』の実装 at Tokyo RubyKaigi #11
分散ワークフローエンジン『Digdag』の実装 at Tokyo RubyKaigi #11分散ワークフローエンジン『Digdag』の実装 at Tokyo RubyKaigi #11
分散ワークフローエンジン『Digdag』の実装 at Tokyo RubyKaigi #11
 
Digdagによる大規模データ処理の自動化とエラー処理
Digdagによる大規模データ処理の自動化とエラー処理Digdagによる大規模データ処理の自動化とエラー処理
Digdagによる大規模データ処理の自動化とエラー処理
 
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とEmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤と
 

Similar to Apache Airflow入門 (マーケティングデータ分析基盤技術勉強会)

Cloud Foundry Cli Plugin入門
Cloud Foundry Cli Plugin入門Cloud Foundry Cli Plugin入門
Cloud Foundry Cli Plugin入門Takeshi Morikawa
 
ゲームのインフラをAwsで実戦tips全て見せます
ゲームのインフラをAwsで実戦tips全て見せますゲームのインフラをAwsで実戦tips全て見せます
ゲームのインフラをAwsで実戦tips全て見せますinfinite_loop
 
Airflowを広告データのワークフローエンジンとして運用してみた話
Airflowを広告データのワークフローエンジンとして運用してみた話Airflowを広告データのワークフローエンジンとして運用してみた話
Airflowを広告データのワークフローエンジンとして運用してみた話Katsunori Kanda
 
いまさら聞けないRake入門
いまさら聞けないRake入門いまさら聞けないRake入門
いまさら聞けないRake入門Tomoya Kawanishi
 
CloudHubのログバックアップについて
CloudHubのログバックアップについてCloudHubのログバックアップについて
CloudHubのログバックアップについてMuleSoft Meetup Tokyo
 
名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例
名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例
名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例Shigeru UCHIYAMA
 
[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
 
Participation report of data stax accelerate 2019
Participation report of data stax accelerate 2019Participation report of data stax accelerate 2019
Participation report of data stax accelerate 2019MKT-INTHEFOREST
 
CircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウ
CircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウCircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウ
CircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウTakeshi Mikami
 
Newcomer2020 Docker研修
Newcomer2020 Docker研修Newcomer2020 Docker研修
Newcomer2020 Docker研修Suguru Yazawa
 
Appsody でnodejsのアプリを立ち上げよう!
Appsody でnodejsのアプリを立ち上げよう!Appsody でnodejsのアプリを立ち上げよう!
Appsody でnodejsのアプリを立ち上げよう!Daisuke Hiraoka
 
serverspecを使用したサーバ設定テストの実例
serverspecを使用したサーバ設定テストの実例serverspecを使用したサーバ設定テストの実例
serverspecを使用したサーバ設定テストの実例Koichi Shimozono
 
Ansible quickstart
Ansible quickstartAnsible quickstart
Ansible quickstartHideki Saito
 
Optuna Dashboardの紹介と設計解説 - 2022/12/10 Optuna Meetup #2
Optuna Dashboardの紹介と設計解説 - 2022/12/10 Optuna Meetup #2Optuna Dashboardの紹介と設計解説 - 2022/12/10 Optuna Meetup #2
Optuna Dashboardの紹介と設計解説 - 2022/12/10 Optuna Meetup #2Preferred Networks
 
cndjp: 「Microclimate」by capsmalt
cndjp: 「Microclimate」by capsmaltcndjp: 「Microclimate」by capsmalt
cndjp: 「Microclimate」by capsmaltcapsmalt
 
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Masahito Zembutsu
 

Similar to Apache Airflow入門 (マーケティングデータ分析基盤技術勉強会) (20)

Cloud Foundry Cli Plugin入門
Cloud Foundry Cli Plugin入門Cloud Foundry Cli Plugin入門
Cloud Foundry Cli Plugin入門
 
ゲームのインフラをAwsで実戦tips全て見せます
ゲームのインフラをAwsで実戦tips全て見せますゲームのインフラをAwsで実戦tips全て見せます
ゲームのインフラをAwsで実戦tips全て見せます
 
Airflowを広告データのワークフローエンジンとして運用してみた話
Airflowを広告データのワークフローエンジンとして運用してみた話Airflowを広告データのワークフローエンジンとして運用してみた話
Airflowを広告データのワークフローエンジンとして運用してみた話
 
いまさら聞けないRake入門
いまさら聞けないRake入門いまさら聞けないRake入門
いまさら聞けないRake入門
 
CloudHubのログバックアップについて
CloudHubのログバックアップについてCloudHubのログバックアップについて
CloudHubのログバックアップについて
 
名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例
名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例
名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例
 
[Cloud OnAir] GCP 上でストリーミングデータ処理基盤を構築してみよう! 2018年9月13日 放送
[Cloud OnAir] GCP 上でストリーミングデータ処理基盤を構築してみよう! 2018年9月13日 放送[Cloud OnAir] GCP 上でストリーミングデータ処理基盤を構築してみよう! 2018年9月13日 放送
[Cloud OnAir] GCP 上でストリーミングデータ処理基盤を構築してみよう! 2018年9月13日 放送
 
Participation report of data stax accelerate 2019
Participation report of data stax accelerate 2019Participation report of data stax accelerate 2019
Participation report of data stax accelerate 2019
 
Hadoop-3.2.0の新機能の紹介とJava9+対応のコミュニティ動向
Hadoop-3.2.0の新機能の紹介とJava9+対応のコミュニティ動向Hadoop-3.2.0の新機能の紹介とJava9+対応のコミュニティ動向
Hadoop-3.2.0の新機能の紹介とJava9+対応のコミュニティ動向
 
CircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウ
CircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウCircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウ
CircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウ
 
Newcomer2020 Docker研修
Newcomer2020 Docker研修Newcomer2020 Docker研修
Newcomer2020 Docker研修
 
Appsody でnodejsのアプリを立ち上げよう!
Appsody でnodejsのアプリを立ち上げよう!Appsody でnodejsのアプリを立ち上げよう!
Appsody でnodejsのアプリを立ち上げよう!
 
serverspecを使用したサーバ設定テストの実例
serverspecを使用したサーバ設定テストの実例serverspecを使用したサーバ設定テストの実例
serverspecを使用したサーバ設定テストの実例
 
Ansible quickstart
Ansible quickstartAnsible quickstart
Ansible quickstart
 
Optuna Dashboardの紹介と設計解説 - 2022/12/10 Optuna Meetup #2
Optuna Dashboardの紹介と設計解説 - 2022/12/10 Optuna Meetup #2Optuna Dashboardの紹介と設計解説 - 2022/12/10 Optuna Meetup #2
Optuna Dashboardの紹介と設計解説 - 2022/12/10 Optuna Meetup #2
 
Flex's DI Container
Flex's DI ContainerFlex's DI Container
Flex's DI Container
 
Windows Azure PHP Tips
Windows Azure PHP Tips Windows Azure PHP Tips
Windows Azure PHP Tips
 
cndjp: 「Microclimate」by capsmalt
cndjp: 「Microclimate」by capsmaltcndjp: 「Microclimate」by capsmalt
cndjp: 「Microclimate」by capsmalt
 
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
 
Tekton 入門
Tekton 入門Tekton 入門
Tekton 入門
 

More from Takeshi Mikami

rdflintのvscode拡張の紹介とその実装方法
rdflintのvscode拡張の紹介とその実装方法rdflintのvscode拡張の紹介とその実装方法
rdflintのvscode拡張の紹介とその実装方法Takeshi Mikami
 
適切なクラスタ数を機械的に求める手法の紹介
適切なクラスタ数を機械的に求める手法の紹介適切なクラスタ数を機械的に求める手法の紹介
適切なクラスタ数を機械的に求める手法の紹介Takeshi Mikami
 
OAuth 2.0による認可の流れ
OAuth 2.0による認可の流れOAuth 2.0による認可の流れ
OAuth 2.0による認可の流れTakeshi Mikami
 
MapReduceによるConnected Components(連結成分)の見つけ方
MapReduceによるConnected Components(連結成分)の見つけ方MapReduceによるConnected Components(連結成分)の見つけ方
MapReduceによるConnected Components(連結成分)の見つけ方Takeshi Mikami
 
RDFチェックツール「rdflint」のご紹介 (LODチャレンジ2019受賞作品紹介 基盤技術部門優秀賞)
RDFチェックツール「rdflint」のご紹介 (LODチャレンジ2019受賞作品紹介 基盤技術部門優秀賞)RDFチェックツール「rdflint」のご紹介 (LODチャレンジ2019受賞作品紹介 基盤技術部門優秀賞)
RDFチェックツール「rdflint」のご紹介 (LODチャレンジ2019受賞作品紹介 基盤技術部門優秀賞)Takeshi Mikami
 
データサイエンスアイドル「小日向美穂」と考える「つながり」
データサイエンスアイドル「小日向美穂」と考える「つながり」データサイエンスアイドル「小日向美穂」と考える「つながり」
データサイエンスアイドル「小日向美穂」と考える「つながり」Takeshi Mikami
 
RDFのチェックツール「rdflint」と コミュニティによるオープンデータの作成
RDFのチェックツール「rdflint」とコミュニティによるオープンデータの作成RDFのチェックツール「rdflint」とコミュニティによるオープンデータの作成
RDFのチェックツール「rdflint」と コミュニティによるオープンデータの作成Takeshi Mikami
 
GitHubの機能を活用したGitHub Flowによる開発の進め方
GitHubの機能を活用したGitHub Flowによる開発の進め方GitHubの機能を活用したGitHub Flowによる開発の進め方
GitHubの機能を活用したGitHub Flowによる開発の進め方Takeshi Mikami
 
HBase CompleteBulkLoadその仕組み&発生した問題
HBase CompleteBulkLoadその仕組み&発生した問題HBase CompleteBulkLoadその仕組み&発生した問題
HBase CompleteBulkLoadその仕組み&発生した問題Takeshi Mikami
 
RDFチェックツール「rdflint」のご紹介
RDFチェックツール「rdflint」のご紹介RDFチェックツール「rdflint」のご紹介
RDFチェックツール「rdflint」のご紹介Takeshi Mikami
 
アーリース情報技術株式会社 会社案内 (2019/02/13)
アーリース情報技術株式会社 会社案内 (2019/02/13)アーリース情報技術株式会社 会社案内 (2019/02/13)
アーリース情報技術株式会社 会社案内 (2019/02/13)Takeshi Mikami
 
Spark MLlib ML Pipelines の概要 及びpysparkからの扱い方
Spark MLlib ML Pipelines の概要 及びpysparkからの扱い方Spark MLlib ML Pipelines の概要 及びpysparkからの扱い方
Spark MLlib ML Pipelines の概要 及びpysparkからの扱い方Takeshi Mikami
 
センサーによるデータ計測と異常検知の基本
センサーによるデータ計測と異常検知の基本センサーによるデータ計測と異常検知の基本
センサーによるデータ計測と異常検知の基本Takeshi Mikami
 
Webサイトのアクセスログによるユーザー属性推定
Webサイトのアクセスログによるユーザー属性推定Webサイトのアクセスログによるユーザー属性推定
Webサイトのアクセスログによるユーザー属性推定Takeshi Mikami
 
Google Cloud Dataflowによる データ変換処理入門
Google Cloud Dataflowによる データ変換処理入門Google Cloud Dataflowによる データ変換処理入門
Google Cloud Dataflowによる データ変換処理入門Takeshi Mikami
 
IoTでの機械学習活用イメージと強化学習のご紹介
IoTでの機械学習活用イメージと強化学習のご紹介IoTでの機械学習活用イメージと強化学習のご紹介
IoTでの機械学習活用イメージと強化学習のご紹介Takeshi Mikami
 
協調フィルタリング・アソシエーション分析によるレコメンド手法の紹介
協調フィルタリング・アソシエーション分析によるレコメンド手法の紹介協調フィルタリング・アソシエーション分析によるレコメンド手法の紹介
協調フィルタリング・アソシエーション分析によるレコメンド手法の紹介Takeshi Mikami
 
SparkMLlibで始めるビッグデータを対象とした機械学習入門
SparkMLlibで始めるビッグデータを対象とした機械学習入門SparkMLlibで始めるビッグデータを対象とした機械学習入門
SparkMLlibで始めるビッグデータを対象とした機械学習入門Takeshi Mikami
 
Ims@sparqlではじめるr markdownとgitbookによるレポート生成
Ims@sparqlではじめるr markdownとgitbookによるレポート生成Ims@sparqlではじめるr markdownとgitbookによるレポート生成
Ims@sparqlではじめるr markdownとgitbookによるレポート生成Takeshi Mikami
 

More from Takeshi Mikami (20)

rdflintのvscode拡張の紹介とその実装方法
rdflintのvscode拡張の紹介とその実装方法rdflintのvscode拡張の紹介とその実装方法
rdflintのvscode拡張の紹介とその実装方法
 
適切なクラスタ数を機械的に求める手法の紹介
適切なクラスタ数を機械的に求める手法の紹介適切なクラスタ数を機械的に求める手法の紹介
適切なクラスタ数を機械的に求める手法の紹介
 
OAuth 2.0による認可の流れ
OAuth 2.0による認可の流れOAuth 2.0による認可の流れ
OAuth 2.0による認可の流れ
 
MapReduceによるConnected Components(連結成分)の見つけ方
MapReduceによるConnected Components(連結成分)の見つけ方MapReduceによるConnected Components(連結成分)の見つけ方
MapReduceによるConnected Components(連結成分)の見つけ方
 
RDFチェックツール「rdflint」のご紹介 (LODチャレンジ2019受賞作品紹介 基盤技術部門優秀賞)
RDFチェックツール「rdflint」のご紹介 (LODチャレンジ2019受賞作品紹介 基盤技術部門優秀賞)RDFチェックツール「rdflint」のご紹介 (LODチャレンジ2019受賞作品紹介 基盤技術部門優秀賞)
RDFチェックツール「rdflint」のご紹介 (LODチャレンジ2019受賞作品紹介 基盤技術部門優秀賞)
 
データサイエンスアイドル「小日向美穂」と考える「つながり」
データサイエンスアイドル「小日向美穂」と考える「つながり」データサイエンスアイドル「小日向美穂」と考える「つながり」
データサイエンスアイドル「小日向美穂」と考える「つながり」
 
RDFのチェックツール「rdflint」と コミュニティによるオープンデータの作成
RDFのチェックツール「rdflint」とコミュニティによるオープンデータの作成RDFのチェックツール「rdflint」とコミュニティによるオープンデータの作成
RDFのチェックツール「rdflint」と コミュニティによるオープンデータの作成
 
GitHubの機能を活用したGitHub Flowによる開発の進め方
GitHubの機能を活用したGitHub Flowによる開発の進め方GitHubの機能を活用したGitHub Flowによる開発の進め方
GitHubの機能を活用したGitHub Flowによる開発の進め方
 
HBase CompleteBulkLoadその仕組み&発生した問題
HBase CompleteBulkLoadその仕組み&発生した問題HBase CompleteBulkLoadその仕組み&発生した問題
HBase CompleteBulkLoadその仕組み&発生した問題
 
RDFチェックツール「rdflint」のご紹介
RDFチェックツール「rdflint」のご紹介RDFチェックツール「rdflint」のご紹介
RDFチェックツール「rdflint」のご紹介
 
アーリース情報技術株式会社 会社案内 (2019/02/13)
アーリース情報技術株式会社 会社案内 (2019/02/13)アーリース情報技術株式会社 会社案内 (2019/02/13)
アーリース情報技術株式会社 会社案内 (2019/02/13)
 
Spark MLlib ML Pipelines の概要 及びpysparkからの扱い方
Spark MLlib ML Pipelines の概要 及びpysparkからの扱い方Spark MLlib ML Pipelines の概要 及びpysparkからの扱い方
Spark MLlib ML Pipelines の概要 及びpysparkからの扱い方
 
SPARQL入門
SPARQL入門SPARQL入門
SPARQL入門
 
センサーによるデータ計測と異常検知の基本
センサーによるデータ計測と異常検知の基本センサーによるデータ計測と異常検知の基本
センサーによるデータ計測と異常検知の基本
 
Webサイトのアクセスログによるユーザー属性推定
Webサイトのアクセスログによるユーザー属性推定Webサイトのアクセスログによるユーザー属性推定
Webサイトのアクセスログによるユーザー属性推定
 
Google Cloud Dataflowによる データ変換処理入門
Google Cloud Dataflowによる データ変換処理入門Google Cloud Dataflowによる データ変換処理入門
Google Cloud Dataflowによる データ変換処理入門
 
IoTでの機械学習活用イメージと強化学習のご紹介
IoTでの機械学習活用イメージと強化学習のご紹介IoTでの機械学習活用イメージと強化学習のご紹介
IoTでの機械学習活用イメージと強化学習のご紹介
 
協調フィルタリング・アソシエーション分析によるレコメンド手法の紹介
協調フィルタリング・アソシエーション分析によるレコメンド手法の紹介協調フィルタリング・アソシエーション分析によるレコメンド手法の紹介
協調フィルタリング・アソシエーション分析によるレコメンド手法の紹介
 
SparkMLlibで始めるビッグデータを対象とした機械学習入門
SparkMLlibで始めるビッグデータを対象とした機械学習入門SparkMLlibで始めるビッグデータを対象とした機械学習入門
SparkMLlibで始めるビッグデータを対象とした機械学習入門
 
Ims@sparqlではじめるr markdownとgitbookによるレポート生成
Ims@sparqlではじめるr markdownとgitbookによるレポート生成Ims@sparqlではじめるr markdownとgitbookによるレポート生成
Ims@sparqlではじめるr markdownとgitbookによるレポート生成
 

Apache Airflow入門 (マーケティングデータ分析基盤技術勉強会)

  • 1. takemikami’s note – http://takemikami.com/ 三上 威 (フリーランスITエンジニア) twitter: @takemikami マーケティングデータ分析基盤技術勉強会 『Apache Airflow 入門』 Apache Airflowの概要・Airflowによるジョブ実行と利用シーン 1 Airflow 2017.3.16 株式会社フロムスクラッチ 社内勉強会 Copyright (C) 2017 Takeshi Mikami. All rights reserved. フロムスクラッチ 社内勉強会
  • 2. takemikami’s note – http://takemikami.com/ はじめに • 本勉強会では、Airflowの以下の点についてお話しします。 – Apache Airflowの概要と特徴の紹介 – Airflowでの簡単なワークフローを実行方法 – Airflowの特徴を活かせる利用シーンの紹介 2Copyright (C) 2017 Takeshi Mikami. All rights reserved. 本勉強会で説明する内容の概要を示します。 Python言語で定義したワークフローを スケジュール・モニタリングするプラットフォーム Apache Airflowとは
  • 3. takemikami’s note – http://takemikami.com/ アジェンダ • Apache Airflowとは – Apache Airflowとは – Apache Airflowの特徴 – いわゆるジョブ管理ツールとの違い – 類似ツールの紹介 • Apache Airflowでのジョブ実行 – Airflowのセットアップ – AirflowのUI – デモ • Apache Airflowの利用シーン – レポーティングでの利用イメージ – 機械学習での利用イメージ 3Copyright (C) 2017 Takeshi Mikami. All rights reserved. Apache Airflow入門のアジェンダを示します。
  • 4. takemikami’s note – http://takemikami.com/Copyright (C) 2017 Takeshi Mikami. All rights reserved. 4 Apache Airflowとは • Apache Airflowとは • Apache Airflowの特徴 • いわゆるジョブ管理ツールとの違い • 類似ツールの紹介
  • 5. takemikami’s note – http://takemikami.com/ Apache Airflowとは • Python言語によるタスクのワークフロー定義 • 依存関係に基づいたジョブの実行 • ワークフロー管理のためのUI提供 – パイプラインのヴィジュアライズ – プロセスのモニタリング 5Copyright (C) 2017 Takeshi Mikami. All rights reserved. Apache Airflowとは Apache Airflowの紹介をします。 Python言語で定義したワークフローを スケジュール・モニタリングするプラットフォーム
  • 6. takemikami’s note – http://takemikami.com/ Apache Airflowの特徴 • タスクの依存関係をPython言語で定義・管理 – 特別な記法の習得が不要 – ワークフローの定義を、SCMで管理しやすい • タスクの依存関係に基づいたワークフローの動的生成 – タスクの要求変換の対応が容易 • タスクの実行ログの管理と再実行 – 未実行のタスクのみ実行するスケジュールが可能 6Copyright (C) 2017 Takeshi Mikami. All rights reserved. Apache Airflowとは Airflowの主な特徴について説明します。
  • 7. takemikami’s note – http://takemikami.com/ タスクの依存関係の考え方 • 「売上」「商品原価」「媒体別広告費」→「広告効果レポート」 ワークフローの依存関係は、以下の2つになる 7Copyright (C) 2017 Takeshi Mikami. All rights reserved. Apache Airflowとは タスクの依存関係の考え方の整理します。 広告費 集計 媒体商品別 広告費 広告効果 集計 広告効果 レポート 売上 商品原価 媒体B 広告費 媒体A 広告費 利益計算 商品別 利益 依存関係 依存関係
  • 8. takemikami’s note – http://takemikami.com/ ワークフロー動的生成の基本: DAG(有向非巡回グラフ) • DAG(Directed Acyclic Graph, 有向非巡回グラフ)であれば、 タスクの依存関係はトポロジカルソートで解決できる • DAGとはCycle(閉路)を持たない有向グラフのこと 8Copyright (C) 2017 Takeshi Mikami. All rights reserved. Apache Airflowとは ワークフローの動的生成に関する用語について整理します。 DAGの例: 2 11 5 10 9 7 8 3 Cycleの例: 2 11 5 10 9 7 8 3 Cycle →依存関係を解決可能 →依存関係を解決できない
  • 9. takemikami’s note – http://takemikami.com/ ワークフロー動的生成の基本: トポロジカルソート • トポロジカルソートとは、DAGの各nodeを 「どのnodeもその被依存nodeより前にあるように」並べること。 9Copyright (C) 2017 Takeshi Mikami. All rights reserved. Apache Airflowとは ワークフローの動的生成に関する用語について整理します。 トポロジカルソートの結果: ・ 7, 5, 3, 11, 8, 2, 9, 10 (見た目において左から右、上から下への順) ・ 3, 5, 7, 8, 11, 2, 9, 10 (数値的に小さなノードを前に持ってくる) ・ 3, 7, 8, 5, 11, 10, 2, 9 ・ 5, 7, 3, 8, 11, 10, 9, 2 (辺の数が少ないノードを前に持ってくる) ・ 7, 5, 11, 3, 10, 8, 9, 2 (辺の数が多いノードを前に持ってくる) ・ 7, 5, 11, 2, 3, 8, 9, 10 ※Wikipediaから ( https://ja.wikipedia.org/wiki/トポロジカルソート ) 7 5 3 11 8 2 9 10
  • 10. takemikami’s note – http://takemikami.com/ 未実行のタスクのみを実行する仕組み • Airflowでは依存関係・実行ログの情報を元に、 必要なタスクのみをスケジュールして実行出来る 10Copyright (C) 2017 Takeshi Mikami. All rights reserved. Apache Airflowとは Airflowで未実行のタスクのみを実行する仕組みを説明します。 7 5 3 11 8 2 9 10 2のスケジュール: 9のスケジュール: 7 5 3 11 8 2 9 10 7 5 3 11 8 2 9 10 2の実行後: →7, 5, 11の実行は不要
  • 11. takemikami’s note – http://takemikami.com/ いわゆるジョブ管理ツールとの違い • もっとも大きな違いは、 「タスクの依存関係に基づいてワークフローを動的に生成」 • メリット:要求出力ごとのワークフローの定義が不要 →要求出力の変化が激しい処理に対応しやすい ※レポーティングや機械学習の前処理など • デメリット:ワークフローを事前に計画しにくい →処理完了時間の要求がシビアなものに適用しにくい インフラのリソースプランニングが難しい 11Copyright (C) 2017 Takeshi Mikami. All rights reserved. Apache Airflowとは WebSAM JobCenterやJP1などのジョブ管理ツールとの違いを説明します。
  • 12. takemikami’s note – http://takemikami.com/ 類似ツールの紹介 • Spotify luigi (python) https://github.com/spotify/luigi • Pinterest Pinball (python) https://github.com/pinterest/pinball • TresureData digdag (java) https://github.com/treasure-data/digdag • Rukawa (ruby) https://github.com/joker1007/rukawa • mario (sacala) https://github.com/intentmedia/mario 12Copyright (C) 2017 Takeshi Mikami. All rights reserved. Apache Airflowとは Airflowに似たツールの紹介です。 Airflowと同様の問題を解決する、類似ツールがいくつかあります。
  • 13. takemikami’s note – http://takemikami.com/Copyright (C) 2017 Takeshi Mikami. All rights reserved. 13 Apache Airflowでのジョブ実行 • Airflowのセットアップ • AirflowのUI • DAGと依存関係の定義 • サンプルワークフローの実行
  • 14. takemikami’s note – http://takemikami.com/ Airflowのセットアップ • Airflowは以下の流れでセットアップします。 ※Pythonがセットアップ済みの前提です。(Python 3.5.2 :: Anaconda 4.1.1 (x86_64)で確認) – インストール – 作業ディレクトリの作成 – データベースの初期化 – UI起動 14Copyright (C) 2017 Takeshi Mikami. All rights reserved. Apache Airflowでのジョブ実行 Airflowのセットアップ手順を示します。 $ pip install airflow $ mkdir ~/airflow_home && cd $_ $ export AIRFLOW_HOME=`pwd` $ airflow initdb $ airflow webserver -p 8080
  • 16. takemikami’s note – http://takemikami.com/ DAGの定義 • 以下の流れでDAGを定義します。 – DAG用ディレクトリの作成 – 「$AIRFLOW_HOME/dags/」配下にpythonでDAGを定義します ※dags配下をgitなどで管理しておくと便利 16Copyright (C) 2017 Takeshi Mikami. All rights reserved. Apache Airflowでのジョブ実行 DAGの定義方法を示します。 $ cd $AIRFLOW_HOME $ mkdir $AIRFLOW_HOME/dags
  • 17. takemikami’s note – http://takemikami.com/ シンプルな(単一タスクの) DAGを定義 17Copyright (C) 2017 Takeshi Mikami. All rights reserved. Apache Airflowでのジョブ実行 シンプルなDAGの定義です。 ($AIRFLOW_HOME/dags/original_dag1.py) from builtins import range from airflow.operators import BashOperator, DummyOperator from airflow.models import DAG from datetime import datetime, timedelta args = { 'owner': 'airflow', 'start_date': datetime.combine(datetime.today() - timedelta(1), datetime.min.time()), } dag = DAG( dag_id='simple_dag', default_args=args, schedule_interval='0 0 * * *', dagrun_timeout=timedelta(minutes=60)) last_task = DummyOperator(task_id='last_task', dag=dag) if __name__ == "__main__": dag.cli() DAGの定義 タスクの定義 初期パラメータの定義
  • 18. takemikami’s note – http://takemikami.com/ 依存関係の追加 18Copyright (C) 2017 Takeshi Mikami. All rights reserved. Apache Airflowでのジョブ実行 シンプルなDAGの定義です。 ($AIRFLOW_HOME/dags/original_dag2.py) ※省略※ last_task = DummyOperator(task_id='last_task', dag=dag) before_task = BashOperator( task_id=’before_task', bash_command='echo before task', dag=dag) last_task.set_upstream(before_task) ※省略※ • 先行タスクを追加し、依存関係を設定します タスクの定義 依存関係の定義 DAG:
  • 19. takemikami’s note – http://takemikami.com/ サンプルワークフローの実行 1/3 19Copyright (C) 2017 Takeshi Mikami. All rights reserved. Apache Airflowでのジョブ実行 サンプルのワークフローを実行してみます。 • 以下のサンプル「example_bash_operator」を実行していきます • 「runme_1」 3/1分の実行 DAG: $ airflow run example_bash_operator runme_1 2017-03-01
  • 20. takemikami’s note – http://takemikami.com/ サンプルワークフローの実行 2/3 20Copyright (C) 2017 Takeshi Mikami. All rights reserved. Apache Airflowでのジョブ実行 サンプルのワークフローを実行してみます。 • 以下のように次々と実行していきます $ airflow run example_bash_operator also_run_this 2017-03-02 $ airflow run example_bash_operator runme_1 2017-03-03 $ airflow run example_bash_operator runme_0 2017-03-04 結果のツリービュー: 実行したものが 処理済みになる
  • 21. takemikami’s note – http://takemikami.com/ サンプルワークフローの実行 2/3 21Copyright (C) 2017 Takeshi Mikami. All rights reserved. Apache Airflowでのジョブ実行 サンプルのワークフローを実行してみます。 • 3/1〜5の抜けているところを埋めるように実行します。 $ airflow backfill example_bash_operator -s 2017-03-01 -e 2017-03-05 結果のツリービュー: 実行前 歯抜け部分が 処理済みになる
  • 22. takemikami’s note – http://takemikami.com/Copyright (C) 2017 Takeshi Mikami. All rights reserved. 22 Apache Airflowの利用シーン • レポーティングでの利用イメージ • 機械学習での利用イメージ
  • 23. takemikami’s note – http://takemikami.com/ 追加部分 レポーティングでの利用イメージ • レポート追加は「タスク追加」「依存関係追加」で ワークフローを実現 23Copyright (C) 2017 Takeshi Mikami. All rights reserved. Apache Airflowの利用シーン レポーティングでの適用イメージを示します。 広告費 集計 媒体商品別 広告費 広告効果 集計 広告効果 レポート 売上 商品原価 媒体B 広告費 媒体A 広告費 利益計算 商品別 利益 キャンペーン 効果集計 キャンペーン 効果レポート キャンペーン コスト 依存関係追加 タスク追加
  • 24. takemikami’s note – http://takemikami.com/ 機械学習での利用イメージ 1/3 • 例えば、商品カテゴリ毎の購入商品点数で性別を予測したい。 – 特徴量(説明変数): 商品カテゴリ毎の購入商品点数 – 目的変数: 性別 24Copyright (C) 2017 Takeshi Mikami. All rights reserved. Apache Airflowの利用シーン 機械学習での適用イメージを示します。 性別 電化製品 キッチン 用品 ベビー用 品 アパレル カー用品 食品 男性 3 0 0 2 8 0 女性 0 5 5 0 0 0 ? 3 1 0 1 1 4 ? 1 0 0 0 0 8 目的変数 商品カテゴリ毎の購入商品点数 特徴量
  • 25. takemikami’s note – http://takemikami.com/ 機械学習での利用イメージ 2/3 • 配達希望日も特徴に加えた方が予測精度が上がるのでは? – 特徴量(説明変数): 商品カテゴリ毎の購入商品点数+配達希望日 – 目的変数: 性別 25Copyright (C) 2017 Takeshi Mikami. All rights reserved. Apache Airflowの利用シーン 機械学習での適用イメージを示します。 性別 電化製品 キッチン 用品 ベビー用 品 アパレル カー用品 食品 平日 休日 男性 3 0 0 2 8 0 0 9 女性 0 5 5 0 0 0 5 1 ? 3 1 0 1 1 4 1 8 ? 1 0 0 0 0 8 7 1 目的変数 商品カテゴリ毎の購入商品点数 配達希望日 特徴量
  • 26. takemikami’s note – http://takemikami.com/ 追加部分 機械学習での利用イメージ 3/3 • 特徴量の追加もレポート追加同様に、 「タスク追加」「依存関係追加」で、動的にワークフローを生成 26Copyright (C) 2017 Takeshi Mikami. All rights reserved. Apache Airflowの利用シーン 機械学習での適用イメージを示します。 売上 顧客 購入点数 集計 顧客別 購入点数 予測用 データ 予測用 データ集計 学習と予測 性別予測済み 顧客 配送 配達日 集計 顧客別 配達日数 依存関係追加タスク追加