사전 설치된 패키지가 포함된 커스텀 이미지로 Dataproc 클러스터를 만들 수 있습니다. 이 페이지에서는 커스텀 이미지를 만들고 Dataproc 클러스터에 설치하는 방법을 설명합니다.
사용 고려사항 및 제한사항
커스텀 이미지 전체 기간: 클러스터에 최신 서비스 업데이트 및 버그 수정이 적용되도록 보장하기 위해 커스텀 이미지를 사용한 클러스터 만들기는 커스텀 이미지 생성일로부터 365일까지로 제한됩니다. 커스텀 이미지로 만든 기존 클러스터는 무한대로 실행될 수 있습니다.
특정 커스텀 이미지를 사용하여 365일 이상 클러스터를 만들려면 자동화를 사용해야 할 수 있습니다. 자세한 내용은 만료된 커스텀 이미지를 사용하여 클러스터를 만드는 방법을 참조하세요.
Linux만 해당: 이 문서의 안내는 Linux 운영체제에만 적용됩니다. 다른 운영체제는 향후 출시되는 Dataproc 버전에서 지원될 예정입니다.
지원되는 기본 이미지: 커스텀 이미지 빌드는 Dataproc 기본 이미지에서 시작해야 합니다. Debian, Rocky Linux, Ubuntu 기본 이미지가 지원됩니다.
- 기본 이미지 가용성: Dataproc 출시 노트에 발표된 새 이미지는 발표일로부터 1주일 동안 커스텀 이미지의 기본으로 사용될 수 없습니다.
선택적 구성요소 사용: 기본적으로 커스텀 이미지는 기본 이미지에서 모든 Dataproc 선택적 구성요소(OS 패키지 및 구성)를 상속합니다. 기본 OS 패키지 버전과 구성을 맞춤설정할 수 있지만 클러스터를 만들 때 선택적 구성요소 이름을 지정해야 합니다.
클러스터 생성 명령어 예시는 다음과 같습니다.
gcloud dataproc clusters create --optional-components=COMPONENT_NAME \ --image=CUSTOM_IMAGE_URI \ ... other flags
클러스터를 만들 때 구성요소 이름을 지정하지 않으면 구성요소(커스텀 OS 패키지 및 구성 포함)가 삭제됩니다.
호스팅된 커스텀 이미지 사용: 다른 프로젝트에서 호스팅되는 커스텀 이미지를 사용하는 경우 프로젝트의 Dataproc 서비스 에이전트 서비스 계정에 호스트 프로젝트의 이미지에 대한
compute.images.get
권한이 있어야 합니다. 호스팅된 이미지에 대한roles/compute.imageUser
역할을 프로젝트의 Dataproc 서비스 에이전트 서비스 계정에 부여하여 이 권한을 부여할 수 있습니다. 조직 내에서 커스텀 이미지 공유를 참조하세요.보안 부트 MOK(머신 소유자 키) 보안 비밀 사용: Dataproc 커스텀 이미지로 부안 부트를 사용 설정하려면 다음을 수행합니다.
Secret Manager API (
secretmanager.googleapis.com
)를 사용 설정합니다. Dataproc에서 Secret Manager 서비스를 사용하여 키 쌍을 생성하고 관리합니다.커스텀 이미지를 생성할 때
generate_custom_image.py
명령어에--service-account="SERVICE_ACCOUNT"
플래그를 추가합니다. 참고: 서비스 계정에 프로젝트에 대한 Secret Manager 뷰어 역할(roles/secretmanager.viewer
)과 공개 및 비공개 보안 비밀에 대한 Secret Manager 접근자 역할(roles/secretmanager.secretAccessor
)을 부여해야 합니다.예시를 포함한 자세한 내용은
README.md
및 GitHub의GoogleCloudDataproc/custom-images
저장소 examples/secure-boot 디렉터리 내에 있는 기타 파일을 참조하세요.보안 부트 중지: 기본적으로 Dataproc 커스텀 이미지 스크립트는 Dataproc 클러스터에서 실행될 때 Secret Manager를 사용하여 키 쌍을 생성하고 관리합니다. 커스텀 이미지에서 secure-boot를 사용하지 않으려면 커스텀 이미지를 생성할 때
generate_custom_image.py
명령어에--trusted-cert=""
(플래그 값이 비어 있음)를 포함합니다.
시작하기 전에
커스텀 이미지를 생성하기 전에 프로젝트를 설정해야 합니다.
프로젝트 설정
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Dataproc API, Compute Engine API, and Cloud Storage APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Dataproc API, Compute Engine API, and Cloud Storage APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
- Python 3.11+를 설치합니다.
- 커스텀 패키지 또는 업데이트 구성을 설치하는 맞춤설정 스크립트를 준비합니다. 예를 들면 다음과 같습니다.
#! /usr/bin/bash apt-get -y update apt-get install python-dev apt-get install python-pip pip install numpy
프로젝트에 Cloud Storage 버킷 만들기
- In the Google Cloud console, go to the Cloud Storage Buckets page.
- Click Create bucket.
- On the Create a bucket page, enter your bucket information. To go to the next
step, click Continue.
- For Name your bucket, enter a name that meets the bucket naming requirements.
-
For Choose where to store your data, do the following:
- Select a Location type option.
- Select a Location option.
- For Choose a default storage class for your data, select a storage class.
- For Choose how to control access to objects, select an Access control option.
- For Advanced settings (optional), specify an encryption method, a retention policy, or bucket labels.
- Click Create.
커스텀 이미지 생성
Python 프로그램인 generate_custom_image.py를 사용하여 Dataproc 커스텀 이미지를 만듭니다.
기능 소개
generate_custom_image.py
프로그램은 지정된 Dataproc 기본 이미지를 사용하여 임시 Compute Engine VM 인스턴스를 시작한 후 VM 인스턴스 내에서 맞춤설정 스크립트를 실행하여 커스텀 패키지를 설치하거나 구성을 업데이트합니다. 맞춤설정 스크립트가 완료되면 VM 인스턴스를 종료하고 VM 인스턴스 디스크에서 Dataproc 커스텀 이미지를 만듭니다. 커스텀 이미지가 생성되면 임시 VM이 삭제됩니다. 커스텀 이미지가 저장되며 Dataproc 클러스터를 만드는 데 사용할 수 있습니다.
generate_custom_image.py
프로그램은 gcloud CLI를 사용하여 Compute Engine에서 다단계 워크플로를 실행합니다.
코드 실행
GitHub(Dataproc 커스텀 이미지)에서 파일을 포크하거나 클론합니다.
그런 다음 generate_custom_image.py
스크립트를 실행하여 Dataproc에서 커스텀 이미지를 생성하고 저장하도록 합니다.
python3 generate_custom_image.py \ --image-name=CUSTOM_IMAGE_NAME \ [--family=CUSTOM_IMAGE_FAMILY_NAME] \ --dataproc-version=IMAGE_VERSION \ --customization-script=LOCAL_PATH \ --zone=ZONE \ --gcs-bucket=gs://BUCKET_NAME \ [--no-smoke-test]
필수 플래그
--image-name
: 커스텀 이미지의 출력 이름입니다. 참고: 이미지 이름은 밑줄이나 공백이 없고 64자(영문 기준) 미만인 정규 표현식[a-z](?:[-a-z0-9]{0,61}[a-z0-9])
와 일치해야 합니다.--dataproc-version
: 커스텀 이미지에서 사용할 Dataproc 이미지 버전입니다. 버전을x.y.z-os
또는x.y.z-rc-os
형식으로 지정합니다(예: '2.0.69-debian10').--customization-script
: 커스텀 패키지를 설치하거나 다른 맞춤설정을 수행하기 위해 도구가 실행할 스크립트에 대한 로컬 경로입니다. 이 스크립트는 커스텀 이미지를 만드는 데 사용되는 임시 VM에서만 Linux 시작 스크립트로 실행됩니다. 커스텀 이미지로 클러스터를 만들 때 수행할 다른 초기화 작업에는 다른 초기화 스크립트를 지정할 수 있습니다.교차 프로젝트 이미지: 커스텀 이미지가 여러 프로젝트에서 클러스터를 만드는 데 사용되는 경우 이미지 내에 저장된
gcloud
또는gsutil
명령어 캐시로 인해 오류가 발생할 수 있습니다. 맞춤설정 스크립트에 다음 명령어를 포함하여 캐시된 사용자 인증 정보를 삭제하면 이 문제를 방지할 수 있습니다.rm -r /root/.gsutil /root/.config/gcloud
--zone
: 커스텀 이미지를 만드는 데 사용할 임시 VM을 만드는generate_custom_image.py
의 Compute Engine 영역입니다.--gcs-bucket
:gs://BUCKET_NAME
형식의 URI로, Cloud Storage 버킷을 가리킵니다.generate_custom_image.py
는 이 버킷에 로그 파일을 작성합니다.
선택적 플래그
--family
: 커스텀 이미지의 이미지 계열입니다. 이미지 계열은 유사한 이미지를 함께 그룹화하는 데 사용되며, 클러스터를 생성할 때 해당 계열의 최신 이미지에 대한 포인터로 사용할 수 있습니다. 예를 들면custom-2-2-debian12
입니다.--no-smoke-test
: 새로 빌드한 커스텀 이미지의 스모크 테스트를 사용 중지하는 선택적 플래그입니다. 스모크 테스트는 새로 빌드된 이미지로 Dataproc 테스트 클러스터를 만들고 작은 작업을 실행한 다음 테스트가 끝날 때 클러스터를 삭제합니다. 스모크 테스트는 기본적으로 실행되어 새로 빌드된 커스텀 이미지가 기능적인 Dataproc 클러스터를 만들 수 있는지 확인합니다.--no-smoke-test
플래그를 사용하여 이 단계를 중지하면 커스텀 이미지 빌드 프로세스가 빨라지지만 사용하지 않는 것이 좋습니다.--subnet
: 커스텀 Dataproc 이미지를 빌드하는 VM을 만드는 데 사용할 서브네트워크입니다. 프로젝트가 공유 VPC에 포함된 경우 전체 서브네트워크 URL을projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET
형식으로 지정해야 합니다.
추가 선택적 플래그 목록은 GitHub의 선택적 인수를 참조하세요.
generate_custom_image.py
가 성공하면 커스텀 이미지의 imageURI
가 터미널 창 출력에 표시됩니다(전체 imageUri
는 아래에 굵게 표시됨).
... managedCluster: clusterName: verify-image-20180614213641-8308a4cd config: gceClusterConfig: zoneUri: ZONE masterConfig: imageUri: https://www.googleapis.com/compute/beta/projects/PROJECT_ID/global/images/CUSTOM_IMAGE_NAME ... INFO:__main__:Successfully built Dataproc custom image: CUSTOM_IMAGE_NAME INFO:__main__: ##################################################################### WARNING: DATAPROC CUSTOM IMAGE 'CUSTOM_IMAGE_NAME' WILL EXPIRE ON 2018-07-14 21:35:44.133000. #####################################################################
커스텀 이미지 버전 라벨(고급 사용)
Dataproc의 표준 커스텀 이미지 도구를 사용할 때 이 도구는 생성된 커스텀 이미지에 goog-dataproc-version
라벨을 설정합니다. 이 라벨은 이미지에서 소프트웨어를 관리하기 위해 Dataproc에 사용되는 특성 기능 및 프로토콜을 반영합니다.
고급 사용: 자체 프로세스를 수행하여 커스텀 Dataproc 이미지를 만드는 경우 다음과 같이 커스텀 이미지에 goog-dataproc-version
라벨을 수동으로 추가해야 합니다.
커스텀 이미지 만들기를 위해 사용되는 기본 Dataproc 이미지에서
goog-dataproc-version
라벨을 추출합니다.gcloud compute images describe ${BASE_DATAPROC_IMAGE} \ --project cloud-dataproc \ --format="value(labels.goog-dataproc-version)"
커스텀 이미지에 라벨을 설정합니다.
gcloud compute images add-labels IMAGE_NAME --labels=[KEY=VALUE,...]
커스텀 이미지 사용
Dataproc 클러스터를 만들 때 커스텀 이미지를 지정합니다. 커스텀 이미지는 Cloud Compute 이미지에 저장되어 생성일로부터 365일 동안 Dataproc 클러스터를 만드는 데 사용할 수 있습니다. 365일 만료일이 지난 후 커스텀 이미지를 사용하려면 만료된 커스텀 이미지로 클러스터를 만드는 방법을 참조하세요.
커스텀 이미지 URI
커스텀 이미지의 imageUri
를 클러스터 생성 작업에 전달합니다.
이 URI는 다음 세 가지 방법 중 하나로 지정할 수 있습니다.
- 전체 URI:
https://www.googleapis.com/compute/beta/projects/PROJECT_ID/global/images/`gs://`BUCKET_NAME`
- 부분 URI:
projects/PROJECT_ID/global/images/CUSTOM_IMAGE_NAME
- 닉네임: CUSTOM_IMAGE_NAME
커스텀 이미지는 계열 URI에서 지정할 수 있으며 항상 이미지 계열에서 가장 최근의 이미지를 선택합니다.
- 전체 URI:
https://www.googleapis.com/compute/beta/projects/PROJECT_ID/global/images/family/CUSTOM_IMAGE_FAMILY_NAME/var>
- 부분 URI:
projects/PROJECT_ID/global/images/family/CUSTOM_IMAGE_FAMILY_NAME
커스텀 이미지 URI를 찾는 방법
Google Cloud CLI
다음 명령어를 실행하여 커스텀 이미지 이름을 나열합니다.
gcloud compute images list
커스텀 이미지의 URI(selfLink
)를 나열하려면 커스텀 이미지 이름을 다음 명령어에 전달합니다.
gcloud compute images describe custom-image-name
출력 스니펫:
... name: CUSTOM_IMAGE_NAME selfLink: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/images/CUSTOM_IMAGE_NAME ...
콘솔
- Google Cloud 콘솔에서 Compute Engine→이미지 페이지를 열고 이미지 이름을 클릭합니다.
filter images
필드에 쿼리를 삽입하여 표시되는 이미지의 수를 제한할 수 있습니다. - 이미지 세부정보 페이지가 열립니다. 동등한 REST를 클릭합니다.
- REST 응답은 이미지 URI인
selfLink
를 포함하여 이미지에 대한 추가 정보를 나열합니다.{ ... "name": "my-custom-image", "selfLink": "projects/PROJECT_ID/global/images/CUSTOM_IMAGE_NAME", "sourceDisk": ..., ... }
커스텀 이미지로 클러스터 만들기
gcloud CLI, Dataproc API 또는 Google Cloud 콘솔을 사용하여 커스텀 이미지를 사용하는 마스터 및 워커 노드로 클러스터를 만듭니다.
gcloud CLI
--image
플래그와 함께 dataproc clusters create 명령어를 사용하여 커스텀 이미지로 Dataproc 클러스터를 만듭니다.
gcloud dataproc clusters create CLUSTER-NAME \ --image=CUSTOM_IMAGE_URI \ --region=REGION \ ... other flags ...
REST API
cluster.create API 요청에 포함된 masterConfig
, workerConfig
, secondaryWorkerConfig
(해당되는 경우) 객체의 InstanceGroupConfig.imageUri 필드에 커스텀 이미지 URI를 지정하여 커스텀 이미지로 클러스터를 만듭니다.
예: 커스텀 이미지로 표준 Dataproc 클러스터(마스터 1개, 워커 노드 2개)를 만드는 REST 요청입니다.
POST /v1/projects/PROJECT_ID/regions/REGION/clusters/ { "clusterName": "CLUSTER_NAME", "config": { "masterConfig": { "imageUri": "projects/PROJECT_ID/global/images/CUSTOM_IMAGE_NAME" }, "workerConfig": { "imageUri": "projects/PROJECT_ID/global/images/CUSTOM_IMAGE_NAME" } } }
콘솔
- Dataproc 클러스터 만들기 페이지를 엽니다. 클러스터 설정 패널이 선택되었습니다.
- 버전 관리 섹션에서 변경을 클릭합니다. 커스텀 이미지 탭을 선택하고 Dataproc 클러스터에 사용할 커스텀 이미지를 선택한 후 선택을 클릭합니다. 선택한 커스텀 이미지를 통해 클러스터의 VM이 프로비저닝됩니다.
커스텀 이미지로 Dataproc 클러스터 속성 재정의
커스텀 이미지를 사용하면 클러스터 생성 중에 설정된 클러스터 속성을 덮어쓸 수 있습니다. 커스텀 이미지로 클러스터를 만들고 클러스터 생성 작업에서 커스텀 이미지에서 설정한 값과 다른 값으로 속성을 설정하는 경우에는 커스텀 이미지에서 설정한 속성 값이 우선 적용됩니다.
커스텀 이미지로 클러스터 속성을 설정하려면 다음 안내를 따르세요.
커스텀 이미지 맞춤설정 스크립트에서
/etc/google-dataproc
에dataproc.custom.properties
파일을 만든 다음 파일에 클러스터 속성 값을 설정합니다.- 샘플
dataproc.custom.properties
파일:
dataproc.conscrypt.provider.enable=VALUE dataproc.logging.stackdriver.enable=VALUE
- 맞춤설정 스크립트 파일 생성 스니펫을 샘플링하여 클러스터 속성 2개를 재정의합니다.
cat <<EOF >/etc/google-dataproc/dataproc.custom.properties dataproc.conscrypt.provider.enable=true dataproc.logging.stackdriver.enable=false EOF
- 샘플
만료된 커스텀 이미지를 사용하여 클러스터를 만드는 방법
기본적으로 커스텀 이미지는 이미지 생성일로부터 365일 후에 만료됩니다. 다음 단계를 완료하여 만료된 커스텀 이미지를 사용하는 클러스터를 만들 수 있습니다.
만료된 커스텀 이미지나 10일 이내에 만료될 커스텀 이미지를 사용하여 Dataproc 클러스터를 만듭니다.
gcloud dataproc clusters create CLUSTER-NAME \ --image=CUSTOM-IMAGE-NAME \ --region=REGION \ ... other flags ...
gcloud CLI가 클러스터
dataproc:dataproc.custom.image.expiration.token
속성 이름 및 토큰 값을 포함하는 오류 메시지를 실행합니다.
dataproc:dataproc.custom.image.expiration.token=TOKEN_VALUE
TOKEN_VALUE 문자열을 클립보드에 복사합니다.
gcloud CLI를 사용하여 Dataproc 클러스터를 다시 만들고 복사한 TOKEN_VALUE를 클러스터 속성으로 추가합니다.
gcloud dataproc clusters create CLUSTER-NAME \ --image=CUSTOM-IMAGE-NAME \ --properties=dataproc:dataproc.custom.image.expiration.token=TOKEN_VALUE \ --region=REGION \ ... other flags ...
커스텀 이미지로 클러스터 만들기가 성공합니다.