airflow 部署
环境 :
ubuntu 14.04 LTS
python 2.7
script:
设置环境变量:
export AIRFLOW_HOME=~/airflow
安装相关依赖包:
sudo apt-get install python-dev sudo apt-get install python-numpy sudo pip install airflow sudo pip install markupsafe sudo pip install sqlalchemy sudo pip install dateutil sudo pip install mako sudo pip install werkzeug sudo pip install itsdangerous sudo pip install wtforms sudo pip uninstall python-daemon sudo pip install python-daemon
sudo apt-get install python-pandas
最后两行代码解决这个问题:https://issues.apache.org/jira/browse/AIRFLOW-344
之后修改配置文件,不让加载hive相关东东。
vi ~/airflow/airflow.cfg
第62行:
load_examples = False
初始化默认数据库:
airflow initdb
运行web服务器
airflow webserver -p 8080
可能还需要安装一个包
sudo pip install flask_wtf
效果图:
运行helloworld (tutorial.py)python ~/airflow/dags/tutorial.py
如果任务看到了,但没执行,看这里:https://airflow.incubator.apache.org/faq.html#why-isn-t-my-task-getting-scheduled
发现hello world一直没有执行, 手工执行了一把,说要celeryExecutor
于是装呗
sudo pip install 'airflow[mysql,celery]'
celery需要celery包,默认backend用redis
sudo pip install celery
sudo pip install redis
以及重装pandas(celery 需要 0.15.2 以上版本, apt-get install默认为0.13)
sudo pip install pandas
会有警告,最终提示成功。
重启所有服务:
airflow initdb
airflow worker
airflow webserver -p 8080
airflow scheduler
如果顺利,重新手动执行任务,将会看到以下页面:
附带核心配置文件改动处: ~/airflow/airflow.cfg
[core] executor = CeleryExecutor sql_alchemy_conn=mysql://airflow:airflow@localhost:3306/airflow load_examples = False [celery] broker_url = redis://127.0.0.1:6379/5 celery_result_backend = redis://127.0.0.1:6379/6
ps:
1.需要安装mysql,新建airflow数据库,创建用户airflow,密码airflow
2.需要安装redis(本例中是无密码的)
3.如果嫌部署麻烦, 可以考虑下docker 镜像: https://hub.docker.com/r/puckel/docker-airflow/
4. 在centos6.8上装特别顺利(运行时貌似一切都正常,就是任务一直处于running状态---debug了一番源代码, 发现内存要必需够大,发现必需用非root身份运行airflow worker, 务必保证核数够用,否则需要调低dag_concurrency, max_active_runs_per_dag,max_threads,parallelism, 否则worker出现莫名其妙的问题)
worker 服务本身启动celery的消费进程。
scheduler服务启动celery的生产者进程。
webserver则展现web页面,可有可无。
5. 登录验证, 参考这里:http://pythonhosted.org/airflow/security.html?highlight=authentication#web-authentication
先:
sudo pip install airflow[password]
6. airflow跑着跑着就挂了,一看内存还够用(可能需要不要钱的加内存),如果你到处找不到想要的错误日志。那么看看AIRFLOW_HOME下面是不是莫名其妙的多了几个 .err/.out 的文件,进去看看会有收获。
7. executor用LocalExecutor可能相对稳定。 celeryExecutor貌似各种问题(https://www.mail-archive.com/commits@airflow.incubator.apache.org/msg03411.html)(出问题的系统:centos 6.8 Final)
也许跟系统有关。。。。
====
转载请注明来源:http://www.cnblogs.com/Tommy-Yu/p/6230527.html
谢谢!