Ubuntu安装Apache Airflow详细指南

news2025/1/4 4:40:21

本文我们介绍如何在Ubuntu上安装Apache Airflow。Apache Airflow旨在通过编程方式编写、调度和监控工作流。随着数据编排在现代数据工程中变得越来越重要,掌握Apache Airflow等工具可以显著提高您的生产力和效率。

学习Apache Airflow的首要任务是安装单机版本进行测试,通过实践逐步掌握其原理及应用。本指南为在Ubuntu 24.04上安装Apache Airflow提供全面的分步过程。
在这里插入图片描述

软件依赖

首先需要安装下列软件组件:

  • Python: Version 3.6 or higher
  • Pip: Python package installer
  • PostgreSQL: 建议使用的元数据存储数据库,默认为SQLITE,当然MySQL也可以;
  • Virtualenv: 创建Python虚拟环境

操作系统准备

您应该可以使用具有sudo权限的非root用户访问Ubuntu服务器。这确保你可以执行管理任务而不会危及系统安全性。

1. 准备环境

  • 更新系统

第一步是更新软件包列表并升级任何现有软件包,以确保拥有最新的安全更新和特性。执行如下命令:

sudo apt update
sudo apt upgrade -y
  • 安装必要的依赖

接下来,使用以下命令安装Python和虚拟环境工具:

sudo apt install python3-pip python3-venv -y
  • 设置虚拟环境

虚拟环境能够分别管理不同项目的依赖关系,实现项目环境隔离。使用以下命令创建和激活虚拟环境:

mkdir airflow-project
cd airflow-project
python3 -m venv airflow-env
source airflow-env/bin/activate

2. 安装Airflow

我们可以使用pip或Docker安装Apache Airflow。本指南侧重于pip安装方法,这种方法简单且广泛使用。

  • 使用pip安装Airflow

你可以安装Apache Airflow和必要的额外的,如PostgreSQL支持运行:

pip install apache-airflow[postgres,celery,rabbitmq]

该命令安装airflow和它的依赖关系,存储元数据数据库PostgreSQL,用于分布式任务执行的Celery,以及作为消息代理的RabbitMQ。

  • 验证安装

安装完成后,通过检查版本确认安装正确:

airflow version

3. 初始化数据库

  • 准备元数据存储数据库

元数据数据库非常重要,因为它存储有关任务实例、DAG运行和其他操作数据的信息。默认情况下,Airflow使用SQLite,但建议在生产环境中使用PostgreSQL。

  • 初始化数据库

如果连接Postgresql,需要先配置数据库连接。

初始化数据库的命令如下:

airflow db init
  • 初始化用户
airflow users create \
    --username admin \
    --password passw0rd \
    --firstname Peter \
    --lastname Parker \
    --role Admin \
    --email spiderman@superhero.org

也可以在环境变量中设置:

AIRFLOW_WWW_USER_USERNAME: Sets the username for the admin UI account.
AIRFLOW_WWW_USER_PASSWORD: Sets the password for the admin UI account.
AIRFLOW_WWW_USER_FIRSTNAME: Optional first name for the user.
AIRFLOW_WWW_USER_LASTNAME: Optional last name for the user.
AIRFLOW_WWW_USER_EMAIL: Optional email address for the user.

4. 配置Airflow

  • 编辑配置文件

Airflow主要配置文件位于$AIRFLOW_HOME/Airflow.cfg。在首选文本编辑器中打开此文件以调整执行器类型和数据库连接字符串等设置。

主要修改配置项:

  • [core]: 设置执行类型 ,包括:LocalExecutor 或 CeleryExecutor等
  • [database]: 更新默认数据库连接,PostgreSQL:sql_alchemy_conn = postgresql+psycopg2://user:password@localhost/dbname
  • [webserver]: 配置web管理服务,如端口等

设置环境变量

可能需要设置环境变量来定义Airflow安装文件位置。使用以下命令设置AIRFLOW_HOME:

export AIRFLOW_HOME=~/airflow

