표준 컴퓨팅용 Databricks Container Services

Important

표준 컴퓨팅용 Databricks Container Services는 베타 버전입니다. 작업 영역 관리자는 작업 영역 미리 보기 페이지에서 이 기능을 사용하도록 설정해야 합니다. 일반적으로 사용할 수 있는 전용 컴퓨팅용 Databricks Container Services와는 별도의 서비스입니다.

표준 컴퓨팅용 Databricks Container Services를 사용하면 표준 컴퓨팅을 만들 때 Docker 이미지를 지정하여 공유 컴퓨팅 환경의 사용자 지정 컨테이너에 액세스할 수 있습니다. Docker 이미지는 워크로드 환경의 유일한 정의이므로 개발 및 프로덕션 전반에서 일관된 결과를 위해 원격 환경을 로컬로 재현할 수 있습니다.

또한 사용자 지정 이미지를 빌드하는 데 도움이 되도록 Azure Databricks 요구 사항에 맞게 확장할 수 있는 서버리스 환경 버전 정렬된 기본 이미지를 제공합니다.

Requirements

표준 컴퓨팅에 Databricks Container Services를 사용하려면 다음을 수행합니다.

  • 컴퓨팅 리소스는 Databricks Runtime 18.3 이상을 실행하고 표준 액세스 모드를 사용해야 합니다.
  • 최신 Docker 데몬이 있어야 하며, PATH에서 docker 명령을 사용할 수 있어야 합니다.

1단계: 표준 컴퓨팅에 Databricks Container Services 사용

표준 컴퓨팅에 Databricks Container Services를 사용하려면 작업 영역 관리자가 미리 보기 페이지에서 기능을 사용하도록 설정해야 합니다.

  1. 관리자 권한으로 Azure Databricks 작업 영역에 로그인합니다.
  2. 오른쪽 위에 있는 사용자 메뉴에서 미리 보기를 클릭합니다.
  3. 표준 컴퓨팅에 대한 DCS를 찾아서 켭니다.

2단계: 사용자 지정 이미지 빌드

이러한 지침에서는 Databricks에서 제공하는 기본 이미지를 확장하여 사용자 지정 이미지를 빌드하는 방법을 보여 줍니다(권장). 기본 이미지에는 Ubuntu, Python 및 JDK와 같은 워크로드를 시작하는 데 필요한 종속성이 포함되어 있습니다. databricksruntime/environment:v5-standard를 가져와 그 위에 패키지를 추가하고, Databricks에서 관리하는 지속적인 업데이트와 보안 패치를 이어받을 수 있습니다.

처음부터 최소 기본 이미지를 빌드하려면 참조: 처음부터 최소 기본 이미지 빌드를 참조하세요.

2a단계: 기본 이미지 끌어오기

기본 이미지를 끌어오려면 다음을 실행합니다.

docker pull databricksruntime/environment:v5-standard

2b단계: 기본 이미지를 확장하는 Dockerfile 작성

기본 이미지의 /databricks/python3 가상 환경에 사용자 지정 Python 패키지를 설치합니다. 워크로드를 시작하는 시스템 가상 환경입니다.

FROM databricksruntime/environment:v5-standard

RUN /databricks/python3/bin/python -m pip install <your python package>

다음 예제에서는 프라이빗 리포지토리에서 패키지를 설치하는 방법을 보여줍니다.

FROM databricksruntime/environment:v5-standard

ENV PIP_INDEX_URL=https://pypi.org/simple

RUN /databricks/python3/bin/python -m pip install --no-cache-dir simplejson

표준 Dockerfile 명령(예: RUN, , ENVWORKDIRCOPY)을 사용할 수 있습니다. 다음 지침은 Azure Databricks 워크로드를 시작하는 방법 때문에 무시됩니다.

  • USER
  • CMD
  • ENTRYPOINT
  • EXPOSE
  • HEALTHCHECK
  • SHELL
  • STOPSIGNAL

메모

Scala 워크로드의 경우 JAR 파일을 이미지의 /scala-jars/user 디렉터리에 복사하고, 샌드박스 사용자가 해당 파일을 읽을 수 있도록 chmod 0644하세요. Azure Databricks 이 경로에서 Spark 클래스 경로로 JAR을 로드합니다.

