Share via


Azure Synapse Analytics에서 Apache Spark용 라이브러리 관리

라이브러리는 Azure Synapse Analytics(Azure Synapse Spark)의 Apache Spark에 대한 프로그램 또는 프로젝트에 포함할 수 있는 재사용 가능한 코드를 제공합니다.

여러 가지 이유로 서버리스 Apache Spark 풀 환경을 업데이트해야 할 수 있습니다. 예를 들어 다음 이유를 확인할 수 있습니다.

  • 핵심 종속성 중 하나가 새 버전을 출시했습니다.
  • 기계 학습 모델을 학습하거나 데이터를 준비하기 위한 추가 패키지가 필요합니다.
  • 더 나은 패키지를 사용할 수 있으며 더 이상 이전 패키지가 필요하지 않습니다.
  • 팀이 필요한 사용자 지정 패키지를 Apache Spark 풀에서 사용할 수 있도록 빌드했습니다.

애플리케이션에서 타사 또는 로컬로 빌드된 코드를 사용할 수 있도록 하려면 서버리스 Apache Spark 풀 또는 Notebook 세션 중 하나에 라이브러리를 설치합니다.

패키지 수준 개요

Azure Synapse Analytics에 설치된 패키지에는 다음 세 가지 수준이 있습니다.

  • 기본: 기본 패키지에는 전체 Anaconda 설치와 일반적으로 사용되는 추가 라이브러리가 포함됩니다. 전체라이브러리 목록은 Apache Spark 버전 지원을 참조하세요.

    Spark 인스턴스가 시작되면 이러한 라이브러리가 자동으로 포함됩니다. 다른 수준에서 더 많은 패키지를 추가할 수 있습니다.

  • Spark 풀: 실행 중인 모든 아티팩트가 Spark 풀 수준에서 패키지를 사용할 수 있습니다. 예를 들어 Notebook 및 Spark 작업 정의를 해당 Spark 풀에 연결할 수 있습니다.

    Azure Synapse Analytics 작업 영역에서 사용하려는 사용자 지정 라이브러리 및 특정 버전의 오픈 소스 라이브러리를 업로드할 수 있습니다. 작업 영역 패키지는 Spark 풀에 설치할 수 있습니다.

  • 세션: 세션 수준 설치는 특정 Notebook 세션에 대한 환경을 만듭니다. 세션 수준 라이브러리의 변경 내용은 세션 간에 유지되지 않습니다.

참고 항목

  • 풀 수준 라이브러리 관리에는 패키지 크기와 필요한 종속성의 복잡성에 따라 시간이 걸릴 수 있으며 최대 업데이트 시간은 50분으로 설정됩니다. 풀 수준 라이브러리 관리 작업은 상한값인 50분을 초과하면 자동으로 취소됩니다. 실험적이고 빠른 반복 시나리오의 경우 세션 수준 설치를 권장합니다.
  • 풀 수준 라이브러리 관리는 Notebook 및 Spark 작업 정의를 실행하기 위한 안정적인 종속성을 생성합니다. 파이프라인 실행에는 Spark 풀에 라이브러리를 설치하는 것이 좋습니다.
  • 세션 수준 라이브러리 관리는 빠른 반복 또는 빈번한 라이브러리 변경 처리에 도움이 될 수 있습니다. 그러나 세션 수준 설치는 안정성이 보장되지 않습니다. 또한 %pip 및 %conda와 같은 인라인 명령은 파이프라인 실행에서 사용하지 않도록 설정됩니다. 개발 단계 중에 Notebook 세션에서 라이브러리를 관리하는 것이 좋습니다.

작업 영역 패키지 관리

팀에서 사용자 지정 애플리케이션이나 모델을 개발할 때 .whl, .jar 또는 .tar.gz 파일과 같은 다양한 코드 아티팩트를 개발하여 코드를 패키지할 수 있습니다.

Important

  • tar.gz는 R 언어에만 지원됩니다. Python 사용자 지정 패키지로 .whl을 사용하세요.

Azure Synapse에서 작업 영역 패키지는 사용자 지정 또는 프라이빗 .whl 또는 .jar 파일이 될 수 있습니다. 이러한 패키지를 작업 영역에 업로드하고, 나중에 특정 서버리스 Apache Spark 풀에 할당할 수 있습니다. 이러한 작업 영역 패키지를 할당하면 모든 Spark 풀 세션에 자동으로 설치됩니다.

작업 영역 라이브러리를 관리하는 방법에 대해 자세히 알아보려면 작업 영역 패키지 관리를 참조하세요.

풀 패키지 관리

경우에 따라 Apache Spark 풀에서 사용되는 패키지를 표준화할 수 있습니다. 이 표준화는 팀의 여러 사용자가 일반적으로 동일한 패키지를 설치하는 경우에 유용할 수 있습니다.

Azure Synapse Analytics 풀 관리 기능을 사용하여 지정된 서버리스 Apache Spark 풀에 설치할 기본 라이브러리 세트를 구성할 수 있습니다. 해당 라이브러리는 기본 런타임 위에 설치됩니다.

