写点什么

大数据调度平台 Airflow(三):Airflow 单机搭建

作者:Lansonli
  • 2022 年 9 月 20 日
    广东
  • 本文字数:2770 字

    阅读完需:约 9 分钟

大数据调度平台Airflow(三):Airflow单机搭建

Airflow 单机搭建

Airflow 是基于 Python 的,就是 Python 中的一个包。安装要求 Python3.6 版本之上,Metadata DataBase 支持 PostgreSQL9.6+,MySQL5.7+,SQLLite3.15.0+。

一、安装 Anconda 及 python3.7

1、官网下载 Anconda ,选择 linux 版本,并安装

下载官网地址:https://www.anaconda.com/products/individual#macos


2、将下载好的 anconda 安装包上传至 mynode4 节点,进行安装

sh Anaconda3-2020.02-Linux-x86_64.sh  【一路回车即可】Do you accept the license terms? [yes|no]Yes【继续回车】... ...Anaconda3 will now be installed into this location:/root/anaconda3
- Press ENTER to confirm the location - Press CTRL-C to abort the installation - Or specify a different location below
[/root/anaconda3] >>> 【回车即可,安装到/root/anaconda3路径下】... ...Do you wish the installer to initialize Anaconda3by running conda init? [yes|no][no] >>>yes【输入yes,回车即可】... ...【安装完成】
复制代码

3、配置 Anconda 的环境变量

在 /etc/profile中加入以下语句:export PATH=$PATH:/root/anaconda3/bin#使环境变量生效source /etc/profile
复制代码

4、安装 python3.7 python 环境

conda create -n python37 python=3.7
复制代码

5、激活使用 python37 python 环境

conda activate python37【激活使用python37环境,需要先执行下source activate】
复制代码


相关命令如下:


source activate 【初始化conda,必须执行,执行之后可以使用conda命令激活环境】conda deactivate 【退出当前base环境】conda activate python37【激活使用python37环境】conda deactivate 【退出当前使用python37环境】conda remove -n python37 --all 【删除python37环境】
复制代码

二、单机安装 Airflow

单节点部署 airflow 时,所有 airflow 进程都运行在一台机器上,架构图如下:


1、安装 Airflow 必须需要的系统依赖

Airflow 正常使用必须需要一些系统依赖,在 mynode4 节点上安装以下依赖:


yum -y install mysql-devel gcc gcc-devel python-devel gcc-c++ cyrus-sasl cyrus-sasl-devel cyrus-sasl-lib 
复制代码

2、在 MySQL 中创建对应的库并设置参数

aiflow 使用的 Metadata database 我们这里使用 mysql,在 node2 节点的 mysql 中创建 airflow 使用的库及表信息。


CREATE DATABASE airflow CHARACTER SET utf8;create user 'airflow'@'%' identified by '123456';grant all privileges on airflow.* to 'airflow'@'%';flush privileges;
复制代码


在 mysql 安装节点 node2 上修改”/etc/my.cnf”,在 mysqld 下添加如下内容:


[mysqld]explicit_defaults_for_timestamp=1
复制代码


注意:以上配置 explicit_defaults_for_timestamp 系统变量决定 MySQL 服务端对 timestamp 列中的默认值和 NULL 值的不同处理方法。此变量自 MySQL 5.6.6 版本引入,默认值为 0,在默认情况下,如果 timestamp 列没有显式的指明 null 属性,那么该列会被自动加上 not null 属性,如果往这个列中插入 null 值,会自动的设置该列的值为 current timestamp 值。当这个值被设置为 1 时,如果 timestamp 列没有显式的指定 not null 属性,那么默认的该列可以为 null,此时向该列中插入 null 值时,会直接记录 null,而不是 current timestamp,如果指定 not null 就会报错。


在 Airflow 中需要对应 mysql 这个参数设置为 1。以上修改完成“my.cnf”值后,重启 Mysql 即可,重启之后,可以查询对应的参数是否生效:


#重启mysql[root@node2 ~]# service mysqld restart
#重新登录mysql查询mysql> show variables like 'explicit_defaults_for_timestamp';
复制代码


