centos7 超完整安装airflow

1. airflow完整安装流程 1.1 airflow 基础安装 1)默认自带python2环境,自行安装pip yum -y install epel-release yum install python-pip 2)进行pip的更新,否则很多安装会报错 pip install --upgrade pip pip install --upgrade setuptools 3)安装开发库 yum install python-devel yum install libevent-devel yum install mysql-devel 4)安装centos7下的mysql yum -y install mariadb mariadb-server 启动并设置开机启动 systemctl start mariadb systemctl enable mariadb 5)初始化配置mysql

注:可以设定允许root远程登录,并且删除test和None用户,这样才能使得mysql允许远程登录

mysql_secure_installation 6)安装airflow

在此之前需要设定临时环境变量

export SLUGIFY_USES_TEXT_UNIDECODE=yes pip install apache-airflow 7)初始化airflow并启动 airflow initdb airflow webserver -p 8080 8)防止密码明文存储 pip install cryptography 1.2 airflow mysql安装 1)安装airflow-mysql pip install apache-airflow[mysql] 2)创建airflow用户,创建airflow数据库并给出所有权限给次用户 create database airflow; create user 'testairflow'@'%' identified by '123123'; GRANT all privileges on airflow.* TO 'testairflow'@'%' IDENTIFIED BY '123123'; FLUSH PRIVILEGES; 3)修改airflow配置文件,指向数据库mysql ~/airflow/airflow.cfg 文件修改:sql_alchemy_conn = mysql://ct:152108@localhost/airflow 4)进行mariadb更新,从5.5.60升级为10.2.19,然后修改配置文件添加参数,之后初始化数据库 vim /etc/my.cnf explicit_defaults_for_timestamp=1 // 添加此行 systemctl restart mariadb airflow initdb 1.3 airflow 安装配置celery+rabbitmq(官方推荐使用rabblitmq) 1.3.1 安装celery和rabbitmq组件 pip install airflow[celery] pip install airflow[rabbitmq] 1.3.2 系统安装rabbit 1)安装 erlang yum install erlang 2)安装 rabbitmq wget rpm --import https://www.rabbitmq.com/rabbitmq-release-signing-key.asc yum install rabbitmq-server-3.6.15-1.el6.noarch.rpm 3)配置rabbitmq(设置用户名root,密码123123,创建虚拟主机airflow-rabbitmq) rabbitmqctl add_user root rabbitmq rabbitmqctl add_vhost airflow-rabbitmq rabbitmqctl set_user_tags root airflow-rabbitmq rabbitmqctl set_permissions -p airflow-rabbitmq root ".*" ".*" ".*" rabbitmq-plugins enable rabbitmq_management 1.3.3 修改airflow配置文件 executor = CeleryExecutor broker_url = amqp://root:123123@localhost:5672/airflow-rabbitmq result_backend = amqp://root:123123@localhost:5672/airflow-rabbitmq 1.4 airflow 安装配置celery+redis 1.3.1 安装redis 1)系统安装redis yum -y install redis 2)修改配置文件 vim /etc/redis.conf #bind 127.0.0.1 // 注释掉,使redis允许远程访问 requirepass 密码 // 修改这行,redis登录密码 3)开启redis服务 systemctl start redis 4)python下安装redis库 pip install redis 1.3.2 安装celery pip install celery 1.3.3 配置airflow.cfg

修改内容:

executor = CeleryExecutor broker_url = redis://127.0.0.1:6379/0 result_backend = redis://127.0.0.1:6379/0 1.3.4 airflow常用命令 airflow webserver -p 8080 // 打开web服务 airflow scheduler //打开调度器,必须启动,不然DAG在使用celeryExecutor和LocalExcutor没法run起来 airflow list_dags //查看已有的dag列表 airflow list_tasks tutorial //查看某个dag下的任务 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 3. airflow 架构 3.1核心概念:

DAG有向无环图

一个DAG由多个task组成

3.2 包含组件: 1)一个元数据库(mysql) 2)一组airflow工作节点 3)一个调节器(redis或RabbitMQ) 4)一个airflow web服务器 3.3 工作流依赖种类: 1)时间依赖:定时触发任务

完整支持crontab表达式,还支持python的datatime

2)任务间依赖:任务A需要在任务B完成的基础上触发 3)权限依赖:用户权限管理 4)机器依赖:任务的执行只能在某些指定机器上执行

在celeryExcuter可以使用不同的用户启动worker,不同的worker监听不同的queue,解决用户权限依赖问题;worker也可以启动在不同的机器上,解决机器依赖问题

5)外部系统依赖:依赖各种外部数据库数据等,并且需要调用接口访问外部数据

有一个hook机制,作用时建立一个与外部数据系统的连接,比如mysql、hdfs、本地文件系统,通过拓展的hook

6)资源依赖:某些任务消耗机器资源非常多,进行任务执行时需要对任务进行限制

可以为任意的task指定一个抽象的pool,每个pool指定一个slot数,每启动一个task任务就占用一个slot数,当slot数占满之后就进入等待状态

3.4 基本使用过程 1)根据实际需要,使用不同的Operator 2)传入具体的参数,定义一系列的tasks // operator是task的抽象类 3)定义tasks之间的关系,形成一个DAG 4)调度DAG运行,每个task会形成一个instance 5)使用命令或者web ui进行查看管理

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyjxyx.html