Python 라이브러리의 경우 Azure Synapse Spark 풀은 Conda를 사용하여 Python 패키지 종속성을 설치하고 관리합니다. requirements.txt 또는 environment.yml 파일을 제공하여 풀 수준 Python 라이브러리를 지정할 수 있습니다. 이 환경 구성 파일은 Spark 풀에서 Spark 인스턴스를 만들 때마다 사용됩니다. 작업 영역 패키지를 풀에 연결할 수도 있습니다.

이러한 기능에 대한 자세한 내용은 Spark 풀 패키지 관리를 참조하세요.

Important

  • 설치하는 패키지가 크거나 설치하는 데 시간이 오래 걸리는 경우 Spark 인스턴스 시작 시간에 영향을 줄 수 있습니다.
  • PySpark, Python, Scala/Java, .NET 또는 Spark 버전 변경은 지원되지 않습니다.

DEP 지원 Azure Synapse Spark 풀에 대한 종속성 관리

참고 항목

공용 리포지토리에서 패키지를 설치하는 것은 DEP 사용 작업 영역 내에서 지원되지 않습니다. 대신 모든 종속성을 작업 영역 라이브러리로 업로드하고 Spark 풀에 설치합니다.

필요한 종속성을 식별하는 데 문제가 있는 경우 다음 단계를 수행합니다.

  1. 다음 스크립트를 실행하여 Azure Synapse Spark 환경과 동일한 로컬 Python 환경을 설정합니다. 이 스크립트에는 Azure Synapse Spark에 대한 기본 Python 환경에 포함된 모든 라이브러리 목록이 포함된 YAML 파일이 필요합니다. 이 YAML 파일은 Apache Spark 3.2(지원 종료 공지)Apache Spark 3.3(GA)과 같은 특정 런타임 버전에 대한 설명서에서 찾을 수 있습니다.

       # One-time Azure Synapse Python setup
       wget Synapse-Python38-CPU.yml
       sudo bash Miniforge3-Linux-x86_64.sh -b -p /usr/lib/miniforge3
       export PATH="/usr/lib/miniforge3/bin:$PATH"
       sudo apt-get -yq install gcc g++
       conda env create -n synapse-env -f Synapse-Python38-CPU.yml 
       source activate synapse-env
    
  2. 다음 스크립트를 실행하여 필요한 종속성을 식별합니다. 스크립트를 사용하여 Spark 3.1 또는 Spark 3.2 풀에 설치하려는 모든 패키지와 버전이 있는 requirements.txt 파일을 전달할 수 있습니다. 입력 라이브러리 요구 사항에 대한 새 휠 파일/종속 항목의 이름을 인쇄합니다.

       # Command to list wheels needed for your input libraries.
       # This command will list only new dependencies that are
       # not already part of the built-in Azure Synapse environment.
       pip install -r <input-user-req.txt> > pip_output.txt
       cat pip_output.txt | grep "Using cached *"
    

    참고 항목

    이 스크립트는 기본적으로 Spark 풀에 아직 존재하지 않는 종속성만 나열한다는 점에 유의합니다.

세션 범위 패키지 관리

대화형 데이터 분석이나 기계 학습을 수행하는 경우에는 최신 패키지를 시도하거나 Apache Spark 풀에서 현재 사용할 수 없는 패키지가 필요할 수 있습니다. 이제 풀 구성을 업데이트하는 대신 세션 범위 패키지를 사용하여 세션 종속성을 추가, 관리, 업데이트할 수 있습니다.

세션 범위 패키지를 사용하면 사용자가 세션을 시작할 때 패키지 종속성을 정의할 수 있습니다. 세션 범위 패키지를 설치하는 경우 현재 세션에만 지정된 패키지에 대한 액세스 권한이 있습니다. 따라서 이러한 세션 범위 패키지는 동일한 Apache Spark 풀을 사용하는 다른 세션이나 작업에 영향을 주지 않습니다. 또한 해당 라이브러리는 기본 런타임 및 풀 수준 패키지 위에 설치됩니다.

세션 범위 패키지를 관리하는 방법에 대한 자세한 내용은 다음 문서를 참조하세요.

  • Python 세션 패키지: 세션을 시작할 때 인기 있는 리포지토리에서 추가 Python 패키지를 설치하는 Conda environment.yml 파일을 제공합니다. 또는 %pip%conda 명령을 사용하여 Notebook 코드 셀에서 라이브러리를 관리할 수 있습니다.

    Important

    pip 또는 conda를 통해 라이브러리를 설치하려고 %%sh사용하지 마세요. 동작은 %pip 또는 %conda와 동일하지 않습니다.

  • Scala/Java 세션 패키지: 세션 시작 시 %%configure를 사용하여 설치할 .jar 파일 목록을 제공합니다.

  • R 세션 패키지: 세션 내에서 install.packages 또는 devtools를 사용하여 Spark 풀 내의 모든 노드에 패키지를 설치할 수 있습니다.

Azure PowerShell cmdlet 및 REST API를 통해 라이브러리 관리 프로세스 자동화

팀에서 패키지 관리 UI를 방문하지 않고 라이브러리를 관리하려는 경우 Azure Synapse Analytics용 Azure PowerShell cmdlet 또는 REST API를 통해 작업 영역 패키지 및 풀 수준 패키지 업데이트를 관리할 수 있는 옵션이 있습니다.

자세한 내용은 다음 문서를 참조하세요.

다음 단계