Azure Machine Learning의 Apache Spark
Azure Synapse Analytics와 Azure Machine Learning 통합을 통해 Apache Spark 프레임워크를 통해 분산 계산 리소스에 쉽게 액세스할 수 있습니다. 이 통합은 다음과 같은 Apache Spark 컴퓨팅 환경을 제공합니다.
- 서버리스 Spark 컴퓨팅
- 연결된 Synapse Spark 풀
서버리스 Spark 컴퓨팅
Apache Spark 프레임워크를 사용하는 Azure Machine Learning 서버리스 Spark 컴퓨팅은 Azure Machine Learning 환경에서 분산 컴퓨팅 작업을 수행하는 가장 쉬운 방법입니다. Azure Machine Learning은 완전 관리형 서버리스 주문형 Apache Spark 컴퓨팅 클러스터를 제공합니다. 해당 사용자는 Azure Synapse 작업 영역과 Synapse Spark 풀 중 하나만 만들어도 됩니다.
사용자는 인스턴스 형식 및 Apache Spark 런타임 버전을 비롯한 리소스를 정의할 수 있습니다. 그런 다음 해당 리소스를 사용하여 Azure Machine Learning Notebooks에서 서버리스 Spark 컴퓨팅에 액세스하여 다음을 수행할 수 있습니다.
고려할 항목
서버리스 Spark 컴퓨팅은 Apache Spark를 통해 분산 컴퓨팅 리소스에 빠르게 액세스해야 하는 대부분의 사용자 시나리오에 적합합니다. 그러나 합리적 결정을 내리려면 사용자는 이 방식의 장단점을 고려해야 합니다.
장점:
- Apache Spark용으로 다른 Azure 리소스를 만드는 경우는 관련이 없습니다(Azure Synapse 인프라는 내부적으로 작동함).
- Azure Synapse 관련 리소스를 만드는 데 필요한 구독 권한이 없습니다.
- SQL 풀 할당량이 필요하지 않습니다.
단점:
- 영구 Hive 메타스토어가 없습니다. 서버리스 Spark 컴퓨팅은 메모리 내 Spark SQL만 지원합니다.
- 사용 가능한 테이블 또는 데이터베이스가 없습니다.
- Azure Purview 통합이 없습니다.
- 사용 가능한 연결된 서비스가 없습니다.
- 데이터 원본 및 커넥터 수가 적습니다.
- 풀 수준 구성이 없습니다.
- 풀 수준 라이브러리 관리가 없습니다.
mssparkutils
에 대한 일부만 지원합니다.
네트워크 구성
Azure Machine Learning 및 서버리스 Spark 컴퓨팅과 함께 네트워크 격리를 사용하려면 관리되는 가상 네트워크를 사용합니다.
비활성 기간 및 해체 메커니즘
처음 실행 시 서버리스 Spark 컴퓨팅(콜드 부팅) 리소스가 Spark 세션 자체를 시작하는 데 3~5분이 필요할 수 있습니다. Azure Synapse에서 지원하는 자동화된 서버리스 Spark 컴퓨팅 리소스의 프로비전으로 인해 이러한 지연이 발생합니다. 서버리스 Spark 컴퓨팅이 프로비전되고 Apache Spark 세션이 시작된 후 후속 코드 실행(웜 부팅)에서는 이러한 지연이 발생하지 않습니다.
Spark 세션 구성은 세션 제한 시간(분)을 정의하는 옵션을 제공합니다. Spark 세션은 사용자 정의 제한 시간을 초과하는 비활성 기간 후에 종료됩니다. 다음 10분 내에 다른 Spark 세션이 시작되지 않으면 서버리스 Spark 컴퓨팅을 위해 프로비전된 리소스가 중단됩니다.
서버리스 Spark 컴퓨팅 리소스 종료가 발생한 후 다음 작업을 제출하려면 콜드 부팅이 필요합니다. 다음 시각화는 일부 세션 비활성 기간 및 클러스터 해체 시나리오를 보여 줍니다.
세션 수준 Conda 패키지
Conda 종속성 YAML 파일은 세션 구성에서 여러 세션 수준 conda 패키지를 정의할 수 있습니다. YAML 파일에 정의된 conda 패키지를 설치하는 데 15분 이상 필요하면 세션 시간이 초과됩니다. 먼저 Azure Synapse 기본 이미지에서 필수 패키지를 이미 사용할 수 있는지 확인해야 합니다. 이를 위해 사용자는 이러한 리소스를 참조하여 사용 중인 Apache Spark 버전에 대한 기본 이미지에서 사용 가능한 패키지를 결정하는 것이 좋습니다.
Important
Apache Spark용 Azure Synapse 런타임: 공지 사항
- Apache Spark 3.2용 Azure Synapse 런타임:
- EOLA 공지 사항 날짜: 2023년 7월 8일
- 지원 종료 날짜: 2024년 7월 8일. 이 날짜 이후에는 런타임이 사용하지 않도록 설정됩니다.
- 지속적인 지원과 최적의 성능을 위해서는 Apache Spark 3.4로 마이그레이션하는 것이 좋습니다.
참고 항목
세션 수준 Conda 패키지의 경우:
- 콜드 부팅에는 약 10~15분이 소요됩니다.
- 동일한 Conda 패키지를 사용하는 웜 부팅에는 약 1분이 소요됩니다.
- 다른 Conda 패키지를 사용하는 웜 부팅에도 10~15분이 소요됩니다.
- 대형 패키지나 긴 설치 시간이 필요한 패키지를 설치하는 경우 Spark 인스턴스 시작 시간에 영향을 줄 수 있습니다.
- PySpark, Python, Scala/Java, .NET 또는 Spark 버전을 변경하는 것은 지원되지 않습니다.
- Docker 이미지는 지원되지 않습니다.
세션 수준 Conda 패키지를 사용하는 동안 세션 콜드 시작 시간 개선
spark.hadoop.aml.enable_cache
구성 변수를 true
로 설정하여 Spark 세션 콜드 시작 시간을 향상할 수 있습니다. 세션 수준 Conda 패키지로 세션 콜드 시작을 수행하는 경우 일반적으로 세션이 처음 시작될 때는 10~15분이 걸립니다. 그러나 후속 세션 콜드 시작에는 3~5분이 걸립니다. 구성 설정 아래의 세션 구성 사용자 인터페이스에서 구성 변수를 정의합니다.
연결된 Synapse Spark 풀
Azure Synapse 작업 영역에서 만들어진 Spark 풀은 연결된 Synapse Spark 풀이 있는 Azure Machine Learning 작업 영역에서 사용할 수 있습니다. 이 옵션은 기존 Synapse Spark 풀을 재사용하려는 사용자에게 적합할 수 있습니다.
Synapse Spark 풀을 Azure Machine Learning 작업 영역에 연결하려면 다음을 위해 Azure Machine Learning에서 풀을 사용하기 전에 추가 단계가 필요합니다.
연결된 Synapse Spark 풀은 네이티브 Azure Synapse 기능에 대한 액세스를 제공합니다. 사용자는 Synapse Spark 풀의 프로비전, 연결, 구성 및 관리를 담당합니다.
연결된 Synapse Spark 풀에 대한 Spark 세션 구성은 세션 제한 시간(분)을 정의하는 옵션도 제공합니다. 세션 시간 제한 동작은 이전 섹션의 설명과 유사하지만 연결된 리소스는 세션 시간 제한 후 절대 해제되지 않습니다.
Spark 클러스터 크기 정의
Azure Machine Learning Spark 작업에서 세 가지 매개 변수 값을 사용하여 Spark 클러스터 크기를 정의할 수 있습니다.
- 실행기 수
- 실행기 코어 수
- 실행기 메모리
Azure Machine Learning Apache Spark 실행기는 Azure Spark 작업자 노드와 동등하다고 생각해야 합니다. 예를 들어, 이러한 매개 변수를 설명할 수 있습니다. 실행기 수를 6개(작업자 노드 6개에 해당), 실행기 코어 수를 4개, 실행기 메모리를 28GB로 정의했다고 가정해 보겠습니다. 그러면 Spark 작업이 총 24개 코어와 168GB 메모리가 있는 클러스터에 액세스할 수 있습니다.
Spark 작업에 대한 리소스 액세스 보장
데이터 및 기타 리소스에 액세스하기 위해 Spark 작업은 관리 ID 또는 사용자 ID 통과를 사용할 수 있습니다. 이 표에는 Spark 작업이 리소스에 액세스하는 데 사용하는 메커니즘이 요약되어 있습니다.
Spark 풀 | 지원되는 ID | 기본 ID |
---|---|---|
서버리스 Spark 컴퓨팅 | 작업 영역에 연결된 사용자 ID, 사용자 할당 관리 ID | 사용자 ID |
연결된 Synapse Spark 풀 | 사용자 ID, 연결된 Synapse Spark 풀에 연결된 사용자 할당 관리 ID, 연결된 Synapse Spark 풀의 시스템 할당 관리 ID | 연결된 Synapse Spark 풀의 시스템 할당 관리 ID |
이 문서에서는 Spark 작업에 대한 리소스 액세스에 대해 설명합니다. Notebook 세션에서 서버리스 Spark 컴퓨팅과 연결된 Synapse Spark 풀은 모두 대화형 데이터 랭글링 중에 데이터 액세스를 위해 사용자 ID 통과를 사용합니다.
참고 항목
- 성공적인 Spark 작업 실행을 위해 기여자 및 Storage Blob 데이터 기여자 역할(데이터 입출력에 사용되는 Azure Storage 계정에서)을 Spark 작업 제출에 사용될 ID에 할당합니다.
- 연결된 Synapse Spark 풀이 Azure Synapse 작업 영역의 Synapse Spark 풀을 가리키고 해당 작업 영역에 연결된 관리되는 가상 네트워크가 있는 경우 스토리지 계정에 대한 관리 프라이빗 엔드포인트를 구성합니다. 이 구성은 데이터 액세스를 보장하는 데 도움이 됩니다.