maestro

Netflix 出品,大规模工作流编排,搞定复杂数据管道

开源 🏷️完全免费 🔧 仅开源项目,无在线服务,需自行部署 基础设施 🍴 复刻 311 🐛 待处理 38 👀 关注 161
访问官网 ↗ GitHub ↗
GitHub 星标 ★ 3852
维护状态 活跃
是否开源 开源
定价模式 🏷️完全免费 开源项目,基于Apache-2.0许可证,可自由使用和部署,无收费版本。

项目预览

maestro 项目界面预览图
图片来源:GitHub 官方仓库名片

项目数据

分类基础设施
开发团队Netflix
定价模式🏷️完全免费
价格说明开源项目,基于Apache-2.0许可证,可自由使用和部署,无收费版本。
访问状态🔧 仅开源项目,无在线服务,需自行部署
是否开源是
开源协议Apache-2.0
主要语言Java
技术栈/模型agentic-workflow,analytics,automation,batch-processing,dag,data-engineering,data-ops,data-orchestrator,data-pipelines,data-science,elt,etl,java,machine-learning,mlops,orchestration,scheduler,workflow,workflow-engine,workflow-orchestration
GitHub 星标★ 3852
上线时间2024-04-17 00:00:00
代码更新2026-11-06
仓库体积2.7 MB
本站数据更新2026-11-07
维护状态活跃
收录时间2026-08-09
浏览次数2

项目介绍

Maestro 是 Netflix 开源的工作流编排器,用于管理和调度数据管道及机器学习工作流。它解决了大规模工作流编排中常见的依赖复杂、资源利用率低、运维困难等问题。核心能力包括:支持定义复杂的工作流 DAG,自动处理任务依赖和重试;提供灵活的调度策略,支持基于时间和事件的触发;具备高可用架构,能处理大规模任务并发;集成资源管理和监控,帮助团队高效运维。Maestro 旨在替代 Airflow 等传统工具,提供更优的性能和扩展性,尤其适合云原生环境下的数据工程和 ML 流水线场景。

Star 增长趋势

本站每日记录该项目 GitHub 星标变化,观测越久曲线越完整

数据来源:GitHub API 逐日快照 · 收录于 2026-08-09 · 当前星标 ★ 3852

使用教程

难度:进阶 约 20 分钟 部署方式:本地安装 8 步

环境要求

  • JDK 环境(仓库自带 Gradle Wrapper,用 ./gradlew 执行)
  • 本地运行 AWS 模块或 extensions 时需安装 Docker 与 Docker Compose
  • 使用 Kubernetes 支持时需本机 kubectl 可用且已配置 kubeconfig
  • 可选:Python 环境,用于安装 maestro-sdk

安装与启动步骤

  1. 1获取项目源码

    克隆 Netflix/maestro 仓库并进入项目根目录,后续所有 gradlew 命令都要在此目录执行。

    git clone https://github.com/Netflix/maestro.git
    cd maestro
  2. 2本地启动 maestro

    在项目根目录用 Gradle Wrapper 启动服务,默认监听 8080 端口;首次运行会下载依赖,耗时较长。

    ./gradlew bootRun
  3. 3触发示例工作流

    服务起来后用 curl 调用 API 手动启动内置示例 DAG,请求头 user 标识操作者。

    curl --header "user: tester" -X POST 'http://127.0.0.1:8080/api/v3/workflows/sample-dag-test-1/versions/latest/actions/start' -H "Content-Type: application/json" -d '{"initiator": {"type": "manual"}}'
  4. 4启动 AWS 本地依赖

    使用仓库自带 compose 文件拉起 AWS 相关依赖(extensions 场景下为 LocalStack,提供本地 SQS/SNS)。

    docker compose -f maestro-aws/docker-compose.yml up
  5. 5以 aws profile 启动

    加上 spring.profiles.active=aws 参数重新启动服务,使其连接上一步拉起的 AWS 组件。

    ./gradlew bootRun --args='--spring.profiles.active=aws'
  6. 6启动 extensions 服务

    先拉起 LocalStack,再分别启动 maestro-server(8080)与 maestro-extensions(8081,消费 SQS 事件做 foreach 扁平化)。

    docker compose -f maestro-aws/docker-compose.yml up -d
    ./gradlew :maestro-server:bootRun --args='--spring.profiles.active=aws'
    ./gradlew :maestro-extensions:bootRun
  7. 7Kubernetes 支持

    先确保 kubectl 可用,再启动服务,并上传 sample-kubernetes-wf.json 工作流定义后手动启动它。

    ./gradlew bootRun
    curl --header "user: tester" -X POST 'http://127.0.0.1:8080/api/v3/workflows' -H "Content-Type: application/json" -d @maestro-server/src/test/resources/samples/sample-kubernetes-wf.json
    curl --header "user: tester" -X POST 'http://127.0.0.1:8080/api/v3/workflows/sample-kubernetes-wf/versions/latest/actions/start' -H "Content-Type: application/json" -d '{"initiator": {"type": "manual"}}'
  8. 8安装 Python SDK

    如需在 Python 中调用 Maestro,可单独安装官方 SDK 包 maestro-sdk。

    pip install maestro-sdk

