1.airflow的安装
1.1 安装环境
1.2 创建用户
2.安装airflow
2.1 安装python
2.2 安装pip
2.3 安装数据库
2.4 安装airflow
2.4.1 安装主模块
2.4.2 安装数据库模块、密码模块
2.5 配置airflown
2.5.1 设置环境变量
2.5.2 修改配置文件
3. 启动airflow
3.1 初始化数据库
3.2 创建用户
3.3 启动airflow
4.执行任务
5.安装celery
5.1 安装celery模块
5.2 安装celery broker
5.2.1 使用RabbitMQ作为broker
5.2.2 使用Redis做为broker
5.3 修改airflow配置文件启用celery
5.4 测试celery
5.5 部署多个worker
6. 问题
官方文档文档:
http://airflow.incubator.apache.org/project.html
1.环境准备
1.1 安装环境
- centos 6.7 (docker)
- python 2.7.13
docker run --name airflow -h airflow -dti --net hadoopnet --ip=172.18.0.20 -p 10131:22 -v /dfs/centos/airflow/home:/home -v /dfs/centos/airflow/opt:/opt yangxw/centos:6.7
1.2 创建用户
[root@airflow ~]# groupadd airflow
[root@airflow ~]# useradd airflow -g airflow
2.安装airflow
2.1 安装python
官网只有source包,所以必须编译安装。
参考:编译安装python2.7.13
由于编译python需要升级gcc,进而需要编译gcc,太复杂,因此直接下载python的集成环境Anaconda即可.
wegt https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/
2.2 安装pip
anacconda中集成了pip,直接使用即可.
2.3 安装数据库
airflow支持mysql postgrey oracle等。这里postgrey.使用yum install postgrey安装即可.
2.4 安装airflow
airflow组件可以模块化安装,用到哪个组件安装哪个组件,如:

2.4.1 安装主模块
安装主模块
[airflow@airflow ~]$ pip install airflow
2.4.2 安装数据库模块、密码模块
[airflow@airflow ~]$ pip install "airflow[postgres,password]"
2.5 配置airflown
2.5.1 设置环境变量
先设置$AIRFLOW_HOME环境变量。首次执行airflow命令时,会在$AIRFLOW_HOME下面创建airflow的配置文件airflow.cfg。
[airflow@airflow ~]$ vi .bashrc
export AIRFLOW_HOME=/home/airflow/airflow01
[airflow@airflow ~]$ airflow
[2017-05-08 02:00:04,677] {__init__.py:57} INFO - Using executor SequentialExecutor
usage: airflow [-h]
{resetdb,render,variables,connections,pause,task_failed_deps,version,trigger_dag,initdb,test,unpause,dag_state,run,list_tasks,backfill,list_dags,kerberos,worker,webserver,flower,scheduler,task_state,pool,serve_logs,clear,upgradedb}
…
airflow: error: too few arguments
[airflow@airflow ~]$ ll airflow01/
total 16
-rw-rw-r-- 1 airflow airflow 11418 May 8 02:00 airflow.cfg
-rw-rw-r-- 1 airflow airflow 1549 May 8 02:00 unittests.cfg
2.5.2 修改配置文件
查看airflow.cfg文件,整个文件分为core、cli、api、operators、webserver、email、smtp、celery、scheduler、mesos、kerberos、github_enterprise、admin几个部分。
对其中一些参数做修改,其它的保持默认值即可:
[core]
airflow_home = /home/airflow/airflow01
dags_folder = /home/airflow/airflow01/dags #dag python文件目录
executor = LocalExecutor #先使用local模式
base_log_folder = /home/airflow/airflow01/logs #主日志目录
sql_alchemy_conn = postgresql+psycopg2://yangxiaowen:yangxiaowen@10.38.1.78:5432/yangxiaowen
load_examples = True
default_impersonation = xiaowen.yang
[webserver]
authenticate = True
auth_backend = airflow.contrib.auth.backends.password_auth #1.8.1版本中cfg文件没有写这个参数,一定要加上,不然会报"airflow.exceptions.AirflowException: Failed to import authentication backend"错误
filter_by_owner = true
web_server_host = XXX.XXX.XXX.XXX #web server 机器IP
base_url = http://XXX.XXX.XXX.XXX:8080 #web server 机器IP:PORT
[smtp]
smtp_host = smtp.exmail.qq.com
smtp_user = bd-no-reply@bqjr.cn
smtp_password = BQJRbd@2016
smtp_mail_from = bd-no-reply@bqjr.cn
3. 启动airflow
3.1 初始化数据库
[airflow@airflow ~]$ airflow initdb
3.2 创建用户
$ python
Python 2.7.9 (default, Feb 10 2015, 03:28:08)
Type "help", "copyright", "credits" or "license" for more information.
>>> import airflow
>>> from airflow import models, settings
>>> from airflow.contrib.auth.backends.password_auth import PasswordUser
>>> user = PasswordUser(models.User())
>>> user.username = 'new_user_name'
>>> user.email = 'new_user_email@example.com'
>>> user.password = 'set_the_password'
>>> session = settings.Session()
>>> session.add(user)
>>> session.commit()
>>> session.close()
>>> exit()
3.3 启动airflow
[airflow@airflow ~]$ airflow webserver -p 8080
[airflow@airflow ~]$ airflow scheduler
如果不出错就启动成功了.
可以在页面上查看airflow的页面.

