阶段 1:迁移策略和规划

本文是 Azure Synapse Spark 到 Microsoft Fabric 迁移最佳做法系列中的第 1 阶段。

在迁移任何笔记本、Spark 作业定义、池或湖元数据之前,请从此处开始。 本文可帮助你评估 Synapse Spark 系统的范围,选择与对风险的承受能力和交付时间表相匹配的迁移方法,并了解影响规划的 Fabric(指技术框架)差异。

在此步骤结束时,你应该知道需要迁移的内容、要使用的迁移模式、主要兼容性风险所在以及需要考量的回滚或并行运行的约束条件。

在这篇文章中,你将学会如何:

  • 评估 Synapse Spark 资源使用情况。
  • 在迁移并转换、分阶段现代化和并行执行之间进行选择。
  • 考虑回滚和同步约束。
  • 查看 Synapse Spark 与 Fabric Spark 之间的主要功能和体系结构差异。

评估 Synapse Spark 使用情况

Azure Synapse Analytics包含多个工作负荷类型。 本指南重点介绍如何将 Spark 池、笔记本、Spark 作业定义、Lake 数据库和 Hive 元存储元数据迁移到Microsoft Fabric。 有关专用 SQL 池、管道、数据资源管理器和安全迁移指南,请参阅配套指南。

Synapse 工作负荷 Fabric Destination 迁移工具/路径
Spark 池 Fabric Spark (Lakehouse) Spark 迁移助手(预览版);手动池/环境迁移
Notebooks 布料笔记本 Spark迁移助手;针对Synapse特定API的代码重构
Spark 作业定义 Fabric Spark 作业定义 Spark 迁移助手(推荐使用),如果需要手动进行重新创建
Lake数据库 Fabric Lakehouse 目录 Spark 迁移助手(通过快捷方式访问的 Delta 表);非 Delta 表的 HMS 导出/导入
Hive 元数据存储 Fabric Lakehouse 目录 HMS 导出/导入笔记本。OneLake 数据快捷方式。
链接服务 Fabric连接/密钥保管库 创建Fabric连接;将机密迁移到 密钥保管库; 重构笔记本代码

运行Fabric评估工具

在规划迁移之前,请运行Fabric评估工具,生成 Synapse 源工作区的综合报告。 该工具会扫描工作区并聚合所有对象的摘要(Spark 池、笔记本、Spark 作业定义、湖数据库、链接服务及其配置),从而清楚地了解迁移范围。

  1. 下载该工具。 Fabric评估工具在 微软 Fabric 工具箱 GitHub 存储库的 microsoft/fabric-toolbox 中提供。

  2. 运行评估。 将工具指向Azure Synapse工作区。 它扫描所有与 Spark 相关的项,并生成包含对象计数、配置、依赖项和潜在兼容性问题的报表。

  3. 查看报告。 使用评估输出了解迁移的范围:需要迁移多少个笔记本、池、SDK 和数据库、哪些链接服务正在使用,以及可能存在哪些潜在的阻止程序(GPU 池、不支持的功能和其他)。

小窍门

在规划过程中尽早运行评估工具。 该报表可帮助你估算工作量、确定阻止程序,并确定要首先迁移哪些工作负荷的优先级。 它还充当迁移清单第 1 阶段的基线清单。

迁移模式

根据组织约束、风险容忍度和时间线选择迁移模式。

提取迁移模式

使用迁移助手一次性迁移所有 Spark 工作负载,但更改最少。 专注于尽快在 Fabric 中运行笔记本和作业 — 只重构导致中断的部分(例如链接服务、文件路径、不支持的 API)。 接受当前体系结构 as-is。

在以下情况下使用“迁移并提升”方法:

  • Synapse 工作区即将在固定截止时间停用,需要快速移动。
  • Spark 工作负载已构建良好(Delta-first、干净代码、很少有链接服务依赖项)。
  • 工作区的占用空间足以进行一次性迁移,你的团队可以在一个迭代周期内完成重构工作。
  • 下游使用者(Power BI API)可以容忍短暂的切换窗口。

分阶段现代化

