小知识点:Airflow 安装部署

news/2024/5/21 17:43:49

在这里插入图片描述

安装流程

    • 一、Python 安装
    • 二、Airflow 安装
    • 三、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 xxx@xxx.com
  • 启动
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,参考上面的步骤

在这里插入图片描述


http://lihuaxi.xjx100.cn/news/839029.html

相关文章

在Vivado下如何判断芯片是多die芯片-关于SSI的多方面解答

1. 什么是SSI芯片?SSI是Stacked Silicon Interconnect的缩写。SSI芯片其实就是我们通常所说的多die芯片。其基本结构如下图所示。可以看到SSI芯片的基本单元是SLR(Super Logic Region),也就是我们所说的die。SLR之间通过Interposer“粘合”在一起。每个SLR可看做一片小规模…

拒绝盲目自学!完整Java学习路线图,全面对标阿里P5-P8职级实现弯道超车

前言 对于大部分的程序员来说&#xff0c;清晰地规划自己的职业发展并不是一件容易的事情。作为一个曾经底子比较差&#xff0c;从底层摸爬滚打多年走过来的程序员&#xff0c;在这里分享一下对我帮助很大的一份宝典&#xff0c;希望同行们能快速掌握这些技术&#xff0c;直接…

1月榜单丨飞瓜数据B站UP主排行榜(哔哩哔哩平台)发布!

飞瓜轻数发布2023年1月飞瓜数据UP主排行榜&#xff08;B站平台&#xff09;&#xff0c;通过充电数、涨粉数、成长指数三个维度来体现UP主账号成长的情况&#xff0c;为用户提供B站号综合价值的数据参考&#xff0c;根据UP主成长情况用户能够快速找到运营能力强的B站UP主。飞瓜…

你会用 TypeScript 的条件类型吗?

我们可以使用 TypeScript 中的条件类型来根据逻辑定义某些类型&#xff0c;就像是在编写代码那样。它采用的语法和我们在 JavaScript 中熟悉的三元运算符很像&#xff1a;condition ? ifConditionTrue : ifConditionFalse。我们来看看他是怎么工作的。 TypeScript 的条件类型…

glib实践:GAsyncQueue使用方法

前言 这是一个使用GAsyncQueue替代的sem_t的实验。 g_async_queue_pop 在GAsyncQueue *queue中数据为空时&#xff0c;阻塞线程&#xff0c;符合sem_wait的用法。 g_async_queue_push 可以用于平替sem_post。 g_async_queue_new 可以用于平替sem_init 一 函数介绍&#xff…

关于 ulimit 和file-max 对文件打开数限制实验

/proc/sys/vm/max_map_count 限制一个进程可以拥有的VMA(虚拟内存区域)的数量 /proc/sys/kernel/pid_max 系统最大进程数量脚本 创建文件脚本 i0 while [ $i -lt 100000 ] ; dotouch ./filedir/f_$io_file./filedir/f_$iecho "$o_file"echo "file$i" >…

Linux系统之cuda 11情况下如何配置pytorch 10.2

由于目前pytorch1.8.2只能支持到10.2的版本&#xff0c;但ubuntu最新的系统驱动直接支持了cuda 11.4&#xff0c; 并且cuda tooklit支持的默认下载也是11.0。1、确认NVIDIA驱动安装lspci|grep NVIDIA1. 需要先降低cuda tooklit的版本(卸载新版本)cuda-uninstaller in /usr/loca…

计算机组成原理:计算机系统的基本组成

文章目录计算机系统的基本组成背景知识计算机硬件计算机系统的基本组成 背景知识 冯诺依曼体系结构基本特点&#xff1a; (1)计算机由运算器、控制器、存储器、输人设备和输出设备五大部件组成。 (2)采用存储程序的方式&#xff0c;程序和数据存放在同一存储器中&#xff0…