2c단계: 이미지 빌드

이미지를 빌드하려면 다음을 실행합니다.

docker build -f <your-dockerfile> -t <registry-url>/<project>[/<repo>]:<tag> .

경고

Azure Databricks 컴퓨팅에서 사용자 지정 이미지를 철저히 테스트합니다. 로컬 컴퓨터 또는 빌드 머신에서 작동하는 이미지가 Azure Databricks에서 실행되면 시작되지 않거나, 알림 없이 기능을 비활성화하거나, 작동을 멈출 수 있습니다.

참조: 처음부터 최소 기본 이미지 빌드

기본 이미지의 내용에 대한 모든 권한이 필요한 경우(예: 엄격한 이미지 크기, 공급망 또는 규정 준수 요구 사항을 충족하기 위해) 확장하는 대신 처음부터 최소한으로 databricksruntime/environment:v5-standard 빌드할 수 있습니다.

경고

처음부터 빌드하는 것은 고급 옵션입니다. Python 핀, 보안 패치, 플랫폼 도구 및 v5-standard/databricks/ 아래의 플랫폼 필수 파일을 포함하여 /etc/environment 이미지의 업스트림 변경 내용을 추적해야 합니다. 대신 Databricks는 앞서 2단계에 표시된 대로 databricksruntime/environment:v5-standard를 확장할 것을 권장합니다.

Databricks는 v5-standard의 필수 Python 환경을 재현하는 참조 Dockerfile 및 requirements.txt을 제공합니다. 빌드하기 전에 두 파일을 동일한 디렉터리에 다운로드합니다.

이미지를 빌드하려면 다음을 실행합니다.

docker build -t <your-registry>/<repo>:<tag> .

빌드 호스트가 https://pypi.org에 접근할 수 없는 경우, 다음을 실행하여 빌드 시 pip 인덱스를 재정의하세요:

docker build --build-arg PIP_INDEX_URL=https://your-mirror/simple -t <your-registry>/<repo>:<tag> .

다음 단계를 계속하기 전에 다음을 실행하여 큐레이팅된 Python 패키지가 완전히 가져오는지 확인합니다.

docker run --rm --cpus 2 <your-registry>/<repo>:<tag> \
  /databricks/python3/bin/python -c \
  "import pandas, numpy, pyarrow, mlflow, databricks.connect; print('OK')"

3단계: 레지스트리에 이미지 푸시

다음으로, Docker 레지스트리에 이미지를 푸시합니다. Databricks Container Services는 표준 및 전용 컴퓨팅 모두에서 동일한 레지스트리를 지원합니다.

인증 또는 기본 인증을 지원하지 않는 다른 레지스트리도 작동해야 합니다. 기본 인증은 레지스트리 사용자 이름 및 암호를 사용합니다.

최상의 이미지 끌어오기 성능을 위해 Azure Databricks 작업 영역과 동일한 클라우드 및 지역의 레지스트리를 사용합니다.

echo "$REGISTRY_PASSWORD" | docker login -u <registry-username> --password-stdin <registry-url>
docker push <registry-url>/<project>[/<repo>]:<tag>

메모

Docker Hub 사용하는 경우 속도 제한이 6시간 동안 시작할 것으로 예상되는 컴퓨팅을 수용하는지 확인합니다. 자세한 내용은 Docker 설명서를 참조하세요. 이 제한을 초과하면 요청이 반환 429 Too Many Requests됩니다.

4단계: 컴퓨팅 시작

UI 또는 API를 사용하여 사용자 지정 이미지를 사용하는 컴퓨팅을 시작할 수 있습니다. 다음 요구 사항을 충족해야 합니다.

  • 컴퓨팅 액세스 모드는 표준이어야 합니다(API에서는 data_security_mode로 설정DATA_SECURITY_MODE_STANDARD). 컴퓨팅이 전용 액세스 모드로 설정된 경우 다른 기본 이미지를 예상하는 다른 버전의 Databricks Container Services가 사용되며 빌드한 기본 이미지로 시작되지 않습니다.
  • Databricks 런타임 버전은 18.3 이상이어야 합니다.