按优先级逐步迁移工作负载,并在此过程中重新构建架构。 首先从最高值或最低风险工作负荷开始。 在迁移每个批处理时,将 Spark 池合并到更少的环境中,采用 Lakehouse 最佳做法(Delta-first、V-Order for BI 使用者)、启用 NEE,并为 Direct Lake 重新设计。

在以下情况下使用分阶段现代化:

  • 你有一个大型或复杂的 Synapse 环境,其中包含多个团队和不同的工作负载,无法一次性迁移。
  • 当前的架构中存在需要解决的技术债务(非 Delta 格式、挂载点依赖关系、扩展过大的 Spark 池)。
  • 在时间线上具有灵活性,并希望在迁移期间提高性能和成本效益。
  • 不同的工作负荷具有不同的所有者,需要独立的迁移计划。

并行运行模式

在转换期间同时运行这两个环境。 将新的 Spark 工作负载路由到 Fabric,而旧版工作负载在 Synapse 上继续运行。 在切换之前,通过并排比较结果进行验证迁移的工作负载。 随着信心增强,逐渐停用 Synapse。

在以下情况下使用并行运行:

  • 工作负荷具有严格的 SLA 或法规要求,要求在切换之前进行充分验证。
  • 在利益干系人批准退役之前,你需要证明Fabric的性能达到或超过Synapse。
  • 下游使用者(仪表板、API、ML 模型)在转换期间不能容忍任何差异。
  • 你正在迁移生产流水线,其中错误的结果具有重大业务影响(财务报告、合规性)。

并行运行引入了必须提前设计的数据同步问题。 选择以下模式之一:

  • 共享存储层:让 Synapse 和 Fabric 通过 OneLake 快捷方式对同一个 ADLS Gen2 存储进行读取和写入。 这样可以让两个平台使用相同的 Delta 文件,但必须通过确保在任意时间只有一个平台向指定表写入来防止写入冲突。
  • 一次写入、两者读取:在转换过程中保留 Synapse 作为主要编写器,并允许 Fabric 通过快捷方式读取相同的数据。 在验证并迁移笔记本至Fabric后,将写入路径切换至Fabric,并将Synapse设为只读模式,直至停用。 这是大多数迁移的最安全选项。
  • 双写: 避免同时在两个环境中运行相同的 ETL,除非你已有自动化的比较和对帐工具。 双重写入往往会导致偏差、重复和操作负担。

并行运行还会影响更改管理。 虽然 Synapse 仍然是活动开发环境,但 Synapse 中所做的任何笔记本、Spark 作业定义、Spark 池配置或湖数据库架构更改不会自动在 Fabric 中体现。 必须重新迁移受影响的资产,以使这两个环境保持一致。

  • Notebook 代码更改:重新运行 Spark 迁移助手或手动重新导出和重新导入更新的笔记本。 重新应用任何 Fabric 特定的代码重构,包括 notebookutils、文件路径更新以及 密钥保管库 机密。
  • Spark 作业定义更改:重新通过 迁移助手 迁移或在 Fabric 中手动重新创建更新的 Spark 作业定义。
  • Spark 池配置更改:更新相应的Fabric环境,以匹配修改后的节点大小、自动缩放设置和库。
  • Lake 数据库架构更改:重新运行 HMS 导出/导入笔记本,或者在 Fabric lakehouse 中手动创建或更改受影响的表。

若要减少重新迁移开销,在开始迁移后,在 Synapse 端建立更改冻结。 如果更改不可避免,请保留更改日志,以便在切换之前在Fabric中重播这些更改。

回滚注意事项

Synapse-to-Fabric 迁移是复制操作 , 它不会修改或删除源 Synapse 工作区。 在整个过程中,原始 Spark 池、笔记本和数据保持不变。 这使得回滚变得简单:

  • 如果迁移结果不尽如人意,请继续使用现有的 Synapse 工作区。 无需还原任何更改。
  • 删除迁移Fabric项目(笔记本、环境、Spark 作业定义)并在解决问题后重试。
  • OneLake 快捷方式指向现有的 ADLS Gen2 存储 , 删除快捷方式不会影响基础数据。
  • 在Fabric中验证所有迁移的工作负载并重新路由下游使用者之前,请不要关闭Synapse工作区。