5. 启动Airflow

  • 启动web服务和调度程序

web服务提供用于监控和管理Airflow的用户界面。要同时启动web服务器和调度程序,请在不同的终端窗口中运行以下命令:

# Start Web Server
airflow webserver --port 8080

# Start Scheduler
airflow scheduler
  • 访问web管理界面

您可以通过导航到http://localhost:8080访问气流web界面。默认用户名和密码与前节配置一致。

在这里插入图片描述

Airflow执行方式

1. LocalExecutor(本地执行器)

  • 概述

    LocalExecutor 是 Airflow 的默认执行器,它允许在本地机器上以多进程的方式执行任务。每个任务作为一个独立的进程在本地运行,通过一个 SQL 数据库(通常是 MySQL 或 PostgreSQL)来协调任务的调度和状态管理。

  • 工作原理

    当 Airflow 调度器触发一个任务实例时,它会在本地机器上启动一个新的进程来运行该任务。这些进程之间通过共享数据库来通信和同步状态。例如,调度器会将任务实例的状态更新到数据库中(如将任务标记为 “运行中”),而任务进程在完成或失败后也会更新数据库中的相应状态记录。

  • 适用场景

    适合用于开发和测试环境,或者在任务负载较小、对资源隔离要求不高的简单生产场景。例如,在一个小型的数据处理工作流中,任务数量较少且计算资源需求不大,使用 LocalExecutor 就可以方便地在本地进行任务的调度和执行。

2. CeleryExecutor(分布式执行器)

  • 概述

    CeleryExecutor 用于在分布式环境中执行任务。它依赖于 Celery 消息队列系统来将任务分发到多个工作节点(worker nodes)上进行处理,从而实现任务的并行执行和资源的有效利用。

  • 工作原理

    当 Airflow 调度器触发任务时,它会将任务消息发送到 Celery 消息队列中。多个 Celery worker 节点监听这个队列,当有任务消息到达时,worker 节点会从队列中获取任务并执行。每个 worker 节点可以在不同的机器上运行,它们可以根据自身的资源配置和任务类型来处理相应的任务。例如,在一个数据处理集群中,可以有一些 worker 节点专门用于数据提取任务,另一些用于数据转换任务等。

  • 适用场景

    适用于大规模的生产环境,需要处理大量任务、对任务执行效率和资源利用要求较高的场景。例如,在一个处理海量数据的 ETL(Extract、Transform、Load)工作流中,涉及到众多的数据提取、清洗、转换和加载任务,通过使用 CeleryExecutor 可以将这些任务分布到多个计算节点上并行执行,大大提高工作流的整体执行效率。

3. KubernetesExecutor(容器化执行器)

  • 概述

    KubernetesExecutor 允许将 Airflow 任务作为容器在 Kubernetes 集群中运行。它利用了 Kubernetes 强大的容器编排功能,将每个任务封装在一个容器中,并根据任务的需求动态地在 Kubernetes 集群中分配资源和调度执行。

  • 工作原理

    当 Airflow 调度器触发一个任务时,它会向 Kubernetes API 发送请求,创建一个包含任务执行环境的容器。Kubernetes 会根据集群的资源状况和任务的配置要求(如 CPU、内存需求等),在合适的节点上启动这个容器并执行任务。例如,在一个微服务架构的数据处理系统中,每个服务的任务可以被打包成一个容器,通过 KubernetesExecutor 在集群中灵活地调度和执行,并且可以方便地进行版本升级和资源调整。

  • 适用场景

    非常适合云原生环境和容器化部署的场景。如果你的应用已经在 Kubernetes 集群中运行,或者希望利用容器化的优势(如资源隔离、易于部署和扩展等)来执行 Airflow 工作流,那么 KubernetesExecutor 是一个很好的选择。例如,在一个基于云服务的大数据处理平台中,使用 KubernetesExecutor 可以方便地在云原生的 Kubernetes 集群中运行各种数据处理任务,同时享受容器化带来的高效管理和灵活扩展的好处。

