다음을 통해 공유


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 Notebook에서 서버리스 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 컴퓨팅 리소스를 중단한 후 다음 작업을 제출하려면 콜드 시작이 필요합니다. 다음 시각화에서는 일부 세션 비활성 기간 및 클러스터 중단 시나리오를 보여 줍니다.

Apache Spark 세션 비활성 기간 및 클러스터 해체에 대한 시나리오를 보여 주는 확장 가능한 다이어그램.

세션 수준 Conda 패키지

Conda 종속성 YAML 파일은 세션 구성에서 여러 세션 수준 conda 패키지를 정의할 수 있습니다. YAML 파일에 정의된 conda 패키지를 설치하는 데 15분 이상 필요하면 세션 시간이 초과됩니다. Azure Synapse 기본 이미지에서 필수 패키지를 이미 사용할 수 있는지 확인합니다. 이렇게 하려면 다음 리소스를 방문하여 사용 중인 Apache Spark 버전의 기본 이미지에서 사용할 수 있는 패키지를 확인합니다.

참고

세션 수준 Conda 패키지의 경우:

  • 콜드 스타트에는 약 10~15분이 필요합니다.
  • 동일한 Conda 패키지를 사용하는 웜 스타트는 약 1분이 필요합니다.
  • 다른 Conda 패키지를 사용하는 웜 스타트에는 약 10~15분이 필요합니다.
  • 대형 패키지나 긴 설치 시간이 필요한 패키지를 설치하는 경우 Spark 인스턴스 시작 시간에 영향을 줄 수 있습니다.
  • PySpark, Python, Scala/Java, .NET 또는 Spark 버전의 변경은 지원되지 않습니다.
  • Docker 이미지는 지원되지 않습니다.

세션 수준 Conda 패키지를 사용하는 동안 세션 콜드 시작 시간 개선

spark.hadoop.aml.enable_cache Spark 세션 true 시간을 개선하도록 구성 변수를 설정합니다. 세션 수준 Conda 패키지의 경우 세션 콜드 시작 은 일반적으로 세션이 처음 시작될 때 10~15분 정도 걸립니다. 그러나 후속 세션 콜드 시작에는 3~5분이 걸립니다. 구성 설정 아래의 세션 구성 사용자 인터페이스에서 구성 변수를 정의합니다.

캐시를 사용하도록 설정하는 Spark 세션 구성 태그를 보여 주는 확장 가능한 다이어그램.

연결된 Synapse Spark 풀

Azure Synapse 작업 영역에서 Spark 풀을 만들 때 연결된 Synapse Spark 풀을 사용하여 Azure Machine Learning 작업 영역에서 액세스할 수 있습니다. 이 옵션은 기존 Synapse Spark 풀을 다시 사용하려는 사용자에게 적합합니다.

Azure Machine Learning 작업 영역에 Synapse Spark 풀을 연결하려면 다음을 위해 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 작업 실행을 성공적으로 수행하려면 Spark 작업 제출에 사용하는 ID에 기여자Storage Blob 데이터 기여자 역할(데이터 입력 및 출력에 사용되는 Azure Storage 계정)을 할당합니다.
  • 연결된 Synapse Spark 풀이 Azure Synapse 작업 영역의 Synapse Spark 풀을 가리키고 해당 작업 영역에 연결된 관리되는 가상 네트워크가 있는 경우 스토리지 계정에 대한 관리 프라이빗 엔드포인트를 구성합니다. 이 구성은 데이터 액세스를 보장하는 데 도움이 됩니다.

다음 단계