加密配置

默认,airflow会将连接的密码在metadata数据库存储为明文。而crypto包可以用于加密需求。

pip install apache-airflow[crypto]

生成fernet_key

from cryptography.fernet import Fernet
fernet_key= Fernet.generate_key()
print(fernet_key)

airflow.cfg 中用fernet_key替换,或者是使用环境变量

EXPORT AIRFLOW__CORE__FERNET_KEY = your_fernet_key

此时,重启airflow webserver即可。

Celery配置

CeleryExecutor可以扩展worker节点,若要使用该执行器,首先需要构建Celery backend,比如RabbitMQ,或Redis。

在集群中,airflow配置需要一致。

启动worker,只需要

airflow worker

你也可以运行airflow flower ,它会启动一个Flower webserver,它是构建在Celery之上的Web UI,用于监控workers。

Dask配置

DaskExecutor允许在Dask分布式集群运行Airflow任务。

未创建集群,首先需要启动Scheduler

# default settings for a local cluster
DASK_HOST=127.0.0.1
DASK_PORT=8786

dask-scheduler --host $DASK_HOST --port $DASK_PORT

启动至少一个Worker,连接主机

dask-worker $DASK_HOST:$DASK_PORT

日志配置

用户可以在airflow.cfg 配置日志目录,默认它在AIRFLOW_HOME 目录内。

除此之外,用户还可以提供远端存储位置。现阶段支持Amazon S3和Google Cloud Storage

[core]
# Airflow can store logs remotely in AWS S3 or Google Cloud Storage. Users
# must supply a remote location URL (starting with either 's3://...' or
# 'gs://...') and an Airflow connection id that provides access to the storage
# location.
remote_base_log_folder = s3://my-bucket/path/to/logs
remote_log_conn_id = MyS3Conn
# Use server-side encryption for logs stored in S3
encrypt_s3_logs = False

在进行远端存储前,首先需要建立connection

S3Hook('MyS3Conn')

airflow的日志存储格式为

{dag_id}/{task_id}/{execution_date}/{try_number}.log

Mesos配置

MesosExecutor允许在Mesos集群调度airflow任务。

systemd配置

scripts/systemd 目录可以找到脚本文件,可以将其拷贝到/usr/lib/systemd/system

环境变量可以从/etc/sysconfig/airflow 设置。

upstart配置

scripts/upstart 目录找到脚本文件,将其拷贝到/etc/init

results matching ""

    No results matching ""