메모

인스턴스 풀에서 시작하려면 preloaded_docker_images이(가) 설정된 상태로 풀을 생성해야 하며, 클러스터의 docker_image와 일치해야 합니다. 시작하기 전에 인스턴스 풀에서 Databricks Container Services 사용을 참조하세요.

UI를 사용하여 컴퓨팅 시작

  1. 컴퓨팅 만들기 페이지에서액세스 모드표준으로 설정되고 Databricks 런타임18.3 이상으로 설정되어 있는지 확인합니다.

  2. 고급아래에서 Docker 탭을 선택합니다.

  3. 사용자 고유의 Docker 컨테이너를 사용하세요.

  4. Docker 이미지 URL 필드에 사용자 지정 이미지를 입력합니다.

    레지스트리 태그 형식
    Docker 허브 <organization>/<repository>:<tag>(예: databricksruntime/environment:v5-standard)
    Azure Container Registry (애저 컨테이너 레지스트리) <your-registry-name>.azurecr.io/<repository-name>:<tag>
  5. 인증 유형을 선택합니다. Docker 이미지 인증을 참조하세요.

메모

컴퓨팅을 생성할 때 Docker 설정이 표시되지 않으면 워크스페이스에서 Databricks Container Services가 활성화되어 있지 않을 수 있습니다. 사용자가 Docker 이미지를 지정하려면 먼저 작업 영역 관리자가 사용하도록 설정해야 합니다. 1단계: 표준 컴퓨팅에 Databricks Container Services 사용

API를 사용하여 컴퓨팅 시작

다음은 사용자 지정 이미지를 사용하여 표준 컴퓨팅을 만드는 예제 API 호출입니다. data_security_modeDATA_SECURITY_MODE_STANDARD로 설정되어 있고 spark_version18.3.x-scala2.13 이상으로 설정되어 있는지 확인하십시오.

databricks clusters create \
--cluster-name <cluster-name> \
--node-type-id Standard_DS3_v2 \
--json '{
  "num_workers": 1,
  "docker_image": {
    "url": "<docker-registry-image-url>",
    "basic_auth": {
      "username": "<docker-registry-username>",
      "password": "<docker-registry-password>"
    }
  },
  "spark_version": "18.3.x-scala2.13",
  "data_security_mode": "DATA_SECURITY_MODE_STANDARD"
}'

Docker 이미지 인증

인증 요구 사항은 Docker 이미지 유형에 따라 달라집니다. 비밀을 사용하여 인증 사용자 이름 및 암호를 저장할 수도 있습니다. 인증에 비밀 사용을 참조하세요.

  • 공용 Docker 이미지의 경우 인증 정보를 포함할 필요가 없습니다. UI에서 인증을(를) 기본 로 설정합니다. API 호출의 경우 없습니다.
  • 프라이빗 Docker 이미지의 경우 서비스 주체 ID 및 암호(또는 해당 비밀)를 사용자 이름 및 암호로 사용하여 인증합니다.
  • Azure Container Registry의 경우 서비스 주체 ID 및 암호(또는 해당 비밀)를 사용자 이름 및 암호로 사용하여 인증합니다. 서비스 주체를 만드는 방법에 대한 자세한 내용은 Azure Container Registry 서비스 주체 인증 설명서를 참조하세요.

인증에 비밀 사용

Databricks Container Service는 인증에 비밀 사용을 지원합니다. UI에서 컴퓨팅 리소스를 만들 때 인증 필드를 사용하여 사용자 이름 및 암호선택한 다음 일반 텍스트 사용자 이름 또는 암호를 입력하는 대신 {{secrets/<scope-name>/<dcs-secret>}} 형식으로 비밀을 입력합니다. API를 사용하는 경우 basic_auth 필드에 비밀을 입력합니다.

비밀을 만드는 방법에 대한 자세한 내용은 비밀 관리참조하세요.

인스턴스 풀에서 Databricks Container Services 사용

인스턴스 풀에서 Databricks Container Services를 사용하려면 UI가 아닌 인스턴스 풀 API를 사용하여 풀을 만들어야 합니다.