3、安装 Airflo

在 node4 上切换 python37 环境,安装 airflow,指定版本为 2.1.3


(python37) [root@node4 ~]# conda activate python37(python37) [root@node4 ~]# pip install apache-airflow==2.1.3 -i https://pypi.tuna.tsinghua.edu.cn/simple
复制代码


默认 Airflow 安装在 $ANCONDA_HOME/envs/python37/lib/python3.7/site-packages/airflow 目录下。Airflow 文件存储目录默认在/root/airflow 目录下,但是这个目录需要执行下“airflow version”后自动创建,查看安装 Airflow 版本信息:


(python37) [root@node4 ~]# airflow version2.1.3
复制代码


注意:如果不想使用默认的“/root/airflow”目录当做文件存储目录,也可以在安装 airflow 之前设置环境变量:


(python37) [root@node4 ~]# vim /etc/profileexport AIRFLOW_HOME=/software/airflow
#使配置的环境变量生效source /etc/profile
复制代码


这样安装完成的 airflow 后,查看对应的版本会将“AIRFLOW_HOME”配置的目录当做 airflow 的文件存储目录。

4、配置 Airflow 使用的数据库为 MySQL

打开配置的 airflow 文件存储目录,默认在 $AIRFLOW_HOME 目录“/root/airflow”中,会有“airflow.cfg”配置文件,修改配置如下:


[core]dags_folder = /root/airflow/dags
#修改时区default_timezone = Asia/Shanghai
# 配置数据库sql_alchemy_conn=mysql+mysqldb://airflow:123456@node2:3306/airflow?use_unicode=true&charset=utf8
[webserver]#设置时区default_ui_timezone = Asia/Shanghai
#设置DAG显示方式# Default DAG view. Valid values are: ``tree``, ``graph``, ``duration``, ``gantt``, ``landing_times``dag_default_view = graph
[scheduler]#设置默认发现新任务周期,默认是5分钟# How often (in seconds) to scan the DAGs directory for new files. Default to 5 minutes.dag_dir_list_interval = 30
复制代码

5、安装需要的 python 依赖包

初始化 Airflow 数据库时需要使用到连接 mysql 的包,执行如下命令来安装 mysql 对应的 python 包。


(python37) [root@node4 ~]# pip install mysqlclient -i https://pypi.tuna.tsinghua.edu.cn/simple
复制代码

6、初始化 Airflow 数据库

(python37) [root@node4 airflow]# airflow db init
复制代码


初始化之后在 MySQL airflow 库下会生成对应的表。

7、创建管理员用户信息

在 node4 节点上执行如下命令,创建操作 Airflow 的用户信息:


airflow users create \    --username airflow \    --firstname airflow \    --lastname airflow \    --role Admin \    --email xx@qq.com
复制代码


执行完成之后,设置密码为“123456”并确认,完成 Airflow 管理员信息创建。

三、启动 Airflow

1、启动 webserver

#前台方式启动webserver(python37) [root@node4 airflow]# airflow webserver --port 8080
#以守护进程方式运行webserver,端口默认8080。 ps aux|grep webserver查看后台进程airflow webserver --port 8080 -D
复制代码

2、启动 scheduler

新开窗口,切换 python37 环境,启动 Schduler:


#前台方式启动scheduler(python37) [root@node4 ~]# airflow scheduler
#以守护进程方式运行Scheduler,ps aux|grep scheduler 查看后台进程 airflow scheduler -D
复制代码

3、访问 Airflow webui

浏览器访问:http://node4:8080



输入前面创建的用户名:airflow 密码:123456


发布于: 刚刚阅读数: 4
用户头像

Lansonli

关注

微信公众号:三帮大数据 2022.07.12 加入

CSDN大数据领域博客专家,华为云享专家、阿里云专家博主、腾云先锋(TDP)核心成员、51CTO专家博主,全网六万多粉丝,知名互联网公司大数据高级开发工程师

评论

发布
暂无评论
大数据调度平台Airflow(三):Airflow单机搭建_airflow_Lansonli_InfoQ写作社区