购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.1 在非容器化环境中基于PyPI安装Airflow

本节将详细介绍基于PyPI安装Airflow的方法。在安装之前,需要做一些准备工作(见2.1.1节)。这部分工作的内容根据操作系统的不同而有所不同。受限于篇幅,本节仅介绍了Ubuntu 20.04操作系统上的准备工作。在准备工作完成后,安装Airflow的过程(见2.1.2节)与升级Airflow的过程(见2.1.3节)全部由Python命令完成,与操作系统无关。

2.1.1 准备工作

首先安装必要的系统依赖。在Ubuntu 20.04操作系统中,安装依赖的命令如下:

sudo apt-get install -y --no-install-recommends \
        freetds-bin \
        krb5-user \
        ldap-utils \
        libffi7 \
        libsasl2-2 \
        libsasl2-modules \
        libssl1.1 \
        locales  \
        lsb-release \
        sasl2-bin \
        sqlite3 \
        unixodbc

如果在其他版本的Ubuntu操作系统中,那么部分依赖的版本可能有变化。比如在更低版本的Ubuntu操作系统中,可能需要把libffi7换成libffi6。如果是在其他的Linux发行版中,可以参考上面列出的依赖用对应的包管理软件进行安装。

因为Airflow是基于Python开发的,所以在正式安装Airflow之前,还需要保证操作系统包含Python3的环境以及Python的包管理工具PIP。在Ubuntu操作系统中安装Python3的命令如下:

apt-get install python3
注意

推荐使用的Python版本号为3.7~3.10。

在Ubuntu操作系统中安装PIP的命令如下:

apt-get install python3-pip

2.1.2 安装Airflow

在完成准备工作之后,可以用PIP命令安装Airflow。这一步涉及两个概念,分别是Constraints文件和Airflow扩展包。

Constraints文件是PIP中的概念。在用PIP安装Python包的时候,如果这个Python包有依赖,可以用Constraints文件来约定依赖的包的版本。Constraints文件的好处是显而易见的,它能防止我们要安装的包因为依赖的版本太高或太低而不能正常工作。在PIP命令中可以通过--constraint参数指定Constraints文件的地址。

由于Airflow有众多的依赖,依赖的版本管理相对复杂,因此官方提供了经过严格测试的Constraints文件,以确保按照该文件安装的Airflow能正常工作。所以,在安装Airflow的时候一定要指定Constraints文件。Constraints文件的地址由Airflow版本和Python版本一同决定,也就是说,对于任意版本的Airflow和Python组合,Constraints文件都是唯一的。下面的命令指定了一个Constraints文件来安装Airflow的核心包:

01  AIRFLOW_VERSION=2.2.4
02  PYTHON_VERSION="$(python3 --version | cut -d " " -f 2 | cut -d "." -f 1-2)"
03  CONSTRAINT_URL="https://raw.githubusercontent.com/apache/airflow/constraints-$
{AIRFLOW_VERSION}/constraints-${PYTHON_VERSION}.txt" 04 pip install "apache-airflow==${AIRFLOW_VERSION}" --constraint "${CONSTRAINT_URL}"

命令分为4行。01行设置环境变量AIRFLOW_VERSION为2.2.4,这是我们将要安装的Airflow版本。02行设置环境变量PYTHON_VERSION为当前环境安装的Python的版本。03行设置环境变量CONSTRAINT_URL,它的取值是由环境变量AIRFLOW_VERSION和PYTHON_VERSION共同决定的。04行是真正的PIP安装命令,用"apache-airflow= =${AIRFLOW_VERSION}"指定要安装的Airflow版本为环境变量AIRFLOW_VERSION的值,用--constraint "${CONSTRAINT_URL}"指定要使用Constraints文件,文件的地址由环境变量CONSTRAINT_URL决定。

除了核心功能以外,Airflow还包含各种各样的扩展包,扩展包的安装和升级独立于Airflow的核心包。所以,我们既可以在安装或升级Airflow核心包的时候顺便安装或升级扩展包,也可以随后单独安装或升级扩展包。下面的命令除了安装核心包之外,还安装了postgres、google以及async扩展包:

AIRFLOW_VERSION=2.2.4
PYTHON_VERSION="$(python3 --version | cut -d " " -f 2 | cut -d "." -f 1-2)"
CONSTRAINT_URL="https://raw.githubusercontent.com/apache/airflow/constraints-$
{AIRFLOW_VERSION}/constraints-${PYTHON_VERSION}.txt" pip install "apache-airflow[async,postgres,google]==${AIRFLOW_VERSION}" --constraint
"${CONSTRAINT_URL}"

下面的命令单独安装了google的provider:

pip install "apache-airflow-providers-google" --constraint "${CONSTRAINT_URL}"

注意,这里省略了Constraints文件的拼接过程。

2.1.3 升级Airflow

周期性升级Airflow是一个好习惯。通过升级能够获得Airflow官方提供的最新功能和补丁。前者能丰富用户体验,后者对提升集群的稳定性和安全性大有裨益。

PIP命令既可以安装Airflow,也可以升级Airflow。与安装的过程相同,这一步依然要考虑Constraints文件和扩展包。

下面的命令升级了Airflow的核心包以及postgres和google扩展包:

AIRFLOW_VERSION=2.2.4
pip install --upgrade "apache-airflow[postgres,google]==${AIRFLOW_VERSION}" 
--constraint "${CONSTRAINT_URL}"

下面的命令单独升级了google的provider: 8G+5/9QPWtrnyWyo0OwPap31aSGrWxYVLTGHA+ktrCNfik+SGdDjD1NVIVNRPfkQ

pip install --upgrade "apache-airflow-providers-google" --constraint "$
{CONSTRAINT_URL}"
点击中间区域
呼出菜单
上一章
目录
下一章
×