当前位置: 首页 > news >正文

Ubuntu安装Apache Airflow详细指南

本文我们介绍如何在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,通常需要集群环境,采用分布式或容器方式执行。

相关文章:

Ubuntu安装Apache Airflow详细指南

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

【数据可视化复习方向】

1.数据可视化就是数据中信息的可视化 2.数据可视化主要从数据中寻找三个方面的信息:模式、关系和异常 3.大数据可视化分类:科学可视化、信息可视化、可视分析学 4.大数据可视化作用:记录信息、分析推理、信息传播与协同 5.可视化流程&…...

CentOS下安装RabbitMQ

提示:“奔跑吧邓邓子” 的高效运维专栏聚焦于各类运维场景中的实际操作与问题解决。内容涵盖服务器硬件(如 IBM System 3650 M5)、云服务平台(如腾讯云、华为云)、服务器软件(如 Nginx、Apache、GitLab、Redis、Elasticsearch、Kubernetes、Docker 等)、开发工具(如 Gi…...

探究音频丢字位置和丢字时间对pesq分数的影响

丢字的本质 丢字的本质是在一段音频中一小段数据变为0 丢字对主观感受的影响 1. 丢字位置 丢字的位置对感知效果有很大影响。如果丢字发生在音频信号的静音部分或低能量部分,感知可能不明显;而如果丢字发生在高能量部分或关键音素上,感知…...

音视频入门基础:MPEG2-TS专题(23)——通过FFprobe显示TS流每个packet的信息

音视频入门基础:MPEG2-TS专题系列文章: 音视频入门基础:MPEG2-TS专题(1)——MPEG2-TS官方文档下载 音视频入门基础:MPEG2-TS专题(2)——使用FFmpeg命令生成ts文件 音视频入门基础…...

Bert各种变体——RoBERTA/ALBERT/DistillBert

RoBERTa 会重复一个语句10次,然后每次都mask不同的15%token。丢弃了NSP任务,论文指出NSP任务有时甚至会损害性能。使用了BPE ALBERT 1. 跨层参数共享 可以共享多头注意力层的参数,或者前馈网络层的参数,或者全部共享。 实验结果…...

Go入门篇:(一)golang的安装和编辑工具安装

一、前言 最近我有幸接触到Go语言,深入了解后,发现go语言确实有很多让人惊叹的地方。作为一个有着多年Java编程经验的程序员,我深深地被它所吸引,并且决定记录下我的学习之路,以便与大家分享我的经验和感悟。 与Java不同,Go语言的语法和运行效率都非常高,特别是对于并…...

【技术实战】R语言统计分析与可视化从入门到精通

前言 随着大数据时代的到来,数据分析已经成为各行各业的重要技能。R语言作为一种强大的统计分析和数据可视化工具,广泛应用于科学研究、数据分析和商业决策支持。 本文将带领读者从入门到精通,掌握R语言在统计分析和数据可视化方面的核心技…...

【Lua之·Lua与C/C++交互·Lua CAPI访问栈操作】

系列文章目录 文章目录 前言一、概述1.1 Lua堆栈 二、栈操作2.1 基本的栈操作2.2 入栈操作函数2.3 出栈操作函数2.4 既入栈又出栈的操作函数2.5 栈检查与类型转换函数2.5 获取表数据 三、实例演示总结 前言 Lua是一种轻量级的、高性能的脚本语言,经常被用于游戏开发…...

LabVIEW实现LoRa通信

目录 1、LoRa通信原理 2、硬件环境部署 3、程序架构 4、前面板设计 5、程序框图设计 6、测试验证 本专栏以LabVIEW为开发平台,讲解物联网通信组网原理与开发方法,覆盖RS232、TCP、MQTT、蓝牙、Wi-Fi、NB-IoT等协议。 结合实际案例,展示如何利用LabVIEW和常用模块实现物联网系…...

【数字化】华为数字化转型架构蓝图-2

目录 1、客户联结的架构思路 1.1 ROADS体验设计 1.2 具体应用场景 1.3 统一的数据底座 1.4 案例与成效 2、一线作战平台的架构思路 2.1 核心要素 2.2 关键功能 2.3 实施路径 2.4 案例与成效 3、能力数字化的架构思路 3.1 能力数字化的核心目标 3.2 能力数字化的实…...

【Agent】AutoGen Studio2.0开源框架-UI层环境安装+详细操作教程(从0到1带跑通智能体AutoGen Studio)

💥 欢迎来到我的博客!很高兴能在这里与您相遇! 首页:GPT-千鑫 – 热爱AI、热爱Python的天选打工人,活到老学到老!!!导航 - 人工智能系列:包含 OpenAI API Key教程, 50个…...

Linux 网络配置基础

文章目录 1. 前言2. Linux 的网络配置2.1 传统的网络配置方法2.2 新的网络配置方法2.3 用 DHCP 客户端管理网络 3. 参考资料 1. 前言 限于作者能力水平,本文可能存在谬误,因此而给读者带来的损失,作者不做任何承诺。 2. Linux 的网络配置 …...

科技创新 数智未来|清科·沙丘投研院走进竹云

12月20日,清科沙丘投研院带领企投家团队走进竹云交流分享,聚焦技术创新、企业数字化管理、行业前沿应用案例等热点议题,深入探讨数字技术如何点燃企业高质量发展的澎湃动力,共话企业数字化、智能化发展之道。 达晨财智股权管理部…...

Java 常见面试算法题汇总与解析

Java 常见面试算法题汇总与解析 算法题是程序员面试中常见的一部分,也是提升编程能力的核心手段。本文将汇总一些 Java 中常见的算法题,并提供详细的解析和实现代码,帮助开发者更好地理解和掌握算法。 一、字符串相关算法 1.1 字符串反转 …...

【社区投稿】自动特征auto trait的扩散规则

自动特征auto trait的扩散规则 公式化地概括,auto trait marker trait derived trait。其中,等号右侧的marker与derived是在Rustonomicon书中的引入的概念,鲜见于Rust References。所以,若略感生僻,不奇怪。 marker …...

云原生相关的 Go 语言工程师技术路线(含博客网址导航)

要成为一名云原生相关的 Go 语言工程师,需要在 Go 语言、云原生技术栈以及相关的开发和运维工具上建立扎实的基础。下面是一个前字节员工总结的技术路线规划: 1. 掌握 Go 语言基础 深入理解 Go 语言:你需要熟练掌握 Go 的语法、数据结构、并…...

mui框架开发的手机APP——众筹约课类【只有前端,无后端】

点击获取源码...

Python的内存管理

文章目录 1. **内存管理的基本原理**(1)动态内存分配(2)引用计数机制 2. **垃圾回收(Garbage Collection, GC)机制**(1)循环引用问题(2)垃圾回收器的作用 3. …...

VSCode调试

目录 C/C远程本地调试插件配置参考 C/C远程本地调试 测试源码:https://github.com/jrhee17/ssl-study 插件 Remote - SSH C/C 配置 .vscode/launch.json {"version": "0.2.0","configurations": [{"name": "afte…...

网络六边形受到攻击

大家读完觉得有帮助记得关注和点赞!!! 抽象 现代智能交通系统 (ITS) 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 (…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)

HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...

Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)

