Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Azure Synapse 中的 Apache Spark 池使用运行时将基本组件版本(例如 Azure Synapse 优化、包和连接器)与特定的 Apache Spark 版本绑定在一起。 每个运行时都会定期升级,以包含新的改进、功能和补丁。 在创建无服务器 Apache Spark 池时,选择相应的 Apache Spark 版本。 基于此,池将随关联的运行时组件和包一起预安装。
这些运行时具有以下优点:
- 会话启动时间更快
- 测试了与特定 Apache Spark 版本的兼容性
- 可访问热门的兼容连接器和开源包
Sugerencia
强烈建议主动将工作负载升级到更新正式发布版本的运行时,即为适用于 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 生命周期和支持策略的完整运行时,请参阅适用于 Apache Spark 生命周期和可支持性的 Synapse 运行时。
适用于 Apache Spark 修补程序的 Azure Synapse 运行时每月推出,其中包含 Apache Spark 核心引擎、语言环境、连接器和库的 bug、功能和安全修补程序。
Nota
- 维护更新将自动应用于给定无服务器 Apache Spark 池的新会话。
- 使用新的运行时版本时,应该测试并验证应用程序是否正常运行。
Importante
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 的 Azure Synapse 运行时工作负载从版本 2.4、3.1、3.2 或 3.3 升级到最新 GA 版本(如 3.4)的用户提供了结构化方法。 升级到最新版本后,用户将能够受益于性能增强、新增功能和改进的安全措施。 请务必注意,由于不兼容或弃用的功能,过渡到更高版本可能需要调整现有 Spark 代码。
- 评估兼容性: 从查看 Apache Spark 迁移指南开始,以确定当前 Spark 版本(例如 3.4、3.1、3.2 或 3.3)与目标版本(例如 3.4)之间可能存在的不兼容、弃用的功能和新 API。
- 分析代码库:仔细检查 Spark 代码以确定是否使用了已弃用或修改的 API。 特别注意 SQL 查询和用户定义的函数 (UDF),这可能会受到升级的影响。
- 创建新池:在 Azure Synapse 中,转到“Spark 池”部分并设置新的 Spark 池。 选择目标 Spark 版本(例如 3.4),并根据性能要求对其进行配置。
- 配置 Spark 池配置:确保更新或替换新 Spark 池中的所有库和依赖项,以便与 Spark 3.4 兼容。
- 迁移代码:更新代码,以符合 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
}
}
}