airflow官网 airflow-github

Airflow1.10版本,有UTC时区问题,所以还是使用airflow1.8.0

公司仍然是centos6.5,Python默认是2.6,而airflow使用Celery执行需要Python2.7,嗯,先准备新的Python环境

## http://hao.jobbole.com/pythonbrew/
## export PYTHONBREW_ROOT=/usr/local/.pythonbrew
yum install python-pip

# 默认安装在家目录
export PYTHONBREW_ROOT=/usr/local/.pythonbrew
pip install pythonbrew

## 各种坑
## 先下载Python源码包
wget https://www.python.org/ftp/python/2.7.10/Python-2.7.10.tgz
#......
yum -y install python-devel mysql-devel

## 官方指导:安装依赖包 https://github.com/utahta/pythonbrew
yum -y install zlib-devel openssl-devel readline-devel

pythonbrew install Python-2.7.10.tgz 
pythonbrew list
pythonbrew switch 2.7.10  # 升级Python也不错哦

## 安装 setuptools、pip
wget https://bootstrap.pypa.io/get-pip.py
python get-pip.py   #安装pip的时候回自动安装 installed pip-10.0.1 setuptools-30.3.0 wheel-0.29.0

pip -V
pip list

安装airflow=1.8.0

echo -e '\nexport AIRFLOW_HOME=/opt/airflow\n' >>/etc/profile
source /etc/profile
echo $AIRFLOW_HOME

export AIRFLOW_HOME=/opt/airflow
pip install airflow==1.8.0

准备数据库,建议mysql5.6

###################################
mysql> create database airflowdb_18_221;
mysql> grant all on airflowdb_18_221.* to airflow@'192.168.204.%' identified by 'channel2';
mysql> flush privileges

安装必要的 subpackage

pip install airflow[mysql]
pip install airflow[redis]
pip install airflow[celery]

修改配置文件,找到对应的行就行修改

## 配置airflow.cfg

executor = CeleryExecutor
load_examples = False
sql_alchemy_conn = mysql://airflow:channel2@192.168.204.111:3306/airflowdb_18_221
broker_url = broker_url = redis://127.0.0.1:6379/8
celery_result_backend = db+mysql://airflow:channel2@192.168.204.111:3306/airflowdb_18_221

######################
## 配置airflow 发邮件
######################

smtp_host = smtp.qq.com
smtp_starttls = True
smtp_ssl = False
smtp_user = username@qq.com
smtp_port = 25
smtp_password = userpasswd
smtp_mail_from = username@qq.com

初始化数据库

## 初始化数据库
airflow initdb

cd /opt/airflow
mkdir dags plugins logs

启动相应的进程

airflow worker
airflow scheduler
airflow web

安装进程管理工具Supervisord管理airflow进程

easy_install supervisor  
echo_supervisord_conf > /etc/supervisord.conf  
  
# 编辑文件supervisord.conf,添加启动命令  
vi /etc/supervisord.conf  
  
[program:airflow_web]  
command=/usr/bin/airflow webserver -p 8080  
  
[program:airflow_worker]  
command=/usr/bin/airflow worker  

[program:airflow_scheduler]  
command=/usr/bin/airflow scheduler  
  
# 启动supervisord服务  
/usr/bin/supervisord -c /etc/supervisord.conf  
  
#此时可以用 supervisorctl 来管理airflow服务了  
supervisorctl start airflow_web  
supervisorctl stop airflow_web  
supervisorctl restart airflow_web  
supervisorctl stop all