centos7 安装airflow及配置celery+RabbitMQ和celery+redis

趁我未失忆之前,记录过去曾经的自己


前言

与所有其他解决方案相比,Airflow是一种功能超强的引擎,你不仅可以使用插件来支持各种作业,包括数据处理作业:Hive,Pig(尽管你也可以通过shell命令提交它们),以及通过文件/ db entry / s3来触发的一般流程管理,或者等待来自Web端点的预期输出,但它也提供了一个很好的UI,允许你通过代码/图形检查DAG(工作流依赖性),并监视作业的实时执行。相较之前安装Azkaban,Airflow更为广泛交互在hadoop的生态环境。


一、airflow完整安装流程

1.airflow 前置安装

1.进行pip的更新,否则很多安装会报错airflow 基础安装

[root@019 ~] pip install --upgrade pip
[root@019 ~] pip install --upgrade setuptools

2.安装开发库

[root@019 ~] yum install python-devel
[root@019 ~] yum install libevent-devel
[root@019 ~] yum install mysql-devel

3.安装mysql

[root@019 ~] yum -y install mariadb mariadb-server
启动并设置开机启动
[root@019 ~] systemctl start mariadb
[root@019 ~] systemctl enable mariadb

4.初始化配置mysql

注:可以设定允许root远程登录

[root@019 ~] mysql_secure_installation

5.環境變量設置

 export AIRFLOW_HOME=/path/to/airflow
 export SLUGIFY_USES_TEXT_UNIDECODE=yes

2.airflow 與airflow mysql安装

1.安装airflow

[root@019 ~] pip install apache-airflow

2.初始化airflow并启动

[root@019 ~] airflow db init
[root@019 ~] airflow webserver -p 8080

3.安装airflow-mysql

[root@019 ~] airflow db init
[root@019 ~] airflow webserver -p 8080

4.创建testairflow用户,创建airflow数据库并给出所有权限给testairflow用户

#進入mysql,创建数据库,建立用戶,将数据库airflow的所有权限授权testairflow用户,密码123456且该用户可在任何IP段登录操作
[root@019 ~] mysql
MariaDB [(none)]> create database airflow;
MariaDB [(none)]> create user 'testairflow'@'%' identified by '123123';
MariaDB [(none)]> GRANT all privileges on airflow.* TO 'testairflow'@'%'  IDENTIFIED BY '123123';
MariaDB [(none)]> FLUSH PRIVILEGES;

或是利用指令创建用户,创建用户必须使用命令行 airflow create_use,创建admin和view两个用户,也可以用 airflow users create --h 查询其它指令,然后以下必填

# -p PASSWORD, --password PASSWORD
airflow users create --username admin --firstname admin --lastname user --role Admin -p admin --email admin@example.org
airflow users create --username view --firstname view --lastname user --role Viewer -p view  --email admin@example.org

5.修改airflow配置文件,指向数据库mysql

#打開airflow.cfg
[root@019 ~] vim /root/airflow/airflow.cfg
#文件修改
sql_alchemy_conn = mysql://testairflow:123123@localhost/airflow 

6.修改配置文件添加参数,之后初始化数据库

#新增explicit_defaults_for_timestamp要注意检查您的数据库版本以查看它是否支持此变量(MariaDB> = 10.1.8)
vim /etc/my.cnf
explicit_defaults_for_timestamp=1   // 添加此行
systemctl restart mariadb
airflow db init

如果在这里遇到(1193, “Unknown system variable ‘explicit_defaults_for_timestamp’”) 类似的问题,发现系统无法认识这个指令explicit_defaults_for_timestamp,解决的问题是查看一下自己的database 版本,此参数支援(MariaDB >= 10.1.8),最好升级一下database 。

二、airflow 安装配置celery+rabbitmq(官方推荐使用rabblitmq)

1.安装celery和rabbitmq组件

pip install apache-airflow[celery]
pip install apache-airflow[rabbitmq]

2.系统安装rabbit

1.安装 erlang:

