Azure Synapse 运行时
Azure Synapse 中的 Apache Spark 池使用运行时将基本组件版本(例如 Azure Synapse 优化、包和连接器)与特定的 Apache Spark 版本绑定在一起。 每个运行时都会定期升级,以包含新的改进、功能和补丁。 在创建无服务器 Apache Spark 池时,选择相应的 Apache Spark 版本。 基于此,池将随关联的运行时组件和包一起预安装。
这些运行时具有以下优点:
- 会话启动时间更快
- 测试了与特定 Apache Spark 版本的兼容性
- 可访问热门的兼容连接器和开源包
受支持的 Azure Synapse 运行时版本
提示
强烈建议主动将工作负载升级到更新正式发布版本的运行时,即为适用于 Apache Spark 3.4 的 Azure Synapse 运行时 (GA)。 请参阅 Apache Spark 迁移指南。
下表列出了受支持的 Azure Synapse 运行时版本的运行时名称、Apache Spark 版本和发布日期。
运行时名称 | 发布日期 | 发布阶段 | 支持结束公告日期 | 支持结束生效日期 |
---|---|---|---|---|
适用于 Apache Spark 3.4 的 Azure Synapse 运行时 | 2023 年 11 月 21 日 | GA(截至 2024 年 4 月 8 日) | 2025 年第 2 季度 | 2026 年第 1 季度 |
适用于 Apache Spark 3.3 的 Azure Synapse 运行时 | 2022 年 11 月 17 日 | 宣布终止支持 | 2024 年 7 月 12 日 | 2025 年 3 月 31 日 |
适用于 Apache Spark 3.2 的 Azure Synapse 运行时 | 2022 年 7 月 8 日 | 已弃用并将很快禁用 | 2023 年 7 月 8 日 | 2024 年 7 月 8 日 |
适用于 Apache Spark 3.1 的 Azure Synapse 运行时 | 2021 年 5 月 26 日 | 已弃用并将很快禁用 | 2023 年 1 月 26 日 | 2024 年 1 月 26 日 |
适用于 Apache Spark 2.4 的 Azure Synapse 运行时 | 2020 年 12 月 15 日 | 已弃用并将很快禁用 | 2022 年 7 月 29 日 | 2023 年 9 月 29 日 |
运行时发布说明
有关 Apache Spark 生命周期和支持策略的完整运行时,请参阅适用于 Apache Spark 生命周期和可支持性的 Synapse 运行时。
运行时修补
适用于 Apache Spark 修补程序的 Azure Synapse 运行时每月推出,其中包含 Apache Spark 核心引擎、语言环境、连接器和库的 bug、功能和安全修补程序。
注意
- 维护更新将自动应用于给定无服务器 Apache Spark 池的新会话。
- 使用新的运行时版本时,应该测试并验证应用程序是否正常运行。
重要
Log4j 1.2.x 安全修补程序
如此处所述,开源 Log4j 库版本 1.2.x 有几个已知的 CVE(常见漏洞和风险)。
针对所有 Synapse Spark Pool 运行时,我们修补了 Log4j 1.2.17 JAR 以缓解以下 CVE:CVE-2019-1751、CVE-2020-9488、CVE-2021-4104、CVE-2022-23302、CVE-2022- 2330,CVE-2022-23307
应用的补丁的工作原理是删除会引发漏洞的以下文件:
org/apache/log4j/net/SocketServer.class
org/apache/log4j/net/SMTPAppender.class
org/apache/log4j/net/JMSAppender.class
org/apache/log4j/net/JMSSink.class
org/apache/log4j/jdbc/JDBCAppender.class
org/apache/log4j/chainsaw/*
虽然上述类未在 Synapse 的默认 Log4j 配置中使用,但某些用户应用程序仍可能依赖于它。 如果应用程序需要使用这些类,请使用“库管理”将 Log4j 的安全版本添加到 Spark 池。 请勿使用 Log4j 版本 1.2.17,它会重新引入漏洞。
修补程序策略因运行时生命周期阶段而异:
正式发布 (GA) 运行时:不接收主要版本(即 3.x -> 4.x)升级。 只要没有弃用或回归影响,就会升级次要版本(即 3.x -> 3.y)。
预览运行时:除非绝对必要,否则不会升级主要版本。 次要版本 (3.x -> 3.y) 将升级,以将最新功能添加到运行时。
长期支持 (LTS) 运行时仅使用安全修补程序进行修补。
宣布支持结束的运行时将不会有 bug 和功能修复。 安全修补程序会基于风险评估进行向后移植。
Apache Spark 版本之间的迁移 - 支持
本指南为希望将 Apache Spark 的 Azure Synapse 运行时工作负载从版本 2.4、3.1、3.2 或 3.3 升级到最新 GA 版本(如 3.4)的用户提供了结构化方法。 升级到最新版本后,用户将能够受益于性能增强、新增功能和改进的安全措施。 请务必注意,由于不兼容或弃用的功能,过渡到更高版本可能需要调整现有 Spark 代码。
步骤 1:评估计划
- 评估兼容性:从查看 Apache Spark 迁移指南开始,以确定当前 Spark 版本(2.4、3.1、3.2 或 3.3)与目标版本(例如 3.4)之间的任何潜在不兼容、弃用的功能和新的 API。
- 分析代码库:仔细检查 Spark 代码以确定是否使用了已弃用或修改的 API。 特别注意 SQL 查询和用户定义的函数 (UDF),这可能会受到升级的影响。
步骤 2:创建新的用于测试的 Spark 池
- 创建新池:在 Azure Synapse 中,转到“Spark 池”部分并设置新的 Spark 池。 选择目标 Spark 版本(例如 3.4),并根据性能要求对其进行配置。
- 配置 Spark 池配置:确保更新或替换新 Spark 池中的所有库和依赖项,以便与 Spark 3.4 兼容。
步骤 3:迁移和测试代码
- 迁移代码:更新代码,以符合 Apache Spark 3.4 中的新 API 或修订的 API。 这涉及到解决弃用的功能,以及采用官方 Apache Spark 文档中详述的新功能。
- 在开发环境中测试:在 Azure Synapse 的开发环境中测试更新的代码,而不是在本地测试。 此步骤对于在迁移到生产环境之前识别和修复任何问题至关重要。
- 部署和监视:在开发环境中进行彻底测试和验证后,将应用程序部署到新的 Spark 3.4 池。 请务必监视应用程序是否存在任何意外行为。 利用 Azure Synapse 中提供的监视工具跟踪 Spark 应用程序的性能。
问:在从 2.4 迁移到 3.X 时应执行哪些步骤?
答:请参阅 Apache Spark 迁移指南。
问:在 Spark 池具有附加库的情况下,我在尝试使用 PowerShell cmdlet 对其运行时进行升级的过程中遇到错误。
答:如果在 Synapse 工作区中安装了自定义库,请不要使用 PowerShell cmdlet。 而应执行以下步骤:
- 从头开始重新创建 Spark 池 3.3。
- 将当前 Spark 池 3.3 降级到 3.1,移除附加的任何包,然后重新升级到 3.3。
问题: 为什么在不重新创建新的 Spark 池的情况下无法升级到 3.4?
答案:不允许从 UX 执行此操作,客户可以使用 Azure PowerShell 更新 Spark 版本。 请使用“ForceApplySetting”,以便停用任何现有群集(具有旧版本)。
示例查询:
$_target_work_space = @("workspace1", "workspace2")
Get-AzSynapseWorkspace |
ForEach-Object {
if ($_target_work_space -contains $_.Name) {
$_workspace_name = $_.Name
Write-Host "Updating workspace: $($_workspace_name)"
Get-AzSynapseSparkPool -WorkspaceName $_workspace_name |
ForEach-Object {
Write-Host "Updating Spark pool: $($_.Name)"
Write-Host "Current Spark version: $($_.SparkVersion)"
Update-AzSynapseSparkPool -WorkspaceName $_workspace_name -Name $_.Name -SparkVersion 3.4 -ForceApplySetting
}
}
}