はじめに
Airflow関連の作業の備忘録
対象バージョン
1系
基本
- Airflowとは
- ワークフローをpythonで書いたDAGを作成し、定常実行するものです。
- https://airflow.apache.org
- 類似でdigdag、jenkinsなどあります。
- Airflow source code
- アーキテクチャ
- sql alchemy
- 図
-
https://cloud.google.com/composer/docs/concepts/overview?hl=ja#architecture
- celeryのredis利用用途
- celery message broker (タスクキューイング用 redis, RabbitMQ等が使える)
- celeryのredis利用用途
-
https://cloud.google.com/composer/docs/concepts/overview?hl=ja#architecture
- Executor
- メッセージのキューイングするプロセスです。ExecutorとSchedulerは密に結合しており、スケジュールされた各タスクを実際に実行するWorkerプロセスを決定します。次のような異なるタイプのExecutorがあります。
- SequentialExecutor: Schedulerプロセスと同じマシン上でタスクをシーケンシャルに処理する
- LocalExecutor: Schedulerプロセスと同じマシン上でタスクを並列処理する
- CeleryExecutor: Workerマシンのクラスタにタスクを分散して並列処理する
- キューイングから実行まで
- 実行部分
- execute_async がコールされます。キューイングも指定がなければデフォルト
- 実行部分
- キューイングから実行まで
- メッセージのキューイングするプロセスです。ExecutorとSchedulerは密に結合しており、スケジュールされた各タスクを実際に実行するWorkerプロセスを決定します。次のような異なるタイプのExecutorがあります。
同時実行数について
airflow.cfg name | Environment Variable | Default Value |
---|---|---|
parallelism | AIRFLOW__CORE__PARALLELISM | 32 |
dag_concurrency | AIRFLOW__CORE__DAG_CONCURRENCY | 16 |
worker_concurrency | AIRFLOW__CELERY__WORKER_CONCURRENCY | 16 |
max_threads | AIRFLOW__SCHEDULER__MAX_THREADS | 2 |
- parallelism
- タスク同時実行数。これは、全ての実行しているDAGを通しての制限値になります。
- dag_concurrency
- 特定DAG内のタスク同時実行数
- たとえ、50のタスクを持ったDAGでも同時実行数はこのパラメータに制限されます。
- worker_concurrency
- 一つのワーカーで実行されるタスクの数。4つワーカーがあれば、16のworker concurrencyで最大64タスクを同時に実行できます。
タスク優先度付
- タスクに優先度をつけたい場合
- queue、priority_weightを利用する
- 設定できるのはCPU優先度部分のみ?メモリなどはなさそう。
- https://airflow.apache.org/concepts.html
テーブル
- テーブル一覧
スキーマ | 名前 | 型 | 所有者
----------+-----------------------+----------+-------------
public | alembic_version | テーブル | xxxxx
public | celery_taskmeta | テーブル | xxxxx
public | celery_tasksetmeta | テーブル | xxxxx
public | chart | テーブル | xxxxx
public | connection | テーブル | xxxxx
public | dag | テーブル | xxxxx
public | dag_pickle | テーブル | xxxxx
public | dag_run | テーブル | xxxxx
public | import_error | テーブル | xxxxx
public | job | テーブル | xxxxx
public | known_event | テーブル | xxxxx
public | known_event_type | テーブル | xxxxx
public | kube_resource_version | テーブル | xxxxx
public | kube_worker_uuid | テーブル | xxxxx
public | log | テーブル | xxxxx
public | sla_miss | テーブル | xxxxx
public | slot_pool | テーブル | xxxxx
public | task_fail | テーブル | xxxxx
public | task_instance | テーブル | xxxxx
public | task_reschedule | テーブル | xxxxx
public | users | テーブル | xxxxx
public | variable | テーブル | xxxxx
public | xcom | テーブル | xxxxx