小窍门

从小开始,快速证明可行性。 选取具有代表性的 Spark 工作负载并将其端到端迁移, 从池设置到笔记本重构到验证。 选择一些能够测试你最常用模式(数据访问、链接服务、目录操作)的项目,但风险足够低,便于反复改进。 记录构建可重复迁移过程的步骤、遇到的问题以及解决方法。

功能对等性与主要差异

了解 Synapse 和 Fabric 之间的体系结构差异对于规划至关重要。 下表突出了计算体系结构和 Spark 功能的主要差异。

有关完整比较,请参阅 Compare Fabric 和 Azure Synapse Spark:关键差异

计算和体系结构

能力 Azure Synapse Microsoft Fabric
部署模型 PaaS (配置和管理资源) SaaS (基于容量,无基础结构管理)
计算模型 Spark 池(基于节点);至少需要 3 个节点 容量单位(CU)在所有工作负荷间共享; Spark 池可用作配置模板; 支持单节点执行; 支持 Spark 的自动化扩展计费(按使用付费,类似于 Synapse 模型)
Spark 引擎 Synapse Spark 池(Spark 3.4、3.5):支持的 GPU 池 Fabric Spark(运行时 1.2/1.3/2.0:Spark 3.4–4.0);不支持 GPU;在最新一代硬件上运行以提高性能
缩放 Spark 的节点自动扩缩(至少 3 个节点) Spark 的节点自动缩放(单节点最小值):基于容量的缩放
会话启动 基于资源池,针对新群集的冷启动 初学者池(秒级启动):自定义实时池;高并发模式
成本模型 每节点小时(Spark);暂停/恢复 两个选项:(1)Fabric Spark 使用基于容量单位(CU)的共享消耗模型,或(2)Spark 的自动缩放计费——按需付费的 Spark 模式

Spark:Synapse Spark 与 Fabric Spark

能力 Synapse Spark Fabric Spark
Spark 版本 Spark 3.4 (EOL),3.5(预览版)。 Spark 3.4(RT 1.2 EOL)、3.5(RT 1.3 GA)、4.0(RT 2.0 预览版)
查询加速 缺少本地加速引擎 本机执行引擎(Velox/Gluten,在 TPC-DS 上最高可达 4 倍)
池模型 固定池,池的最大节点数;至少 3 个节点 初学者池(秒级启动,无需配置):特定节点大小和自定义库的自定义池;支持单节点执行
安全性(网络) 托管虚拟网络;专用终结点 托管专用终结点(MPE);出站访问策略(OAP);客户管理密钥(CMK)
GPU 支持 GPU 加速池可用 不支持
高并发性 不支持 支持:多个笔记本共享一个 Spark 会话
库管理 池级和工作区级库; 手动上传 Wheel、JAR、tar.gz 基于环境的软件库管理:公共源(PyPI/Conda)+ 自定义上传(Wheel、JAR)。 若要复制 Synapse 工作区级库,请创建具有所需库的环境,并将其设置为工作区默认值。 工作区中的所有笔记本和 SSD 都会自动继承它。
V-Order 不可用 写入优化的 Parquet; Power BI Direct Lake 提升 40–60%,SQL 分析终结点提升约 10%; 无 Spark 读取性能优势; 写入开销增加 15–33%
优化写入 默认已禁用 默认启用
默认表格式 Parquet(Delta 可选) Delta Lake(Lakehouse 表格的默认和必需项)
Hive 元数据存储 内置 HMS;通过 Azure SQL DB 或 MySQL 的外部 HMS(在 Spark 3.4 后弃用) Fabric Lakehouse 目录;通过导出/导入脚本进行 HMS 迁移
DMTS 技术在笔记本电脑中 支持 在笔记本中已支持,而在 Spark 作业定义中尚未支持。
KV 的托管标识 支持 笔记本和 Spark 作业定义中受支持
mssparkutils 完整库 (fs, 凭据, 笔记本, env, lakehouse) notebookutils (类似的 API;方法名称中的一些差异)