Azure Synapse 런타임
Azure Synapse용 Apache Spark 풀은 런타임을 사용하여 Azure Synapse 최적화, 패키지 및 커넥터와 같은 필수 구성 요소 버전을 특정 Apache Spark 버전과 연결합니다. 각 런타임은 새로운 개선 사항, 기능 및 패치를 포함하도록 주기적으로 업그레이드됩니다. 서버리스 Apache Spark 풀을 만들 때 해당 Apache Spark 버전을 선택합니다. 이를 기반으로 풀은 연결된 런타임 구성 요소 및 패키지와 함께 미리 설치됩니다.
이러한 런타임에는 다음과 같은 이점이 있습니다.
- 더 빠른 세션 시작 시간
- 특정 Apache Spark 버전과의 호환성 테스트
- 인기 있는 호환 커넥터 및 오픈 소스 패키지에 대한 액세스
지원되는 Azure Synapse 런타임 릴리스
팁
워크로드를 Apache Spark 3.4(GA)용 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 Runtime | 2022년 11월 17일 | 지원 종료 발표 | 2024년 7월 12일 | 2025년 3월 31일 |
Apache Spark 3.2에 대한 Azure Synapse 런타임2 | 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 Runtime | 2020년 12월 15일 | 사용되지 않으며 곧 사용 안 함 | 2022년 7월 29일 | 2023년 9월 29일 |
런타임 릴리스 단계
Apache Spark 수명 주기 및 지원 정책에 대한 전체 런타임은 Apache Spark 수명 주기 및 지원 가능성에 대한 Synapse 런타임을 참조하세요.
런타임 패치
Apache Spark 패치에 대한 Azure Synapse 런타임은 Apache Spark 핵심 엔진, 언어 환경, 커넥터 및 라이브러리에 대한 버그, 기능 및 보안 픽스를 포함하는 매월 롤아웃됩니다.
참고 항목
- 유지 관리 업데이트는 지정된 서버리스 Apache Spark 풀에 대한 새 세션에 자동으로 적용됩니다.
- 새 런타임 버전을 사용할 때 애플리케이션이 제대로 실행되는지 테스트하고 유효성을 검사해야 합니다.
Important
Log4j 1.2.x 보안 패치
오픈 소스 Log4j 라이브러리 버전 1.2.x에는 여기에 설명된 대로 몇 가지 알려진 CVE(공통 취약성 및 노출)가 있습니다.
모든 Synapse Spark Pool 런타임에서 다음 CVE를 완화하기 위해 Log4j 1.2.17 JAR을 패치했습니다. 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(장기 지원) 런타임은 보안 수정으로만 패치됩니다.
지원 종료 발표 런타임에는 버그 및 기능 수정이 없습니다. 보안 수정은 위험 평가에 따라 백포칭됩니다.
Apache Spark 버전 간 마이그레이션 - 지원
이 가이드에서는 Apache Spark용 Azure Synapse Runtime 워크로드를 버전 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 마이그레이션 가이드를 참조하세요.
질문: 라이브러리를 연결했을 때 PowerShell cmdlet을 사용하여 Spark 풀 런타임을 업그레이드하려고 할 때 오류가 발생했습니다.
답변: 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
}
}
}