미리 로드된 Docker 이미지를 사용하여 풀을 만들어야 합니다. 이렇게 하면 사용자 지정 이미지로 유휴 인스턴스가 따뜻해지므로 워크로드가 더 빠르게 시작됩니다. 요청에서 preloaded_docker_images 필드를, 컴퓨트를 직접 시작할 때 사용하는 것과 동일한 이미지 참조 및 인증으로 설정합니다. 필드가 목록이므로 단일 풀에서 여러 이미지를 미리 로드할 수 있습니다.

풀 및 연결된 컴퓨팅 리소스는 Docker가 사용 중인지 여부에 동의해야 합니다. 풀에 preloaded_docker_images이(가) 설정되어 있지 않으면 해당 풀에 대해 Databricks Container Services 컴퓨팅을 시작할 수 없습니다. preloaded_docker_images이 설정된 새 풀을 만듭니다.

preloaded_docker_images로 생성된 풀의 경우, 해당 풀에서 시작되는 모든 컴퓨팅 리소스는 생성 요청에 일치하는 docker_image를 제공해야 합니다. 그렇지 않으면 컴퓨트 생성이 'docker_image' must be provided for cluster created with instance pool: <pool-id> 실패합니다.

기존 Databricks Container Services에서 마이그레이션하기

표준 컴퓨팅용 Databricks Container Services는 전용 컴퓨팅을 위한 원래 Databricks Container Services와는 다른 서비스입니다. 이 기능에는 다음과 같은 차이점이 있습니다.

  • 워크로드는 Spark Connect 프로토콜을 통해 실행됩니다.
  • Init 스크립트는 워크로드의 Python 환경을 수정하지 않습니다. Docker 이미지에 모든 Python 종속성을 설치해야 합니다. Datadog 또는 Kafka 에이전트와 같은 Spark의 데이터를 사용하는 애플리케이션에 init 스크립트를 계속 사용할 수 있습니다.

전용 컴퓨팅을 위해 원래 Databricks Container Services에서 마이그레이션하려면 표준 컴퓨팅을 위해 Databricks Container Services에서 사용자 지정 이미지를 다시 빌드하고 컴퓨팅 구성을 업데이트합니다.

  1. Dockerfile에서 FROM 줄을 FROM databricksruntime/environment:v5-standard로 교체하세요(AWS Graviton의 경우 v5-standard-arm).
  2. Dockerfile 지침을 새 기본 이미지로 포트합니다. 2단계: 사용자 지정 이미지 빌드에 나열된 예외를 제외하고 표준 Dockerfile 지침이 지원됩니다.
  3. Python 패키지는 다른 가상 환경이 아니라 /databricks/python3에 설치하세요. 워크로드(노트북, Python wheel 작업, Python 스크립트 작업)는 이 경로에서 읽습니다.
  4. 표준 액세스 모드 및 Databricks Runtime 18.3 이상을 사용하도록 컴퓨팅 구성을 업데이트합니다.
  5. init 스크립트가 이전에 수행한 Python 환경 설정을 Dockerfile로 이동합니다.

Limitations

표준 컴퓨팅 제한 사항 외에도 표준 컴퓨팅에 대한 Databricks Container Services에는 다음과 같은 제한 사항이 있습니다.

  • 컴퓨팅 범위 라이브러리는 지원되지 않습니다.
  • 프라이빗 패키지 리포지토리는 지원되지 않습니다.
  • Machine Learning Databricks Runtime은 지원되지 않습니다.
  • 인스턴스 풀을 대상으로 Databricks Container Services에서 표준 컴퓨팅을 시작하려면 preloaded_docker_images가 설정된 상태로 풀을 생성해야 합니다. 인스턴스 풀에서 Databricks Container Services 사용을 참조하세요.

Troubleshooting

컴퓨팅을 만들 때 Docker 탭이 고급 아래에 표시되지 않으면 작업 영역에 Databricks Container Services를 사용할 수 없습니다. 사용자가 Docker 이미지를 지정하려면 먼저 작업 영역 관리자가 작업 영역에서 이를 사용하도록 설정해야 합니다. 1단계: 표준 컴퓨팅에 Databricks Container Services 사용