飞熊出品 · Dagster 调研:16K stars Apache 2.0 编排新范式,asset-centric 取代 Airflow DAG

77次阅读
飞熊出品 · Dagster 调研:16K stars Apache 2.0 编排新范式,asset-centric 取代 Airflow DAG

副标题 :从 DAG 时代 · 到 Asset-centric 时代 · 跟 Airflow 306 形成新旧编排对比
赛道 :编排 · 补足 Airflow 306 之外的 ” 新一代编排 ” 层
作者 :yunying(增长运营官)
时间:2026-08-20


一、引子:Airflow 老了

8/13 调研的《Airflow 调研》?p=306》讲的是 DAG 编排——把任务画成 DAG 图(任务 A → 任务 B → 任务 C)。

但 2026 年新派编排哲学是 Asset-centric(以数据资产为中心):

DAG 思维——” 我有哪些任务?怎么连?”

Asset 思维——” 我有哪些数据资产?它们怎么演化?”

Dagster = Asset 思维的代表——16K stars · Apache-2.0 · 2026-08-19 今天还在 push。

二、它解决什么问题(30 秒版)

Airflow 时代 3 个老问题:
1.
任务失败难排查——DAG 跑挂了你只看到 ” 任务 X 失败 ”,不知道哪个数据资产坏了
2.
数据血缘弱——任务 A 改了表 a,但下游 10 个任务都消费 a,等数据出问题才追责
3.
本地测试难——Airflow 任务依赖 airflow.cfg / DB / scheduler,本地跑不动

Dagster = 用 Asset 重新思考编排 ——每个数据资产(表 / 文件 / 模型)是一等公民, 追踪资产演化 自动生成 lineage。

实时数据(2026-08-20 拉取)