4.执行任务
airflow中的任务都是python程序.下面创建一个简单的python程序.
在$AIRFLOW_HOME下创建dags\logs目录.
vi testBashOperator.py
#!/usr/bin/python
from airflow import DAG
from airflow.operators.bash_operator import BashOperator
from datetime import datetime, timedelta
default_args = {
'owner': 'yangxw',
'depends_on_past': False,
'start_date': datetime(2017, 5, 9),
'email': ['xiaowen.yang@bqjr.cn'],
'email_on_failure': True,
'email_on_retry': True,
'retries': 1,
'retry_delay': timedelta(minutes=5),
# 'queue': 'bash_queue',
# 'pool': 'backfill',
# 'priority_weight': 10,
# 'end_date': datetime(2016, 1, 1),
}
dag = DAG('testBashOperator', default_args=default_args)
# t1, t2 and t3 are examples of tasks created by instantiating operators
t1 = BashOperator(
task_id='print_date',
bash_command='date',
dag=dag)
t2 = BashOperator(
task_id='sleep',
bash_command='sleep 5',
retries=3,
dag=dag)
t2.set_upstream(t1)
airflow webserver --debug=True
执行 python testBashOperator.py编译该文件,然后执行 airflow run testBashOperator print_date 2017-05-09 执行文件,在页面上能看到dag信息.

5.安装celery
celery是一个分布式消息队列,在airflow中,使用celeryExecutor可以动态的增加worker个数并将任务在远程机器上执行.生产中建议使用celeryExecutor来执行.
5.1 安装celery模块
pip install airflow[celery]
5.2 安装celery broker
celery需要设置broker和result队列(可以用同样的)来保存消息.celery 支持多种broker:

5.2.1 使用RabbitMQ作为broker
- 安装airflow的RabbitMQ模块
celery可以使用RabbitMQ或者redias等做为broker,甚至可以使用一些Experimental(实验性的)工具(如sqlalchemy支持的数据库),默认使用RabbitMQ.
pip install airflow[rabbitmq] - 安装RabbitMQ-server
yum install rabbitmq-server
(有160多个依赖包!)
然后启动service rabbitmq-server start - 配置 rabbitmq
http://blog.csdn.net/qazplm12_3/article/details/53065654
rabbitmqctl add_user ct 152108
rabbitmqctl add_vhost ct_airflow
rabbitmqctl set_user_tags ct airflow
rabbitmqctl set_permissions -p ct_airflow ct ".*" ".*" ".*"
5.2.2 使用Redis做为broker
- 安装celery redis模块
pip install -U "celery[redis]" - 安装redis数据库
yum install redis - 启动redis
service redis start
4.修改airflow配置文件
broker_url = redis://localhost:6379/0
celery_result_backend = redis://localhost:6379/0
5.3 修改airflow配置文件启用celery
修改airflow.cfg文件:
[core]
executor = CeleryExecutor
[celery]
broker_url = amqp://ct:152108@localhost:5672/ct_airflow
celery_result_backend = amqp://ct:152108@localhost:5672/ct_airflow
5.4 测试celery
[airflow@airflow ~]$ airflow webserver -p 8100
[airflow@airflow ~]$ airflow scheduler
[airflow@airflow ~]$ airflow worker #启动celeryexcutor
可以看到CeleryExecutor启动情况.再执行airflow run testBashOperator print_date 2017-05-09,看看CeleryExecutor运行情况.
5.5 部署多个worker
在需要运行作业的机器上的安装airflow airflow[celery] celery[redis] 模块后,启动airflow worker即可.这样作业就能运行在多个节点上.
6. 问题
在docker中遇到以下问题,换成实体机后解决
[2017-05-10 09:14:59,777: ERROR/Worker-1] Command 'airflow run testFile echoDate 2017-05-10T00:00:00 --local -sd DAGS_FOLDER/testFile.py' returned non-zero exit status 1
[2017-05-10 09:14:59,783: ERROR/MainProcess] Task airflow.executors.celery_executor.execute_command[c5d5ea39-0141-46bb-b33a-06a924c07508] raised unexpected: AirflowException('Celery command failed',)
Traceback (most recent call last):
File "/opt/anaconda2/lib/python2.7/site-packages/celery/app/trace.py", line 240, in trace_task
R = retval = fun(*args, **kwargs)
File "/opt/anaconda2/lib/python2.7/site-packages/celery/app/trace.py", line 438, in __protected_call__
return self.run(*args, **kwargs)
File "/opt/anaconda2/lib/python2.7/site-packages/airflow/executors/celery_executor.py", line 59, in execute_command
raise AirflowException('Celery command failed')
AirflowException: Celery command failed
参考:
http://airflow.incubator.apache.org
https://my.oschina.net/u/2297683/blog/751880
http://blog.csdn.net/qazplm12_3/article/details/53065654
http://docs.celeryproject.org/en/latest/getting-started/brokers/index.html
http://www.rabbitmq.com/install-rpm.html
1.airflow的安装的更多相关文章
- airflow的安装
1.环境准备1.1 安装环境1.2 创建用户2.安装airflow2.1 安装python2.2 安装pip2.3 安装数据库2.4 安装airflow2.4.1 安装主模块2.4.2 安装数据库模块 ...
- airflow的安装和使用 - 完全版
之前试用了azkaban一小段时间,虽然上手快速方便,但是功能还是太简单,不够灵活. Airflow使用代码来管理任务,这样应该是最灵活的,决定试一下. 我是python零基础,在使用airflow的 ...
- airflow安装rest api插件发现airflow webserver服务不能启动的解决办法
安装插件airflow-rest-api 1)获取 wget https://github.com/teamclairvoyant/airflow-rest-api-plugin/archive/ma ...
- airflow 安装配置celery+rabbitmq celery+redis
AirFlow的安装可以参考:https://www.cnblogs.com/braveym/p/11378851.html 这里介绍的是AirFlow 安装配置celery+rabbitmq 和 ...
- Centos7 安装部署 Airflow
本人在centos7 的环境下部署,怎么在centos7 下配置静态 IP 关闭防火墙 以及安装jdk在这里不多赘述, centos7 配置静态ip可以参考:https://www.cnblogs.c ...
- 系统研究Airbnb开源项目airflow
开源项目airflow的一点研究 调研了一些几个调度系统, airflow 更满意一些. 花了些时间写了这个博文, 这应该是国内技术圈中最早系统性研究airflow的文章了. 转载请注明出处 htt ...
- 搭建Airflow数据流调度器
服务器使用的是centos系统,需要安装好pip和setuptools,同时注意更新安装的版本 接下来参考安装好Airflow Airflow 1.8 工作流平台搭建 http://blog.csdn ...
- 调度系统Airflow1.10.4调研与介绍和docker安装
Airflow1.10.4介绍与安装 现在是9102年,8月中旬.airflow当前版本是1.10.4. 随着公司调度任务增大,原有的,基于crontab和mysql的任务调度方案已经不太合适了,需要 ...
- linux上如何安装git
安装依赖软件 yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel asciidoc yum instal ...
随机推荐
- 『ACM C++』 PTA 天梯赛练习集L1 | 018-020
终于一周有这么一天能够安静下来好好学习打打题,还是很美滋滋的哈哈~加油加油~ ------------------------------------------------L1-018------- ...
- ubuntu SDL2 安装时依赖文件导致安装失败
今天打算学习littlev GUI,使用Ubuntu来实现仿真,然后在安装SDL2的时候,始终因为依赖关系导致安装失败,我尝试手动去安装那些有依赖关系的包发现根本不可行,然后我百度上也没有找到合适的法 ...
- 【Memcached】原理、体系架构、基本操作及路由算法
1. 什么是Memcached 要了解Memcached首先要到官网上去看官方对它的描述.Memcached的官网网站是:http://memcached.org/,官方对Memcached的描述如下 ...
- windows提权之前的信息收集
0x00 基本信息 -获取主机名:hostname或者echo %COMPUTERNAME% -获取所属域信息:systeminfo 获取环境变量:set 0x01 获取系统安装的软件信息 -导出注册 ...
- unix文件共享
UNIX系统支持在不同的进程间共享打开文件.内核使用3种数据结构表示打开文件,他们之间的关系决定了在文件共享方面一个进程对另一个进程产生的影响. (1)每个进程在进程表中都有一个记录项,记录项中包含一 ...
- ie的盒模型和标准模型
使用 box-sizing:content-box || border-box || inherit 原理图 计算 怪异模型|IE模型 div宽度(定死) = 内容宽度+border宽度+paddin ...
- GD32F20x系列使用问题总结
GD单片机近几年越来越火了,既有他自身相比与ST的价格优势,也有支持国货的信仰加成.然而一个新的东西,或者说一个相对较新的东西,在使用的友好性和资料的完整性方面还有很长的路要走. 现将个人使用过程中碰 ...
- java入门---修饰符&访问修饰符&非访问修饰符
Java语言提供了很多修饰符,主要分为以下两类: 访问修饰符 非访问修饰符 修饰符用来定义类.方法或者变量,通常放在语句的最前端.我们通过下面的例子来说明: public class ...
- java课堂实践(5月17日)20155317 王新玮
对P145 MathTool.java 代码托管 在IDEA中,使用JUnit进行单元测试,测试用例不少于三个,要包含正常情况,边界情况.提交测试代码和运行结果截图,加上学号水印,提交码云代码链接. ...
- # 第二周c实践所遇见的问题
第二周c实践所遇见的问题 地址符 在编程练习中时常忘记写入地址符,造成过运行错误,运行结果错误的惨痛教训,一个小小的错误耗费了很长的时间来寻找错误之处,养成写代码的一些好习惯势在必行.牢记scanf( ...