配置mysql作为元数据库
安装mysql
>: yum list | grep mysql >: yum install -y mysql-server mysql 启动MySQL服务 >:service mysqld start 重启MySQL服务 >:service mysqld restart 停止MySQL服务 >:service mysqld stop 检查MySQL服务是不是开机自启 >:chkconfig --list | grep mysqld 设置MySQL服务开机自启 >:chkconfig mysqld on
设置mysql用户密码
设置MySQL根用户密码 (注:mysql root用户默认没有密码) >:mysql -uroot 登陆mysql >:set password=password("password of root user") 为root用户设置密码,不是必须操作 >:flush privileges >:create database airflow 创建airflow数据库 >:grant all privileges on airflow.* TO 'odin'@'localhost' identified by 'odin_pw' with grant option (解释:odin 替换成你想要设置的用户名;odin_pw替换成该用户的密码) >:grant all privileges on airflow.* TO 'odin'@'%' identified by 'odin_pw' with grant option >:grant all privileges on airflow.* TO 'odin'@'ip' identified by 'odin_pw' with grant option (注:查看mysql版本信息的方法之一:`mysql --help | grep Distrib`)
在安装完mysql之后,你需要查看mysql的版本mysql --help | grep Distrib
,5.7版本以下的mysql还需要做一些修改:
查看mysql默认存储引擎并且修改默认引擎(因为MySQL的默认引擎是My了SAM数据引擎,该引擎不支持事务也不支持外键,在使用的过程中会有报错,并且对于字符串数据存储的长度也有限制,所以需要将默认引擎修改为innodb)
使用root账号登陆MySQL >:mysql -uroot 查看mysql使用的默认引擎 >:show engines (你可以看到默认的数据引擎并且其也支持InnoDB) 设置默认引擎,在配置文件/etc/my.cof中的[mysqld]中加入>:default-storage-engine=INNODB 最后重启mysql服务 (注意:在修改mysql默认存储引擎之前穿件的数据库和数据表的默认存储引擎是不会发生变化的,需要删除重建)
- 修改airflow源码,5.7之下版本的mysql在使用的时候会报如下错误,所以需要将
airflow/migrations/versions/4addfa1236f1_add_fractional_seconds_to_mysql_tables.py
源码中mysql.DATETIME(fsp=6)
全部改为mysql.DATETIME()
>>>> sqlalchemy.exc.ProgrammingError: (_mysql_exceptions.ProgrammingError)
>>>> (1064, "You have an error in your SQL syntax; check the manual that
>>>> corresponds to your MySQL server version for the right syntax to use
>>>> near '(6) NULL' at line 1") [SQL: u'ALTER TABLE dag MODIFY last_scheduler_run DATETIME(6) NULL']
出现这个错误的原因:fsp表示支持秒的小数部分的精度,最大为6,最小为0表示没有小数部分
但是这个功能只在5.6.4版本开始才被支持,所以如果版本太低,那一定就是会报错的啊
- 修改airflow配置支持mysql
- 更改airflow的数据库连接
sql_alchemy_conn = mysql://odin:odin_pw@localhost/airflow
- 初始化数据库
airflow initdb
- 更改airflow的数据库连接
配置CeleryExecutor作为任务执行器
安装erlang和rabbitMQ
wget https://packages.erlang-solutions.com/erlang/esl-erlang/FLAVOUR_1_general/esl-erlang_18.3-1~centos~6_amd64.rpm
yum install esl-erlang_18.3-1~centos~6_amd64.rpm
wget https://github.com/jasonmcintosh/esl-erlang-compat/releases/download/1.1.1/esl-erlang-compat-18.1-1.noarch.rpm
yum install esl-erlang-compat-18.1-1.noarch.rpm
wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.1/rabbitmq-server-3.6.1-1.noarch.rpm
yum install rabbitmq-server-3.6.1-1.noarch.rpm
配置RabbitMQ
- 使用rabbitqctl status 检查RabbitMQ是否正常启动
- 设置开机启动
chkconfig rabbitmq-server on
- 开启服务
service rabbitmq-server start
- 停止服务
service rabbitmq-server stop
- 重启服务
service rabbitmq-server restart
- 添加用户并且配置权限
rabbitmqctl add_user [user name] [user password]
:rabbitmqctl asd_user odin 123456
rabbitmqctl set_user_tag odin administrator
(这里可以添加不同的角色,也可以添加多个角色)rabbitmqctl add_vhost airflow
(添加一个命名空间或者叫虚拟主机 airflow)rabbitmqctl set_permissions -p airflow odin ".*" ".*" ".*"
登陆rabbitMQ
- rabbitMQ服务端口如下:
- client端通信端口
5672
- web ui访问端口
15672
- server间通信端口
25672
- erlang发现端口
4369
- client端通信端口
- rabbitMQ服务端口如下:
- 配置airflow.cfg
broker_url = amqp://odin:123456@localhost:5672/airflow
celery_result_backend = db+mysql://odin:odin_pw@localhost:3306/airflow
executor = CeleryExecutor
default_queue = airflow
- 重新启动airflow
airflow webserver -p8080
airflow worker
airflow flower
执行airflow flower
启动celery的 flower ui,可以在网页端访问localhost:5555端口查看任务执行情况。