4. SequentialExecutor(顺序执行器)

  • 概述

    SequentialExecutor 是最简单的执行器,它按照任务在 DAG(有向无环图)中的顺序依次执行任务,每次只执行一个任务,不存在任务的并行处理。

  • 工作原理

    当调度器触发 DAG 运行时,SequentialExecutor 会从 DAG 的起始任务开始,一个接一个地执行任务。只有当前一个任务执行完成后,才会开始执行下一个任务。它通过在本地单进程环境中简单地遍历 DAG 的任务依赖关系来实现任务的顺序执行。

  • 适用场景

    主要用于非常简单的测试场景或对任务执行顺序有严格要求且不需要并行处理的情况。例如,在开发一个新的 Airflow DAG 时,为了初步验证任务的逻辑顺序是否正确,可以使用 SequentialExecutor 进行简单的测试。这种执行器在处理复杂工作流时效率较低,因为它不能利用并行计算资源来加速任务的完成。

最后总结

本文介绍了适合顺序执行和本地执行的非集群Airflow安装,主要用于测试开发环境准备。要在生成环境运行Airflow,通常需要集群环境,采用分布式或容器方式执行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2268948.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

生物信息学软件开发综述学习

目录 ①编程语言和开源工具和库 ②轻量级 R 包开发 ③大规模组学软件开发 ④示例 1.轻量级 R 包开发示例及数据 2.大规模组学软件开发 文献:Bioinformatics software development: Principles and future directions ①编程语言和开源工具和库 在生物信息学…

哈夫曼编码(Huffman Coding)与哈夫曼树(Huffman Tree)

已知字符集{a,b,c,d,e,f},若各字符出现的次数分别为6,3,8,2,10,4,则对应字符集中各字符的哈夫曼编码可能是( )。 A.00,1011,01&#xff0…

Eureka 介绍与原理详解

在微服务架构中,服务发现(Service Discovery)是一个至关重要的组件。随着服务数量的增加,手动管理服务的地址和端口变得不切实际。Eureka 是 Netflix 开源的一款服务发现工具,旨在解决微服务架构中的服务注册与发现问题…

C++和OpenGL实现3D游戏编程【连载19】——着色器光照初步(平行光和光照贴图)(附源码)

1、本节要实现的内容 我们在前期的教程中,讨论了在即时渲染模式下的光照内容。但在我们后期使用着色器的核心模式下,会经常在着色器中使光照,我们这里就讨论一下着色器光照效果,以及光照贴图效果,同时这里知识会为后期的更多光照效果做一些铺垫。本节我们首先讨论冯氏光照…

RedisDesktopManager新版本不再支持SSH连接远程redis后

背景 RedisDesktopManager(又名RDM)是一个用于Windows、Linux和MacOS的快速开源Redis数据库管理应用程序。这几天从新下载RedisDesktopManager最新版本,结果发现新版本开始不支持SSH连接远程redis了。 解决方案 第一种 根据网上有效的信息,可以回退版…

【图像处理lec10】图像压缩

目录 一、图像压缩基础 1、图像压缩的基本概念 2、数据冗余与压缩比 3、三种主要的数据冗余类型 4、保真度评估标准(Fidelity Criteria) 5、应用与实践 二、图像压缩模型 1、图像压缩模型概述 (1)压缩系统的结构 &#…

Python-网络爬虫

随着网络的迅速发展,如何有效地提取并利用信息已经成为一个巨大的挑战。为了更高效地获取指定信息,需定向抓取并分析网页资源,从而促进了网络爬虫的发展。本章将介绍使用Python编写网络爬虫的方法。 学习目标: 理解网络爬虫的基本…

curl+openssl 踩坑笔记

curl编译:点击跳转 踩坑一 * SSL certificate problem: unable to get local issuer certificate * closing connection #0 curl: (60) SSL certificate problem: unable to get local issuer certificate More details here: https://curl.se/docs/sslcerts.html …

mysql-二进制安装方式

