专栏首页Python七号airflow 的安装部署与填坑

airflow 的安装部署与填坑

阅读本文大约需要 8 分钟。

上一篇文章已经介绍过 airflow ,相信需要的人早已上网搜索相关资料,已经开始动手干了,没错,就是干,喜欢一件事件,请立即付诸行动,不要拖,时间一长,就凉了。

Python 的包管理工具 pip 是一个非常优秀的工具,Python 相关的库都可以使用 pip 安装,airflow 也不例外。废话不多说,直接上操作步骤。

截止目前 2018年8月14日 ,airflow 最新稳定版本为1.8 ,apache-airflow 的最新稳定版本为1.9,其实都是 airflow,使用起来是一样的,只是版本本区别而已,官方指导的安装也是 apache-airflow。 airflow 1.8 使用本地时区。 airflow 1.9 使用 UTC 时区。(后面会介绍如何修改) 以 ubuntu 16.04为例,其他 linux 操作系统类似。

前提条件

python 环境下 执行 导入 ssl,sqlite3不报错,如下所示:

按照经验,出现 import ssl 报错的可能性大一些,如果导入 ssl 报错,则执行以下命令安装 libssl-dev,并重新安装 python 即可。

$sudo apt-get install libssl-dev
$sudo apt-get install libssl-dev
$./configure --prefix=yourpath && make test && make && make install

在线安装

联网环境下,安装软件变更非常简单,无需考虑依赖包,pip 会自动为你解决。

1. 安装airflow 1.8

pip install airflow

2. 安装airflow 1.9

pip install apache-airflow[all]

这里说明一下,也可以直接 pip install apache-airflow,后面加上 all 的话,所有关于 airflow 的包都会安装,现在谁的电脑也不缺那几十 M 的存储,建议都安装,省得想用某些功能时再次安装。 上述第 2 种安装 airflow 1.9的过程中有可能出现以下错误:

1. mysqlclient 安装错误

Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/tmp/pip-install-2meuvf5n/mysqlclient/setup.py", line 18, in <module>
    metadata, options = get_config()
  File "/tmp/pip-install-2meuvf5n/mysqlclient/setup_posix.py", line 53, in get_config
    libs = mysql_config("libs_r")
  File "/tmp/pip-install-2meuvf5n/mysqlclient/setup_posix.py", line 28, in mysql_config
    raise EnvironmentError("%s not found" % (mysql_config.path,))
OSError: mysql_config not found

此时需要安装 libmysqlclient-dev 即可

sudo apt install libmysqlclient-dev

2. pymssql 安装错误

Traceback (most recent call last):
     File "<string>", line 1, in <module>
     File "/tmp/pip-download-qa2zmm8z/pymssql/setup.py", line 477, in <module>
       ext_modules = ext_modules(),
     File "/home/aaron/projectA_env/lib/python3.6/site-packages/setuptools/__init__.py", line 128, in setup
       _install_setup_requires(attrs)
     File "/home/aaron/projectA_env/lib/python3.6/site-packages/setuptools/__init__.py", line 123, in _install_setup_requires
       dist.fetch_build_eggs(dist.setup_requires)
  ......
       return cmd.easy_install(req)
     File "/home/aaron/projectA_env/lib/python3.6/site-packages/setuptools/command/easy_install.py", line 667, in easy_install
       raise DistutilsError(msg)
   distutils.errors.DistutilsError: Could not find suitable distribution for Requirement.parse('setuptools_git')
   setup.py: platform.system() => 'Linux'
   setup.py: platform.architecture() => ('64bit', 'ELF')
   setup.py: platform.linux_distribution() => ('debian', 'stretch/sid', '')
   setup.py: platform.libc_ver() => ('glibc', '2.9')
   setup.py: Using bundled FreeTDS in /tmp/pip-download-qa2zmm8z/pymssql/freetds/nix_64
   setup.py: include_dirs = ['/tmp/pip-download-qa2zmm8z/pymssql/freetds/nix_64/include', '/usr/local/include']
   setup.py: library_dirs = ['/tmp/pip-download-qa2zmm8z/pymssql/freetds/nix_64/lib', '/usr/local/lib']

解决方法:设置环境变量,手工安装pymssql

pip install setuptools_git
pip download pymssql
tar -zxvf pymssql-2.1.3.tar.gz
cd  pymssql-2.1.3
export PYMSSQL_BUILD_WITH_BUNDLED_FREETDS=1
python setup.py install

以上步骤可确保 pymssql 成功安装,再执行 pip install apache-airflow[all] 即可完成剩余部分安装。

