加密配置
默认,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