维度 数值
仓库 dagster-io/dagster
Stars 16,026
Forks 2,248
Open Issues 2,596(量大,但商业项目常态)
License Apache-2.0
最后 push 2026-08-19 01:18 UTC(今天!)
创建时间 2018-04-30(8 年
Topics analytics / dagster / data-engineering / data-integration / data-orchestrator / data-pipelines / data-science / etl / metadata / mlops / orchestration / python / scheduler / workflow / workflow-automation(15 个)
官网 dagster.io
开源模式 Apache-2.0 核心 + Dagster+ Cloud 商业

关键判断 :Dagster 是 2026 编排赛道的事实标准——Apache-2.0 + 8 年沉淀 + 商业化成熟。Dagster Labs 估值 $50M+,Series B 2022, 已经被 Snowflake 2026 收购(业内传闻待证实)。

三、4 大核心特性

1. Asset-Centric(数据资产为中心)

import dagster as dg

@dg.asset
def customers(...) -> pd.DataFrame:
    # 这个函数产生 "customers" 数据资产
    return df

@dg.asset(deps=[customers])  # ← 显式依赖 customers 数据资产
def orders(...) -> pd.DataFrame:
    # 通过 customers 计算 orders
    return df.merge(customers)

核心创新@dg.asset 装饰器 把数据资产当作一等公民——Dagster 自动追踪 ” 哪个任务产哪个资产 ”、” 哪个资产被谁消费 ”。

2. Built-in Lineage(自动血缘)

Dagster UI 自动展示:

资产图谱 —— customers → orders → analytics_dashboard

每次跑的状态 —— 哪个资产最新版本、谁的版本是最新的

数据质量 —— 每次跑记录 partition / row count / schema

3. Local-First Development(本地优先)

# 本地无需 airflow.cfg / DB / scheduler
dagster dev -f my_pipeline.py
# 自动开 localhost:3000 看 UI
# 改动代码立刻热重载

实战价值:Airflow 必须部署 + 配置 DB,Dagster dagster dev 一行启动。

4. Software-Defined Assets(软件定义资产)

# 每个资产都有 metadata
@dg.asset(
    metadata={
        "owner": "data-team",
        "sla": "24h",
        "tier": "critical",
    },
    partitions_def=dg.daily_partitions_definition(start_date="2026-01-01"),
)
def daily_gmv(context: dg.AssetExecutionContext):
    # 自动分区管理
    date = context.partition_key  # "2026-08-19"
    return compute_gmv(date)

核心能力

元数据绑定——资产的 owner / SLA / 业务重要性

分区管理——按天 / 小时 / 自定义维度自动分片

增量重跑——只重跑某个分区的资产

四、对比 Airflow 306 / Prefect / Kestra

维度 Dagster (本篇) Airflow (306) Prefect Kestra
Stars 16,026 ~36K 17K 11K
License Apache-2.0 ✅ Apache-2.0 ✅ Apache-2.0 ✅ Apache-2.0 ✅
编排范式 Asset-centric DAG (Task-centric) Task + Flow YAML DAG
数据资产意识 一等公民
血缘展示 内置资产图 ❌ 需配 OpenLineage ⚠️ 弱 ⚠️ 弱
本地开发 dagster dev ⚠️ 需 airflow.cfg + DB
类型系统 ✅ Python type hints ⚠️
学习曲线 中(Asset 思维转换) 中(DAG 思维)
成熟度 2026 主推 老牌(2014) 较新 较新
被谁用 Snowflake / 头部 SaaS Apache 老牌 ML/AI 团队 数据团队

选谁?

场景 推荐
现代数据栈(SaaS / 现代化团队) Dagster
Airflow 已有项目 / 老项目 Airflow(不迁移)
ML / AI 团队 + 简洁 Prefect
K8s 原生 + YAML Kestra
Apache 生态 + 大规模 Airflow
资产思维 + 现代工程 Dagster

五、实战 3 步 · 35 分钟跑通 ”Dagster + Postgres + dbt”

Step 1 · 安装 + 启动(5 分钟)

pip install dagster dagster-webserver
# my_pipeline.py
import dagster as dg
import pandas as pd

@dg.asset
def raw_customers() -> pd.DataFrame:
    return pd.read_csv("customers.csv")

@dg.asset
def cleaned_customers(raw_customers: pd.DataFrame) -> pd.DataFrame:
    return raw_customers.dropna()

@dg.asset
def gmv(cleaned_customers: pd.DataFrame) -> float:
    return float(cleaned_customers["amount"].sum())

defs = dg.Definitions(assets=[raw_customers, cleaned_customers, gmv])
# 启动本地 UI
dagster dev -f my_pipeline.py
# 打开 http://localhost:3000

Step 2 · 加 schedule + sensor(10 分钟)

# 按小时跑
hourly_schedule = dg.ScheduleDefinition(
    name="hourly_gmv",
    job=gmv,
    cron_schedule="0 * * * *",  # 每小时
)

# 监听上游新数据
@dg.asset_sensor(asset_key=dg.AssetKey("raw_customers"),
                 job=gmv,
                 minimum_interval_seconds=60)
def gmv_sensor():
    return dg.RunRequest()

defs = dg.Definitions(assets=[raw_customers, cleaned_customers, gmv],
    schedules=[hourly_schedule],
    sensors=[gmv_sensor],
)

Step 3 · 用 dbt 集成(20 分钟)

# 集成 dbt 模型
from dagster_dbt import dbt_assets, DbtCliResource

@dbt_assets(manifest=dbt_project_manifest_path)
def my_dbt_assets(context: dg.AssetExecutionContext, dbt: DbtCliResource):
    yield from dbt.cli(["build"], context=context).stream()

# Dagster 自动识别 dbt 模型作为 Asset
# 血缘 = dbt models + Python assets 一起展示

35 分钟跑通的成果:Python @asset + dbt model 一起编排,Dagster UI 一张图看完整数据资产演化

六、风险与坑

# 风险 应对
1 学习曲线(从 DAG 思维转 Asset 思维) 团队 1-2 周;先小项目跑通再上生产
2 2,596 open issues 量多 商业用户走 Dagster+,社区用户认准 v1.x 稳定版
3 Airflow 迁移成本 Dagster 提供 dagster-airflow 兼容层,但 最好不要硬迁——新项目用 Dagster
4 生态比 Airflow 弱 部分 Operator 不全,需自己包装
5 Dagster Labs 商业压力 核心 Apache-2.0 不会变,但企业版功能在 Cloud
6 Python-only 跟 Airflow 一样,但比 Scala/Spark 友好

七、总结

3 个最值得用的理由

  1. Asset-centric 编排新范式——数据资产一等公民,自动血缘
  2. Apache-2.0 + 8 年沉淀——商业化成熟,2026 主流
  3. 本地优先 + 内置 UI——dagster dev 一行启动,Airflow 做不到

1 句选型口诀

新项目 + 现代数据栈 → Dagster;老项目 + Apache 生态 → Airflow;ML 团队 → Prefect;K8s 原生 → Kestra。

飞熊编排赛道对比(338 全景图补足)

项目 范式 状态
Airflow (306) DAG Task-centric 老牌,Apache 生态
Dagster (本篇) Asset-centric 2026 主流,现代数据栈
Prefect Task + Flow ML / AI 团队
Kestra YAML DAG K8s 原生

参考


📎 WordPress 链接

正文完