目录 1. 安装组件即依赖包 2. 创建用户 3. 关闭防火墙 4. 解压mysql二进制源码包 5. 创建文件夹并赋予权限 6. 编译安装mysql,安装完成最后面,会有一串英文,那是登录数据库的密码 7. 设置配置文件 8. 将mysql添加进环境变量 9. 复制…

【MySQL】深度学习数据库开发技术:使用CC++语言访问数据库

**前言:**本节内容介绍使用C/C访问数据库, 包括对数据库的增删查改操作。 主要是学习一些接口的调用, 废话不多说, 开始我们的学习吧! ps:本节内容比较容易, 友友们放心观看哦! 目录 准备mysql…

Vscode左大括号不另起一行、注释自动换行

参考大佬的博客VSCode 格式化 cpp 文件时配置左大括号不换行_vscode大括号不换行-CSDN博客 Clang_format_style {BasedOnStyle: Chromium, IndentWidth: 4}

1、Jmeter、jdk下载与安装

1、访问官网,点击下载Jmeter http://jmeter.apache.org/ 2、在等待期间,下载对应的Java https://www.oracle.com/cn/java/technologies/downloads/#jdk23-windows 3、全部下载好,先安装JDK ![在这里插入图片描述](https://i-blog.csdnimg…

【Vim Masterclass 笔记02】第3章:Vim 核心知识 + L08:Vim 核心浏览命令 + L09:Vim 核心浏览命令同步练习

文章目录 Section 3:Vim Essentials(Vim 核心知识)S03L08 Essential Navigation Commands1 光标的上下左右移动2 上 / 下翻页3 基于单词前移4 基于单词后移5 重新定位视图中的文本(页面重绘)6 定位到所在行的行首7 光标…

docker学习记录-部署若依springcloud项目

使用docker compse部署RuoYi v3.6.4 一、打包代码 Java代码 打包前需要将127.0.0.1改成宿主机ip, 使用docker部署的nacos,应该是要改成ruoyi-nacos(docker中的服务容器名)。 使用idea window系统可能没有sh命令,不能…

Unity 实现Canvas显示3D物体

新建一个UI相机,选择渲染层为UI 将主相机的渲染层去掉UI层 、 将Canvas的RenderMode设置为Screen Space - Camera,将RenderCamera设置为UI相机 新建3D物体的UI父物体,并将3D物体的层级设置为UI层 适当的放缩3DObjParent,让3D物体能显示出来…

【spring】参数校验Validation

前言 在实际开发中,我们无法保证客户端传来的请求都是合法的。比如一些要求必传的参数没有传递,传来的参数长度不符合要求等,这种时候如果放任不管,继续执行后续业务逻辑,很有可能就会出现意想不到的bug。 有人可能会…

STM32 SPI读取SD卡

七个响应类型: R1 Response (Normal Response): R1响应是最基本的响应,包含一个字节的状态位,用于指示命令是否成功执行。常用。最高位为0。最低位为1表示是空闲状态。其他位是各种错误提示。 R1b Response (Normal with Busy): 类似于R1&a…

【Solidity】入门指南:智能合约开发基础

🌈个人主页: 鑫宝Code 🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础 ​💫个人格言: "如无必要,勿增实体" 文章目录 Solidity入门指南:智能合约开发基础引言1. 开发环境搭建1.1 Remix I…

EasyExcel(读取操作和填充操作)

文章目录 1.准备Read.xlsx(具有两个sheet)2.读取第一个sheet中的数据1.模板2.方法3.结果 3.读取所有sheet中的数据1.模板2.方法3.结果 EasyExcel填充1.简单填充1.准备 Fill01.xlsx2.无模版3.方法4.结果 2.列表填充1.准备 Fill02.xlsx2.模板3.方法4.结果 …

OCR实践-问卷表格统计

前言 书接上文 OCR实践—PaddleOCROCR实践-Table-Transformer 本项目代码已开源 放在 Github上,欢迎参考使用,Star https://github.com/caibucai22/TableAnalysisTool 主要功能说明:对手动拍照的问卷图片进行统计分数(对应分数…