小知识点:Airflow 安装部署

在这里插入图片描述

部分安装方法参考Linux 虚拟机:大数据集群基础环境搭建(Hadoop、Spark、Flink、Hive、Zookeeper、Kafka、Nginx)

一、Python 安装

当前安装版本为 Python-3.9,使用源码包安装

  • 下载源码包或者 wget 下载
wget https://www.python.org/ftp/python/3.9.6/Python-3.9.6.tgz
  • 解压到指定目录
tar -zxvf Python-3.9.6.tgz
  • 依赖环境安装
sudo yum -y install vim unzip net-tools && sudo yum -y install wget && sudo yum -y install bzip2 && sudo yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel && sudo yum -y install libglvnd-glx && sudo yum -y install gcc gcc-c++
  • 预配置
cd Python-3.9.6
./configure --prefix=/xxx/program/python3
  • 编译安装
make && make install
  • 配置环境变量或者将 python3 软链接放到 /usr/bin 中
sudo ln -s /xx/xx/python3.9 /usr/bin/python3.9
sudo ln -s /xx/xx/pip3.9 /usr/bin/pip3.9

二、Airflow 安装

  • 更新 pip
pip3.9 install --upgrade pip -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
  • 更新 setuptools
pip3.9 install --upgrade pip -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
  • 下载 airflow
pip3.9 install apache-airflow -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com

在这里插入图片描述

  • 配置 airflow 环境命令
sudo ln -s /xxx/python-3.9.6/bin/airflow /usr/bin/airflow

三、Airflow 配置

这里我使用的是 docker 安装的 mysql5.7,具体参考: Linux 虚拟机:大数据集群基础环境搭建(Hadoop、Spark、Flink、Hive、Zookeeper、Kafka、Nginx)
官方文档:设置 MySQL 数据库

  • 下载连接驱动
pip3.9 install mysql-connector-python -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
  • 修改 airflow.cfg 文件
    • 这个文件在对应用户的 home 目录下,也就是 ~/airflow/airflow.cfg
    • 找到 [database] 模块,注释掉之前的 sqlite,新加 mysql 配置
sql_alchemy_conn = mysql+mysqlconnector://root:123456@hybrid03:3306/airflow_db

在这里插入图片描述

  • 创建 MySQL 数据库
create database airflow_db character set utf8mb4 collate utf8mb4_unicode_ci;
  • 修改配置文件 my.cnf
    • docker 安装的 mysql5.7 中 my.cnf 在 /etc/my.cnf,可以把它复制到挂载的配置文件夹,通过宿主机去修改,然后再覆盖原来的(docker 容器内没有 vi/vim)
    • 在 my.cnf [mysqld] 添加下面的配置,修改后重启 mysql (docker restart mysql)
explicit_defaults_for_timestamp=1
  • 初始化 airflow db
airflow db init
  • 修改本地调度器
    • 修改 airflow.cfg,注释掉原来的配置,修改成 executor = LocalExecutor

在这里插入图片描述

  • 创建用户
airflow users create --username admin --firstname admin --lastname admin --role Admin --email [email protected]
  • 启动
airflow webserver -p 8080 -D
airflow scheduler -D
  • 停止
ps -ef | egrep 'scheduler|airflow-webserver'| grep -v grep | awk '{print $2}' | xargs kill -15

四、存在的坑

  • 下载后的 airflow 命令在 Python 安装目录下的 bin 目录里面,如果没有配置环境变量的话会以为没有这个命令
  • 开始没有更新 setuptools,有些地方报错 error: subprocess-exited-with-error,后面更新了一下 setuptools 就顺利安装
Collecting unicodecsv>=0.14.1
  Downloading http://pypi.doubanio.com/packages/6f/a4/691ab63b17505a26096608cc309960b5a6bdf39e4ba1a793d5f9b1a53270/unicodecsv-0.14.1.tar.gz (10 kB)
  Preparing metadata (setup.py) ... error
  error: subprocess-exited-with-error

  × python setup.py egg_info did not run successfully.
  │ exit code: 1
  ╰─> [1 lines of output]
      ERROR: Can not execute `setup.py` since setuptools is not available in the build environment.
      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
error: metadata-generation-failed

× Encountered error while generating package metadata.
╰─> See above for output.

note: This is an issue with the package mentioned above, not pip.
hint: See above for details.

在这里插入图片描述

  • 使用 airflow 命令报错:airflow.exceptions.AirflowConfigException: error: sqlite C library version too old (< 3.15.0)
    • airflow 默认使用的是 sqlite 作为数据库,系统默认的版本过低,如果要使用该数据库的话需要手动更新,一般建议更改为 MySQL

在这里插入图片描述

  • sqlalchemy.exc.ProgrammingError: (mysql.connector.errors.ProgrammingError) 1067 (42000): Invalid default value for ‘updated_at’
    • 原因:字段 ‘update_at’ 是 timestamp 类型,默认给的是空值,所以导致失败
    • 修改 MySQL 的 my.cnf,参考上面的步骤

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/baidu_40468340/article/details/128920523