airflow 架构,airflow安装教程

  airflow 架构,airflow安装教程

  气流详细构建流程(亲测总结)官网:Apache airflow

  Airflow是一个由社区创建的平台,用于编程、调度和监控工作流。

  半个月前拍了一次,现在做记录。我是在没有被强迫的情况下开始搭建的,整个过程有很多画面:

  准备系统:cent os 7

  康达版本:4.8.2

  气流版本1.10.11

  首先,我将使用conda创建一个apache气流环境:

  一个create-n airflow _ envpython=3.7切换到当前环境:

  a cond activate Airflow _ env build airflow为了打造air flow,官网有一套关于建筑air flow的详细文档。

  接下来,沿着这条路走。

  # airflow需要一个home,~/airflow是缺省值,#但是如果您愿意,您可以在其他地方打下基础#(可选)export AIRFLOW_HOME=~/airflow#使用pippip从pypi安装apache-airflow#初始化数据库airflow initdb#启动web服务器,端口is8080 # Airflow Web服务器-P8080在此处进行更改,添加-D参数使其在后台运行Airflow Web服务器-P8080-d #在浏览器中启动调度程序air flow Scheduler # visit localhost:8080并启用完成上述步骤后,您可以在浏览器中打开此页面:

  我可以在这里看到一个基金会成立时的样子,但就目前而言,我可以发现以下问题:

  Air的元数据存储信息默认由sqlite存储。页面右上角的时间比正常时间晚8小时。airflow默认使用单线程调度任务,如下图所示(后面你就知道了)

  既然问题已经暴露了,那就开始处理吧。airflow的元数据存储默认使用sqlite。现在转mysql sqlite不支持多线程,所以打算转mysql。可以参考:Linux centos安装MySQL。

  在airflow中还有很多其他选项可用,所以我们可以在airflow中选择一些需要的组件。例如,现在我们需要使用mysql来存储关于气流的信息。可选功能列表用于气流的其他选项。

  您需要pip安装“Apache-airflow [MySQL]”

  这里就不挑了,就来全套插件,这样会遇到更多坑:

  yum MySQL-devel gcc gcc-devel python-devel krb5-devel . x86 _ 64 Cyrus-sasl-devel-ypip install Apache-air flow[all]-I https://pypi.tuna.tsinghua.edu.cn/simple/此时可能会遇到很多错误,比如下面这些:

  处理错误需要耐心,一般都是版本错误。只需卸载红字出现的版本,重新指定版本号即可安装。

  配置气流配置mysql作为气流元数据信息的存储:vim/etc/my . CNF Add explicit _ defaults _ for _ timestamp=1 systemctlrestart[mysqld]重启mysql在mysql中创建数据库。我数据库的名字叫气流。

  进入airflow的文件夹,修改airflow.cfg.

  解决气流一次只能执行一个任务的问题:

  相关依据请参考气流高管解决气流时间晚八小时的问题。

  修改气流的内容. cfg:

  这部分内容要参考气流修改源代码。

  具体如下:#查找气流Find的安装位置/-名称气流修改/root/anaconda 3/envs/air flow _ env/lib/python 3.7/site-packages/air flow/utils/time zone . py。

  在第27行下增加以下内容:

  from airflow导入配置为conftry:tz=conf.get(core ,Default _ time zone )if tz== system :utc=pendulum . local _ time zone()else:utc=pendulum . time zone(tz)exception:pass修改utcnow()函数:

  修改/root/anaconda 3/envs/air flow _ env/lib/python 3.7/site-packages/air flow/utils/sqlalchemy . py。

  如果tz== system :utc=pendulum . local _ time zone()else:utc=pendulum . time zone(tz)Exception:pass,则在第38行下面添加:utc=pendulum.timezone (utc )

  将此注释掉:

  3.修改/root/anaconda 3/envs/air flow _ env/lib/python 3.7/site-packages/air flow/www/templates/admin/master . html

  修改由向下箭头指示的行。修改内容在评论下方。

  至此,修改已经完成。此时重启气流即可。修改源代码操作参考:气流修改中国时区(修改气流源代码)

  最终结果如下:使用mysql作为元数据信息的存储,在mysql中可以看到:

  登录到airflow时:

  解决了前面提到的三个问题,把这个气流总结为一个调度工具。这一次,我只提到如何安装和构建它。以后有空的时候,我想加一个关于如何写气流的任务脚本。目前水平只是简单的任务脚本编写,还需要更多的努力。

  最后,如果你看完这篇文档后发现了什么问题或者更好的建议,请在下面留言。谢谢你

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: