百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

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

itomcoil 2025-02-15 15:56 12 浏览

#头条创作挑战赛#

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 Anaconda3
by 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 version
2.1.3


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

(python37) [root@node4 ~]# vim /etc/profile
export 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

相关推荐

Excel新函数TEXTSPLIT太强大了,轻松搞定数据拆分!

我是【桃大喵学习记】,欢迎大家关注哟~,每天为你分享职场办公软件使用技巧干货!最近我把WPS软件升级到了版本号:12.1.0.15990的最新版本,最版本已经支持文本拆分函数TEXTSPLIT了,并...

Excel超强数据拆分函数TEXTSPLIT,从入门到精通!

我是【桃大喵学习记】,欢迎大家关注哟~,每天为你分享职场办公软件使用技巧干货!今天跟大家分享的是Excel超强数据拆分函数TEXTSPLIT,带你从入门到精通!TEXTSPLIT函数真是太强大了,轻松...

看完就会用的C++17特性总结(c++11常用新特性)

作者:taoklin,腾讯WXG后台开发一、简单特性1.namespace嵌套C++17使我们可以更加简洁使用命名空间:2.std::variant升级版的C语言Union在C++17之前,通...

plsql字符串分割浅谈(plsql字符集设置)

工作之中遇到的小问题,在此抛出问题,并给出解决方法。一方面是为了给自己留下深刻印象,另一方面给遇到相似问题的同学一个解决思路。如若其中有写的不好或者不对的地方也请不加不吝赐教,集思广益,共同进步。遇到...

javascript如何分割字符串(javascript切割字符串)

javascript如何分割字符串在JavaScript中,您可以使用字符串的`split()`方法来将一个字符串分割成一个数组。`split()`方法接收一个参数,这个参数指定了分割字符串的方式。如...

TextSplit函数的使用方法(入门+进阶+高级共八种用法10个公式)

在Excel和WPS新增的几十个函数中,如果按实用性+功能性排名,textsplit排第二,无函数敢排第一。因为它不仅使用简单,而且解决了以前用超复杂公式才能搞定的难题。今天小编用10个公式,让你彻底...

Python字符串split()方法使用技巧

在Python中,字符串操作可谓是基础且关键的技能,而今天咱们要重点攻克的“堡垒”——split()方法,它能将看似浑然一体的字符串,按照我们的需求进行拆分,极大地便利了数据处理与文本解析工作。基本语...

go语言中字符串常用的系统函数(golang 字符串)

最近由于工作比较忙,视频有段时间没有更新了,在这里跟大家说声抱歉了,我尽快抽些时间整理下视频今天就发一篇关于go语言的基础知识吧!我这我工作中用到的一些常用函数,汇总出来分享给大家,希望对...

无规律文本拆分,这些函数你得会(没有分隔符没规律数据拆分)

今天文章来源于表格学员训练营群内答疑,混合文本拆分。其实拆分不难,只要规则明确就好办。就怕规则不清晰,或者规则太多。那真是,Oh,mygod.如上图所示进行拆分,文字表达实在是有点难,所以小熊变身灵...

Python之文本解析:字符串格式化的逆操作?

引言前面的文章中,提到了关于Python中字符串中的相关操作,更多地涉及到了字符串的格式化,有些地方也称为字符串插值操作,本质上,就是把多个字符串拼接在一起,以固定的格式呈现。关于字符串的操作,其实还...

忘记【分列】吧,TEXTSPLIT拆分文本好用100倍

函数TEXTSPLIT的作用是:按分隔符将字符串拆分为行或列。仅ExcelM365版本可用。基本应用将A2单元格内容按逗号拆分。=TEXTSPLIT(A2,",")第二参数设置为逗号...

Excel365版本新函数TEXTSPLIT,专攻文本拆分

Excel中字符串的处理,拆分和合并是比较常见的需求。合并,当前最好用的函数非TEXTJOIN不可。拆分,Office365于2022年3月更新了一个专业函数:TEXTSPLIT语法参数:【...

站长在线Python精讲使用正则表达式的split()方法分割字符串详解

欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是《在Python中使用正则表达式的split()方法分割字符串详解》。使用正则表达式分割字符串在Python中使用正则表达式的split(...

Java中字符串分割的方法(java字符串切割方法)

技术背景在Java编程中,经常需要对字符串进行分割操作,例如将一个包含多个信息的字符串按照特定的分隔符拆分成多个子字符串。常见的应用场景包括解析CSV文件、处理网络请求参数等。实现步骤1.使用Str...

因为一个函数strtok踩坑,我被老工程师无情嘲笑了

在用C/C++实现字符串切割中,strtok函数经常用到,其主要作用是按照给定的字符集分隔字符串,并返回各子字符串。但是实际上,可不止有strtok(),还有strtok、strtok_s、strto...