关键配置

配置项必填说明示例
spring.profiles.active=aws否启用 AWS 模块相关配置,连接 SQS/SNS 等组件aws
user 请求头是调用 API 时标识操作用户,README 示例为 testertester
服务端口否maestro-server 默认 8080,maestro-extensions 默认 80818080

如何确认成功

服务启动后访问 127.0.0.1:8080 的 API,示例工作流触发成功且无报错即表示运行正常。

常见问题

Q:不用 AWS 组件能直接跑吗?

A:可以。在项目根目录执行 ./gradlew bootRun 即可启动 maestro-server,README 中 AWS 相关步骤仅用于需要 SQS/SNS 的场景。

Q:8080 和 8081 端口分别是什么?

A:maestro-server 监听 8080,承载工作流 API;maestro-extensions 监听 8081,提供 foreach 扁平化视图等扩展 REST API。

Q:为什么需要先启动 LocalStack?

A:maestro-extensions 通过 SQS 订阅 maestro-server 发布的 SNS 事件,本地用 LocalStack 模拟 SQS/SNS,需先拉起才能联通。

Q:maestro-sdk 是服务的一部分吗?

A:不是。pip install maestro-sdk 安装的是 Python 侧 SDK,与服务端运行相互独立,可按需安装。

Q:Kubernetes 场景有什么前置条件?

A:需先配置好 kubernetes configs,保证本机 kubectl 命令可以正常工作,否则相关工作流无法执行。

注意事项

  • 必须在项目根目录执行 ./gradlew 命令,子模块命令要用 :maestro-server、:maestro-extensions 前缀。
  • AWS 场景需同时指定 --spring.profiles.active=aws,否则不会加载对应模块配置。
  • Kubernetes 示例工作流需先 POST 上传定义文件,再调用 actions/start 触发。
  • README 未给出 JDK 版本要求,如构建失败请优先检查本地 Java 环境。

核心亮点

  • 由 Netflix 生产环境验证,具备处理超大规模工作流的能力
  • 支持复杂 DAG 依赖和多种触发策略,灵活性强
  • 提供高可用和资源优化特性,降低运维成本

不足之处

  • 文档相对较少,社区生态仍在建设中
  • 与 Airflow 等成熟工具相比,集成和插件生态有待完善

适用场景

  • 大规模数据管道编排与调度
  • 机器学习训练和推理工作流管理
  • 云原生环境下的任务依赖和重试处理

替代项目

Apache Airflow、Prefect、Dagster

上一篇:dagster

下一篇:blackdagger

同类项目推荐

invisible_selenium 开源

改一行 import,Selenium 脚本秒变反检测 Firefox

Selenium that anti-bots cannot see, so no captchas: same API, anti-detect stealth he···

★ 269 2026-10-03
anansi 开源

让爬虫自愈,对话式驱动,硬刚反爬站点

A self-healing scraper for hostile sites: broken selectors repair themselves, browse···

★ 117 2026-08-09
broccoli 开源

把 Linear 工单变成已合并的 PR,AI 帮你写代码提审

Broccoli turns Linear tickets into shipped PRs — powered by Claude and Codex, runni···

★ 284 2026-08-09
personal-linkedin-agent 开源

用浏览器脚本自动打理 LinkedIn 日常操作

An agent to manage my personal LinkedIn account, using playwright for browser automa···

★ 124 2026-09-18
skills 开源

让 AI 智能体轻松操控浏览器,突破反爬墙,多任务并行不打架

Browser automation CLI built for AI agents. Break through anti-bot walls, hand off t···

★ 6330 2026-08-09
Autotube 开源

自动生成并发布YouTube短视频,从选题到成片全流程无人值守

Automated YouTube Shorts creation using n8n, AI script generation, and video process···

★ 81 2026-08-09
windmill 开源

写脚本自动变工作流和内部工具,自托管还快

Code-first platform for workflows, apps and AI agents, on the fastest self-hostable ···

★ 18456 2026-11-07
selfhost-ai 开源

一条命令自建 AI 自动化,替代 Zapier 和 Make

One-command installer for a self-hosted AI stack on your own server: n8n, Ollama, Op···

★ 958 2026-08-09
rssh 开源

手机电脑都能连服务器,AI 帮你敲命令传文件

An SSH tool dedicated to addressing all pain points · (macOS/Windows/Linux/Android/···

★ 510 2026-09-25