시작하기 전에
- 클러스터에 워크로드 아이덴티티가 사용 설정된 표준(Autopilot 아님) Google Kubernetes Engine(GKE) 영역 또는 리전 클러스터를 만들어야 합니다.
GKE 기반 Dataproc 가상 클러스터 만들기
GKE 기반 Dataproc 가상 클러스터는 Dataproc 구성요소를 위한 배포 플랫폼으로 생성됩니다. 가상 리소스로서 Compute Engine 기반 Dataproc 클러스터와 달리 별도의 Dataproc 마스터 및 작업자 VM을 포함하지 않습니다.
GKE 기반 Dataproc에서는 GKE 기반 Dataproc 가상 클러스터를 만들 때 GKE 클러스터 내에 노드 풀을 만듭니다.
GKE 기반 Dataproc 작업은 이 노드 풀에서 포드로 실행됩니다. 노드 풀 및 노드 풀의 포드 예약은 GKE에서 관리됩니다.
여러 개의 가상 클러스터를 만듭니다. GKE 클러스터에서 여러 가상 클러스터를 만들고 실행하여 가상 클러스터에서 노드 풀을 공유하면 개선된 리소스 사용률을 얻을 수 있습니다.
- 각 가상 클러스터:
- Spark 엔진 버전 및 워크로드 아이덴티티를 포함한 별도의 속성으로 생성됩니다.
- GKE 클러스터의 별도 GKE 네임스페이스 내에 격리됩니다.
- 각 가상 클러스터:
콘솔
Google Cloud 콘솔에서 Dataproc 클러스터 페이지로 이동합니다.
클러스터 만들기를 클릭합니다.
Dataproc 클러스터 만들기 대화상자의 GKE의 클러스터 행에서 만들기를 클릭합니다.
클러스터 설정 패널에서 다음을 수행합니다.
- 클러스터 이름 필드에 클러스터 이름을 입력합니다.
- 리전 목록에서 GKE 기반 Dataproc 가상 클러스터의 리전을 선택합니다. 이 리전은 기존 GKE 클러스터가 위치한 리전(다음 항목에서 선택)이어야 합니다.
- Kubernetes 클러스터 필드에서 찾아보기를 클릭하여 기존 GKE 클러스터가 있는 리전을 선택합니다.
- 선택사항: Cloud Storage 스테이징 버킷 필드에서 찾아보기를 클릭하여 기존 Cloud Storage 버킷을 선택할 수 있습니다. GKE 기반 Dataproc은 버킷의 아티팩트를 스테이징합니다. GKE 기반 Dataproc에서 스테이징 버킷을 만들도록 하려면 이 필드를 무시하세요.
왼쪽 패널에서 노드 풀 구성을 클릭한 후 노드 풀 패널에서 풀 추가를 클릭합니다.
- 기존 GKE 기반 Dataproc 노드 풀을 재사용하려면 다음 안내를 따르세요.
- 기존 노드 풀 재사용을 클릭합니다.
- 기존 노드 풀 이름을 입력하고 역할을 선택합니다. 노드 풀 최소 하나 이상에 기본 역할이 있어야 합니다.
- 완료를 클릭합니다.
- GKE 기반 Dataproc 노드 풀을 새로 만들려면 다음 안내를 따르세요.
- 풀 추가를 클릭하여 노드 풀을 더 추가합니다. 모든 노드 풀에 위치가 있어야 합니다. 노드 풀을 총 4개까지 추가할 수 있습니다.
- 기존 GKE 기반 Dataproc 노드 풀을 재사용하려면 다음 안내를 따르세요.
(선택사항) Dataproc 영구 기록 서버(PHS)를 사용해 활성 및 삭제된 GKE 기반 Dataproc 클러스터에 대한 Spark 작업 기록을 확인하도록 설정했다면 클러스터 맞춤설정을 클릭합니다. 그런 후 기록 서버 클러스터 필드에서 PHS 클러스터를 찾아 선택합니다. PHS 클러스터가 GKE 기반 Dataproc 가상 클러스터와 동일한 리전에 있어야 합니다.
만들기를 클릭하여 Dataproc 클러스터를 만듭니다. GKE 기반 Dataproc 클러스터가 클러스터 페이지의 목록에 나타납니다. 클러스터를 사용할 수 있을 때까지 상태는 프로비저닝이고 실행 중으로 변경됩니다.
gcloud
로컬 또는 Cloud Shell에서 환경 변수를 설정한 후 gcloud dataproc clusters gke create
명령어를 실행하여 GKE 기반 Dataproc 클러스터를 만듭니다.
환경 변수를 설정합니다.
참고:DP_CLUSTER=Dataproc on GKE cluster-name \ REGION=region \ GKE_CLUSTER=GKE cluster-name \ BUCKET=Cloud Storage bucket-name \ DP_POOLNAME=node pool-name PHS_CLUSTER=Dataproc PHS server name
DP_CLUSTER
: Dataproc 가상 클러스터 이름을 설정합니다. 이름은 소문자로 시작하고 이어서 최대 54자의 소문자, 숫자 또는 하이픈이 와야 합니다. 하이픈으로 끝날 수 없습니다.REGION
: region은 GKE 클러스터가 위치한 리전과 같아야 합니다.GKE_CLUSTER
: 기존 GKE 클러스터의 이름입니다.BUCKET
: (선택사항) Dataproc이 아티팩트를 스테이징하는 데 사용할 Cloud Storage 버킷의 이름을 지정할 수 있습니다. 버킷을 지정하지 않으면 GKE 기반 Dataproc에서 스테이징 버킷을 만듭니다.DP_POOLNAME
: GKE 클러스터에 만들려는 노드 풀의 이름입니다.PHS_CLUSTER
: (선택사항) 활성 및 삭제된 GKE 기반 Dataproc 클러스터에 대한 Spark 작업 기록을 확인하는 데 사용할 Dataproc PHS 서버입니다. PHS 클러스터가 GKE 기반 Dataproc 가상 클러스터와 동일한 리전에 있어야 합니다.
다음 명령어를 실행합니다.
참고:gcloud dataproc clusters gke create ${DP_CLUSTER} \ --region=${REGION} \ --gke-cluster=${GKE_CLUSTER} \ --spark-engine-version=latest \ --staging-bucket=${BUCKET} \ --pools="name=${DP_POOLNAME},roles=default" \ --setup-workload-identity \ --history-server-cluster=${PHS_CLUSTER}
--spark-engine-version
: Dataproc 클러스터에 사용된 Spark 이미지 버전입니다.3
,3.1
또는latest
와 같은 식별자를 사용하거나3.1-dataproc-5
와 같은 전체 하위 부 버전을 지정할 수 있습니다.--staging-bucket
: GKE 기반 Dataproc에서 스테이징 버킷을 만들도록 하려면 이 플래그를 삭제합니다.--pools
: 이 플래그는 Dataproc이 워크로드를 수행하기 위해 만들거나 사용할 신규 또는 기존 노드 풀을 지정하는 데 사용됩니다. GKE 기반 Dataproc 노드 풀 설정을 쉼표로 구분하여 나열합니다. 예: 노드 풀--pools=name=dp-default,roles=default,machineType=e2-standard-4,min=0,max=10
name
과role
을 지정해야 합니다. 다른 노드 풀 설정은 선택사항입니다. 여러--pools
플래그를 사용하여 여러 노드 풀을 지정할 수 있습니다. 노드 풀 최소 하나 이상에default
역할이 있어야 합니다. 모든 노드 풀에 동일한 위치가 있어야 합니다.--setup-workload-identity
: 이 플래그는 워크로드 아이덴티티 바인딩을 사용 설정합니다. 이러한 바인딩을 통해 Kubernetes 서비스 계정(KSA)은 가상 클러스터의 기본 Dataproc VM 서비스 계정(데이터 영역 ID) 역할을 할 수 있습니다.
REST
Dataproc API cluster.create
요청의 일부로 virtualClusterConfig를 작성합니다.
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- PROJECT: Google Cloud 프로젝트 ID
- REGION: Dataproc 가상 클러스터 리전(기존 GKE 클러스터 리전과 동일한 리전)
- DP_CLUSTER: Dataproc 클러스터 이름
- GKE_CLUSTER: GKE 클러스터 이름
- NODE_POOL: 노드 풀 이름
- PHS_CLUSTER: 영구 기록 서버(PHS) 클러스터 이름
- BUCKET: (선택사항) 스테이징 버킷 이름 (GKE 기반 Dataproc에서 스테이징 버킷을 만들도록 하려면 비워둡니다.)
HTTP 메서드 및 URL:
POST https://dataproc.googleapis.com/v1/projects/project-id/regions/region/clusters
JSON 요청 본문:
{ "clusterName":"DP_CLUSTER", "projectId":"PROJECT", "virtualClusterConfig":{ "auxiliaryServicesConfig":{ "sparkHistoryServerConfig":{ "dataprocCluster":"projects/PROJECT/regions/REGION/clusters/PHS_CLUSTER" } }, "kubernetesClusterConfig":{ "gkeClusterConfig":{ "gkeClusterTarget":"projects/PROJECT/locations/REGION/clusters/GKE_CLUSTER", "nodePoolTarget":[ { "nodePool":"projects/PROJECT/locations/REGION/clusters/GKE_CLUSTER/nodePools/NODE_POOL", "roles":[ "DEFAULT" ] } ] }, "kubernetesSoftwareConfig":{ "componentVersion":{ "SPARK":"latest" } } }, "stagingBucket":"BUCKET" } }
요청을 보내려면 다음 옵션 중 하나를 펼칩니다.
다음과 비슷한 JSON 응답이 표시됩니다.
{ "projectId":"PROJECT", "clusterName":"DP_CLUSTER", "status":{ "state":"RUNNING", "stateStartTime":"2022-04-01T19:16:39.865716Z" }, "clusterUuid":"98060b77-...", "statusHistory":[ { "state":"CREATING", "stateStartTime":"2022-04-01T19:14:27.340544Z" } ], "labels":{ "goog-dataproc-cluster-name":"DP_CLUSTER", "goog-dataproc-cluster-uuid":"98060b77-...", "goog-dataproc-location":"REGION", "goog-dataproc-environment":"prod" }, "virtualClusterConfig":{ "stagingBucket":"BUCKET", "kubernetesClusterConfig":{ "kubernetesNamespace":"dp-cluster", "gkeClusterConfig":{ "gkeClusterTarget":"projects/PROJECT/locations/REGION/clusters/GKE_CLUSTER", "nodePoolTarget":[ { "nodePool":"projects/PROJECT/locations/REGION/clusters/GKE_CLUSTER/nodePools/NODE_POOL", "roles":[ "DEFAULT" ] } ] }, "kubernetesSoftwareConfig":{ "componentVersion":{ "SPARK":"3.1-..." }, "properties":{ "dpgke:dpgke.unstable.outputOnly.endpoints.sparkHistoryServer":"https://...", "spark:spark.eventLog.dir":"gs://BUCKET/.../spark-job-history", "spark:spark.eventLog.enabled":"true" } } }, "auxiliaryServicesConfig":{ "sparkHistoryServerConfig":{ "dataprocCluster":"projects/PROJECT/regions/REGION/clusters/PHS_CLUSTER" } } }
Spark 작업 제출
GKE 기반 Dataproc 가상 클러스터가 실행된 후 Google Cloud console, gcloud CLI, 또는 Dataproc jobs.submit
API(직접 HTTP 요청 또는 Cloud 클라이언트 라이브러리사용)를 사용하여 Spark 작업을 제출합니다.
gcloud CLI Spark 작업 예시:
gcloud dataproc jobs submit spark \ --region=${REGION} \ --cluster=${DP_CLUSTER} \ --class=org.apache.spark.examples.SparkPi \ --jars=local:///usr/lib/spark/examples/jars/spark-examples.jar \ -- 1000
gcloud CLI PySpark 작업 예시:
gcloud dataproc jobs submit pyspark \ --region=${REGION} \ --cluster=${DP_CLUSTER} \ local:///usr/lib/spark/examples/src/main/python/pi.py \ -- 10
gcloud CLI SparkR 작업 예시:
gcloud dataproc jobs submit spark-r \ --region=${REGION} \ --cluster=${DP_CLUSTER} \ local:///usr/lib/spark/examples/src/main/r/dataframe.R
삭제
이 빠른 시작에서 사용된 다음 리소스를 계속 사용하지 않으려면 삭제합니다.
GKE 기반 Dataproc 클러스터에서 사용한 노드 풀을 삭제합니다.