概述 在 Swift 开发语言中,各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过,在涉及到多个子类派生于基类进行多态模拟的场景下,…...

ETLCloud可能遇到的问题有哪些?常见坑位解析

数据集成平台ETLCloud,主要用于支持数据的抽取(Extract)、转换(Transform)和加载(Load)过程。提供了一个简洁直观的界面,以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...

相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)

【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...

ardupilot 开发环境eclipse 中import 缺少C++

目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...

让AI看见世界:MCP协议与服务器的工作原理

让AI看见世界:MCP协议与服务器的工作原理 MCP(Model Context Protocol)是一种创新的通信协议,旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天,MCP正成为连接AI与现实世界的重要桥梁。…...

【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题

【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要: 近期,在使用较新版本的OpenSSH客户端连接老旧SSH服务器时,会遇到 "no matching key exchange method found"​, "n…...

iview框架主题色的应用

1.下载 less要使用3.0.0以下的版本 npm install less2.7.3 npm install less-loader4.0.52./src/config/theme.js文件 module.exports {yellow: {theme-color: #FDCE04},blue: {theme-color: #547CE7} }在sass中使用theme配置的颜色主题,无需引入,直接可…...

为什么要创建 Vue 实例

核心原因:Vue 需要一个「控制中心」来驱动整个应用 你可以把 Vue 实例想象成你应用的**「大脑」或「引擎」。它负责协调模板、数据、逻辑和行为,将它们变成一个活的、可交互的应用**。没有这个实例,你的代码只是一堆静态的 HTML、JavaScript 变量和函数,无法「活」起来。 …...