问题来了,现在的任务大多跑在生产环境,生产环境与外网都是物理隔离的,不能直接联网怎么办?别急,pip 都为你想好了。

离线安装

以 airflow 1.9 版本为例,其他版本的操作也是一致的。

1. 先在联网环境下载安装包,联网的计算机操作系统与 Python 版本最好与生产环境一致,如果不一致,需要为 pip 指定操作系统和 Python 版本。

$ mkdir airflow1.9
$ cd airflow1.9
$ pip download apache-airflow[all]

请等待下载完成。 2. 然后将上述文件打包传输至生产环境解压后,进行 airflow1.9 目录,执行:

$cd airflow1.9
$ pip install apache-airflow[all] --no-index -f ./

以上过程如有报错,请参考在线安装时的错误解决方法即可。

部署与配置

1. 设置 $AIRFLOW_HOME 的环境变量并初始化数据库

echo "export AIRFLOW_HOME=~/airflow" >> ~/.bashrc
source ~/.bashrc
airflow initdb

这一步会创建 airflow 的知识库 运行结果如下图所示

报错的原因是 Failed to import: /home/aaron/projectA_env/lib/python3.6/site-packages/airflow/example_dags/example_http_operator.py。 原因是我们安装了apache-airflow[all] ,可能的原因是 hdfshook 与 Python3 不兼容,不过些错误并不影响我们使用 airflow,完全可以忽略,如果不想看到此错误,完全可以删除 :

rm /home/aaron/projectA_env/lib/python3.6/site-packages/airflow/example_dags/example_http_operator.py

2. 默认的配置 如果不修改airflow 配置文件 $AIRFLOW_HOME/airflow.cfg,直接启动 webserver 和 scheduler 一个基于 sqilte 数据库的 airflow 服务已经启动,且可以添加任务运行,执行器为 SequentialExecutor,常用于测试环境。

3. 配置 mysql + LocalExecutor

首先新建 mysql 的数据库 airflowdb 配置数据库 airflowdb 的权限 修改 airflow.cfg 中的数据库连接 url 重新初始化 ,执行步骤如下图所示:

mysql 数据库操作如下图

airflow.cfg 修改如下图

重新初始化数据库

接着启动 webserver 和 scheduler ,配置 mysql + LocalExecutor 已经成功完成。该配置完全可以在生产环境运行,相当稳定。

今天先到这里,下一篇文章会介绍 CeleryExecutor + redis 的配置,敬请期待。

END

本文分享自微信公众号 - Python七号(PythonSeven),作者:somenzz

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-08-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 如何部署一个健壮的 apache-airflow 调度系统

    介绍了如何安装、配置、及使用,本文介绍如何如何部署一个健壮的 apache-airflow 调度系统 - 集群部署。

    somenzz
  • Centos7安装部署Airflow详解

    ——————————————————————————————————————————————

    待你如初见
  • 闲聊调度系统 Apache Airflow

    Apache Airflow 是一个由开源社区维护的,专职于调度和监控工作流的 Apache 项目,于2014年10月由 Airbnb 开源,2019年1月从 ...

    哒呵呵
  • airflow使用MySQL数据库(第三方数据库详解)

    airflow 是一个python写的调度平台,大致的认识是 : 定义一些任务(脚本、命令、连接...),airflow调度平台可以自动去运行,后面会给出运行日...

    营琪
  • 0613-Airflow集成自动生成DAG插件

    Airflow的DAG是通过python脚本来定义的,原生的Airflow无法通过UI界面来编辑DAG文件,这里介绍一个插件,通过该插件可在UI界面上通过拖放的...

    Fayson
  • 你不可不知的任务调度神器-AirFlow

    Airflow 是一个编排、调度和监控workflow的平台,由Airbnb开源,现在在Apache Software Foundation 孵化。AirFlo...

    王知无-import_bigdata
  • ztosec/secscan-authcheck 安装部署踩的坑

    github 地址 https://github.com/ztosec/secscan-authcheck

    斑马
  • 调度系统Airflow1.10.4调研与介绍和docker安装

    随着公司调度任务增大,原有的,基于crontab和mysql的任务调度方案已经不太合适了,需要寻找一个可以支持分布式扩容的调度系统解决方案。

    Ryan-Miao
  • Github项目推荐 | Kedro:生产级机器学习开源代码库

    Kedro是一个工作流开发工具,可帮助你构建强大,可扩展,可部署,可重现和版本化的数据管道。 我们提供标准的方法,你可以:

    AI研习社

扫码关注云+社区

领取腾讯云代金券