想说为何要安装erlang,则原因:RabbitMQ服务端代码是使用并发式语言Erlang编写的,安装Rabbit MQ的前提是安装Erlang。

#下载Erlang
[root@019 yum.repos.d]# curl -s https://packagecloud.io/install/repositories/rabbitmq/erlang/script.rpm.sh | sudo bash
#安装
[root@019 yum.repos.d]#yum install -y erlang

虽然这一步我没报错,但如果报错如下:

[**** ]# yum install erlang
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
No package erlang available.
Error: Nothing to do

则需要安装第三方软件库 epel:

# 下载
wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
# 安装完成即可
rpm -ivh epel-release-latest-7.noarch.rpm

检查erlang的版本号

[root@019 yum.repos.d]# erl
Erlang/OTP 23 [erts-11.1.8] [source] [64-bit] [smp:32:32] [ds:32:32:10] [async-threads:1] [hipe]
Eshell V11.1.8  (abort with ^G)

再次执行则可以成功安装erlang了!

2.安装 rabbitMQ:

先导入两个key

rpm --import https://packagecloud.io/rabbitmq/rabbitmq-server/gpgkey
rpm --import https://packagecloud.io/gpg.key

没报错就表示正常。

然后再完成RabbitMQ的前置条件配置

curl -s https://packagecloud.io/install/repositories/rabbitmq/rabbitmq-server/script.rpm.sh | sudo bash

下载安装 RabbitMQ安装包(可在https://www.rabbitmq.com/download.html下选择对应的版本)
注意看CentOS的版本,6,7,8都有。我这里是7.6。有时候直接点击浏览器下载可能会很慢,可以F12,找到链接,在centos里面去使用wget下载,可能会很快。这里给出Centos7和Centos8的下载链接。
CentOS7:
https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.8.5/rabbitmq-server-3.8.5-1.el7.noarch.rpm
CentOS8:
https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.8.5/rabbitmq-server-3.8.5-1.el8.noarch.rpm

下载成功后,然后使用命名安装。

wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.8.5/rabbitmq-server-3.8.5-1.el7.noarch.rpm
rpm -ivh rabbitmq-server-3.8.5-1.el7.noarch.rpm

以上安装会出现一个警告和一个错误。警告是缺少key,而错误是socat,只需要导入key和安装socat即可。

[root@019 ~]# rpm -ivh rabbitmq-server-3.8.5-1.el7.noarch.rpm
warning: rabbitmq-server-3.8.5-1.el7.noarch.rpm: Header V4 RSA/SHA256 Signature, key ID 6026dfca: NOKEY
error: Failed dependencies:
        socat is needed by rabbitmq-server-3.8.5-1.el7.noarch

导入key

rpm --import https://www.rabbitmq.com/rabbitmq-release-signing-key.asc

安装socat

yum -y install epel-release
yum -y install socat

安装完成再次安装RabbitMQ

rpm -ivh rabbitmq-server-3.8.5-1.el7.noarch.rpm

配置rabbitmq环境变量:

vi /etc/profile
#set rabbitmq environment
export PATH=$PATH:/usr/local/rabbitmq/sbin
source /etc/profile

启动服务

rabbitmq-server -detached #启动rabbitmq,-detached代表后台守护进程方式启动。

查看状态:

rabbitmqctl status

其他相关命令
启动服务:rabbitmq-server -detached【 /usr/local/rabbitmq/sbin/rabbitmq-server -detached 】
查看状态:rabbitmqctl status【 /usr/local/rabbitmq/sbin/rabbitmqctl status 】
关闭服务:rabbitmqctl stop【 /usr/local/rabbitmq/sbin/rabbitmqctl stop 】
列出角色:rabbitmqctl list_users

配置网页插件启用管理平台插件,首先创建目录,否则可能报错,然后启用插件后,可以可视化管理RabbitMQ。

mkdir /etc/rabbitmq
rabbitmq-plugins enable rabbitmq_management

配置linux 端口 15672 网页管理 5672 AMQP端口:

firewall-cmd --permanent --add-port=15672/tcp
firewall-cmd --permanent --add-port=5672/tcp
systemctl restart firewalld.service

配置rabbitmq(设置用户名root,密码rabbitmq,创建虚拟主机airflow-rabbitmq)


[root@019 ~]# /sbin/service rabbitmq-server stop
Redirecting to /bin/systemctl stop rabbitmq-server.service
[root@019 ~]# /sbin/service rabbitmq-server start
Redirecting to /bin/systemctl start rabbitmq-server.service
[root@019 ~]# rabbitmqctl add_user root rabbitmq
Adding user "root" ...
[root@019 ~]# rabbitmqctl add_vhost airflow-rabbitmq
dding vhost "airflow-rabbitmq" ...
[root@019 ~]# rabbitmqctl set_user_tags root airflow-rabbitmq
Setting tags for user "root" to [airflow-rabbitmq] ...
[root@019 ~]# rabbitmqctl set_permissions -p airflow-rabbitmq root ".*" ".*" ".*"
Setting permissions for user "root" in vhost "airflow-rabbitmq" ...
[root@019 ~]# rabbitmq-plugins enable rabbitmq_management
Enabling plugins on node rabbit@019:
rabbitmq_management
The following plugins have been configured:
  rabbitmq_management
  rabbitmq_management_agent
  rabbitmq_web_dispatch
Applying plugin configuration to rabbit@019...
Plugin configuration unchanged.

相关启动或停止的RabbitMQ命令如下:

service rabbitmq-server start
service rabbitmq-server stop
service rabbitmq-server restart
service rabbitmq-server status
service rabbitmq-server try-restart
service rabbitmq-server reload
service rabbitmq-server force-reload
3.访问控制台界面

访问地址 http://安装主机IP:15672:
在这里插入图片描述
创建用户名admin,密码aaaaaa的用户:

rabbitmqctl add_user admin aaaaaa

设置admin为超级管理员

rabbitmqctl set_user_tags admin administrator

授权远程访问(也可以登录后,可视化配置)

rabbitmqctl set_permissions -p / admin "." "." ".*"

创建完成后,重启RabbitMQ

systemctl restart rabbitmq-server

用admin登入就完成
在这里插入图片描述

RabbitMQ安装官网文档:RabbitMQ安装

4.修改airflow配置
#打開airflow.cfg
[root@019 ~] vim /root/airflow/airflow.cfg
#文件增加
executor = CeleryExecutor
broker_url = amqp://root:rabbitmq@localhost:5672/airflow-rabbitmq
result_backend = amqp://root:rabbitmq@localhost:5672/airflow-rabbitmq
#增加环境变量
[root@019 ~]# echo "export C_FORCE_ROOT="True"" >> /etc/profile
[root@019 ~]# source /etc/profile

三、airflow 安装配置celery+redis

1.安装redis

yum -y install redis

2.修改配置文件

 vim /etc/redis.conf
#bind 127.0.0.1     // 注释掉,使redis允许远程访问
requirepass redis  // 修改这行,redis登录密码(自定义)

3.开启redis服务

systemctl start redis

4.python下安装redis库

pip install redis

5.安装celery

pip install celery

6.配置airflow.cfg

#打開airflow.cfg
[root@019 ~] vim /root/airflow/airflow.cfg
#文件增加
executor = CeleryExecutor
broker_url = redis://127.0.0.1:6379/0
result_backend = redis://127.0.0.1:6379/0

7.airflow常用命令

#打开web服务
airflow webserver -p 8080	
#打开调度器,必须启动,不然DAG在使用celeryExecutor和LocalExcutor没法run起来
airflow scheduler 	
#查看已有的dag列表
airflow list_dags
#查看某个dag下的任务
airflow list_tasks tutorial
#树形结构查看
airflow list_tasks tutorial --tree

airflow test dag_name task_name test_time
airflow run dagid [time] run task instance
airflow backfill [dagid] -s[startTime] -e [endTime] run a backfill over 2 days
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值