Dataproc 드라이버 노드 그룹

개요

Dataproc NodeGroup 리소스는 할당된 역할을 실행하는 Dataproc 클러스터 노드의 그룹입니다. 이 페이지에서는 Dataproc 클러스터에서 작업 드라이버를 실행하기 위해 Driver 역할이 할당된 Compute Engine VMS 그룹인 드라이버 노드 그룹을 설명합니다.

드라이버 노드 그룹을 사용하는 경우

  • 공유 클러스터에서 여러 동시 작업을 실행해야 하는 경우에만 드라이버 노드 그룹을 사용합니다.
  • 드라이버 노드 그룹 제한을 방지하려면 드라이버 노드 그룹을 사용하기 전에 마스터 노드 리소스를 늘립니다.

드라이버 노드가 동시 작업을 실행하는 데 도움이 되는 방식

Dataproc은 각 작업에 대해 Dataproc 클러스터 마스터 노드에서 작업 드라이버 프로세스를 시작합니다. 그러면 드라이버 프로세스는 spark-submit와 같은 애플리케이션 드라이버를 하위 프로세스로 실행합니다. 하지만 마스터에서 실행되는 동시 작업 수는 마스터 노드에서 사용할 수 있는 리소스로 제한되며 Dataproc 마스터 노드를 확장할 수 없기 때문에 마스터 노드 리소스가 작업을 실행하기에 충분하지 않을 때 작업이 실패하거나 제한될 수 있습니다.

드라이버 노드 그룹은 YARN에서 관리하는 특수 노드 그룹이므로 작업 동시 실행은 마스터 노드 리소스에 의해 제한되지 않습니다. 드라이버 노드 그룹이 있는 클러스터에서 애플리케이션 드라이버는 드라이버 노드에서 실행됩니다. 노드에 충분한 리소스가 있는 경우 각 드라이버 노드는 여러 애플리케이션 드라이버를 실행할 수 있습니다.

혜택

드라이버 노드 그룹과 함께 Dataproc 클러스터를 사용하면 다음을 수행할 수 있습니다.

  • 더 많은 동시 작업을 실행하기 위해 작업 드라이버 리소스를 수평 확장
  • 작업자 리소스와 별도로 드라이버 리소스 확장
  • Dataproc 2.0 이상 이미지 클러스터에서 더 빠르게 축소. 이러한 클러스터에서 앱 마스터는 드라이버 노드 그룹의 Spark 드라이버 내에서 실행됩니다(기본적으로 spark.yarn.unmanagedAM.enabledtrue로 설정됨).
  • 드라이버 노드 시작 맞춤설정 {ROLE} == 'Driver'초기화 스크립트에 추가하여 스크립트가 노드 선택에서 드라이버 노드 그룹에 대해 작업을 수행하도록 할 수 있습니다.

제한사항

  • 노드 그룹은 Dataproc 워크플로 템플릿에서 지원되지 않습니다.
  • 노드 그룹 클러스터를 중지하거나 다시 시작하거나 자동 확장할 수 없습니다.
  • 맵리듀스 앱 마스터는 워커 노드에서 실행됩니다. 단계적 해제를 사용 설정하면 워커 노드 축소가 느려질 수 있습니다.
  • 작업 동시 실행은 dataproc:agent.process.threads.job.max 클러스터 속성의 영향을 받습니다. 예를 들어 마스터가 3개 있고 이 속성을 기본값(100)으로 설정하면 최대 클러스터 수준 작업 동시 실행은 300입니다.

드라이버 노드 그룹과 Spark 클러스터 모드 비교

기능 Spark 클러스터 모드 드라이버 노드 그룹
워커 노드 축소 장기 드라이버는 단기 컨테이너와 동일한 워커 노드에서 실행되므로 단계적 해제를 사용하는 작업자축소가 느려집니다. 드라이버가 노드 그룹에서 실행되면 워커 노드가 더 빠르게 축소됩니다.
스트리밍된 드라이버 출력 드라이버가 예약된 노드를 찾으려면 YARN 로그에서 검색해야 합니다. 드라이버 출력은 Cloud Storage로 스트리밍되며 작업이 완료된 후 Google Cloud 콘솔 및 gcloud dataproc jobs wait 명령어 결과에서 볼 수 있습니다.

드라이버 노드 그룹 IAM 권한

다음 IAM 권한은 다음 Dataproc 노드 그룹 관련 작업과 연결됩니다.

권한 작업
dataproc.nodeGroups.create Dataproc 노드 그룹을 만듭니다. 프로젝트에서 사용자에게 dataproc.clusters.create가 있으면 이 권한이 부여됩니다.
dataproc.nodeGroups.get Dataproc 노드 그룹의 세부정보를 가져옵니다.
dataproc.nodeGroups.update Dataproc 노드 그룹의 크기를 조절합니다.

드라이버 노드 그룹 작업

gcloud CLI 및 Dataproc API를 사용하여 작업을 만들고, 가져오고, 크기를 조절하고, 삭제하고, Dataproc 드라이버 노드 그룹에 제출할 수 있습니다.

드라이버 노드 그룹 클러스터 만들기

드라이버 노드 그룹은 하나의 Dataproc 클러스터와 연결됩니다. Dataproc 클러스터 만들기의 일부로 노드 그룹을 만듭니다. gcloud CLI 또는 Dataproc REST API를 사용하여 드라이버 노드 그룹으로 Dataproc 클러스터를 만들 수 있습니다.

gcloud

gcloud dataproc clusters create CLUSTER_NAME \
    --region=REGION \
    --driver-pool-size=SIZE \
    --driver-pool-id=NODE_GROUP_ID

필수 플래그:

  • CLUSTER_NAME: 프로젝트 내에서 고유해야 하는 클러스터 이름입니다. 이름은 소문자로 시작해야 하며, 최대 51자(영문 기준)의 소문자, 숫자, 하이픈을 포함할 수 있습니다. 하이픈으로 끝나면 안 됩니다. 삭제된 클러스터의 이름을 재사용할 수 있습니다.
  • REGION: 클러스터가 위치할 리전
  • SIZE: 노드 그룹에 있는 드라이버 노드 수입니다. 필요한 노드 수는 작업 로드 및 드라이버 풀 머신 유형에 따라 달라집니다. 최소 드라이버 그룹 노드의 수는 작업 드라이버에 필요한 총 메모리 또는 vCPU를 각 드라이버 풀의 머신 메모리 또는 vCPU로 나눈 값과 같습니다.
  • NODE_GROUP_ID: 선택사항이며 권장됩니다. ID는 클러스터 내에서 고유해야 합니다. 노드 그룹 크기 조절과 같은 향후 작업에서 드라이버 그룹을 식별하려면 이 ID를 사용합니다. 지정하지 않으면 Dataproc에서 노드 그룹 ID를 생성합니다.

권장 플래그:

  • --enable-component-gateway: 이 플래그를 추가하여 YARN 웹 인터페이스에 대한 액세스 권한을 제공하는 Dataproc 구성요소 게이트웨이를 사용 설정합니다. YARN UI Application(애플리케이션) 및 Scheduler(스케줄러) 페이지에는 클러스터 및 작업 상태, 애플리케이션 큐 메모리, 코어 용량, 기타 측정항목이 표시됩니다.

추가 플래그: 다음 선택적 driver-pool 플래그를 gcloud dataproc clusters create 명령어에 추가하여 노드 그룹을 맞춤설정할 수 있습니다.

플래그 기본값
--driver-pool-id 플래그로 설정되지 않은 경우 서비스에서 생성되는 문자열 식별자입니다. 이 ID는 노드 그룹 크기 조절과 같은 향후 노드 풀 작업을 수행할 때 노드 그룹을 식별하는 데 사용될 수 있습니다.
--driver-pool-machine-type n1-standard-4
--driver-pool-accelerator 기본 기기 없음 가속기를 지정하는 경우 GPU 유형은 필수 항목이며 GPU 수는 선택사항입니다.
--num-driver-pool-local-ssds 기본 기기 없음
--driver-pool-local-ssd-interface 기본 기기 없음
--driver-pool-boot-disk-type pd-standard
--driver-pool-boot-disk-size 1000 GB
--driver-pool-min-cpu-platform AUTOMATIC

REST

Dataproc API cluster.create 요청의 일부로 AuxiliaryNodeGroup을 작성합니다.

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • PROJECT_ID: (필수) Google Cloud 프로젝트 ID입니다.
  • REGION: (필수) Dataproc 클러스터 리전입니다.
  • CLUSTER_NAME: (필수) 프로젝트 내에서 고유해야 하는 클러스터 이름입니다. 이름은 소문자로 시작해야 하며, 최대 51자(영문 기준)의 소문자, 숫자, 하이픈을 포함할 수 있습니다. 하이픈으로 끝나면 안 됩니다. 삭제된 클러스터의 이름을 재사용할 수 있습니다.
  • SIZE: (필수) 노드 그룹에 있는 노드 수입니다.
  • NODE_GROUP_ID: 선택사항이며 권장됩니다. ID는 클러스터 내에서 고유해야 합니다. 노드 그룹 크기 조절과 같은 향후 작업에서 드라이버 그룹을 식별하려면 이 ID를 사용합니다. 지정하지 않으면 Dataproc에서 노드 그룹 ID를 생성합니다.

추가 옵션: NodeGroup을 참조하세요.

HTTP 메서드 및 URL:

POST https://dataproc.googleapis.com/v1/projects/PROJECT_ID/regions/REGION/clusters

JSON 요청 본문:

{
  "clusterName":"CLUSTER_NAME",
  "config": {
    "softwareConfig": {
      "imageVersion":""
    },
    "endpointConfig": {
      "enableHttpPortAccess": true
    },
    "auxiliaryNodeGroups": [{
        "nodeGroup":{
            "roles":["DRIVER"],
            "nodeGroupConfig": {
                "numInstances": SIZE
             }
         },
        "nodeGroupId": "NODE_GROUP_ID"
    }]
  }
}

요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

다음과 비슷한 JSON 응답이 표시됩니다.

{
  "projectId": "PROJECT_ID",
  "clusterName": "CLUSTER_NAME",
  "config": {
    ...
    "auxiliaryNodeGroups": [
      {
        "nodeGroup": {
"name": "projects/PROJECT_ID/regions/REGION/clusters/CLUSTER_NAME/nodeGroups/NODE_GROUP_ID",
          "roles": [
            "DRIVER"
          ],
          "nodeGroupConfig": {
            "numInstances": SIZE,
            "instanceNames": [
              "CLUSTER_NAME-np-q1gp",
              "CLUSTER_NAME-np-xfc0"
            ],
            "imageUri": "https://www.googleapis.com/compute/v1/projects/cloud-dataproc-ci/global/images/dataproc-2-0-deb10-...-rc01",
            "machineTypeUri": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/REGION-a/machineTypes/n1-standard-4",
            "diskConfig": {
              "bootDiskSizeGb": 1000,
              "bootDiskType": "pd-standard"
            },
            "managedGroupConfig": {
              "instanceTemplateName": "dataproc-2a8224d2-...",
              "instanceGroupManagerName": "dataproc-2a8224d2-..."
            },
            "minCpuPlatform": "AUTOMATIC",
            "preemptibility": "NON_PREEMPTIBLE"
          }
        },
        "nodeGroupId": "NODE_GROUP_ID"
      }
    ]
  },
}

드라이버 노드 그룹 클러스터 메타데이터 가져오기

gcloud dataproc node-groups describe 명령어 또는 Dataproc API를 사용하여 드라이버 노드 그룹 메타데이터를 가져올 수 있습니다.

gcloud

gcloud dataproc node-groups describe NODE_GROUP_ID \
    --cluster=CLUSTER_NAME \
    --region=REGION

필수 플래그:

  • NODE_GROUP_ID: gcloud dataproc clusters describe CLUSTER_NAME을 실행하여 노드 그룹 ID를 나열할 수 있습니다.
  • CLUSTER_NAME: 클러스터 이름입니다.
  • REGION: 클러스터 리전입니다.

REST

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • PROJECT_ID: (필수) Google Cloud 프로젝트 ID입니다.
  • REGION: (필수) 클러스터 리전입니다.
  • CLUSTER_NAME: (필수) 클러스터 이름입니다.
  • NODE_GROUP_ID: (필수) gcloud dataproc clusters describe CLUSTER_NAME을 실행하여 노드 그룹 ID를 나열할 수 있습니다.

HTTP 메서드 및 URL:

GET https://dataproc.googleapis.com/v1/projects/PROJECT_ID/regions/REGION/clusters/CLUSTER_NAMEnodeGroups/Node_GROUP_ID

요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

다음과 비슷한 JSON 응답이 표시됩니다.

{
  "name": "projects/PROJECT_ID/regions/REGION/clusters/CLUSTER_NAME/nodeGroups/NODE_GROUP_ID",
  "roles": [
    "DRIVER"
  ],
  "nodeGroupConfig": {
    "numInstances": 5,
    "imageUri": "https://www.googleapis.com/compute/v1/projects/cloud-dataproc-ci/global/images/dataproc-2-0-deb10-...-rc01",
    "machineTypeUri": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/REGION-a/machineTypes/n1-standard-4",
    "diskConfig": {
      "bootDiskSizeGb": 1000,
      "bootDiskType": "pd-standard"
    },
    "managedGroupConfig": {
      "instanceTemplateName": "dataproc-driver-pool-mcia3j656h2fy",
      "instanceGroupManagerName": "dataproc-driver-pool-mcia3j656h2fy"
    },
    "minCpuPlatform": "AUTOMATIC",
    "preemptibility": "NON_PREEMPTIBLE"
  }
}

드라이버 노드 그룹 크기 조절

gcloud dataproc node-groups resize 명령어 또는 Dataproc API를 사용하여 클러스터 드라이버 노드 그룹에서 드라이버 노드를 추가하거나 삭제할 수 있습니다.

gcloud

gcloud dataproc node-groups resize NODE_GROUP_ID \
    --cluster=CLUSTER_NAME \
    --region=REGION \
    --size=SIZE

필수 플래그:

  • NODE_GROUP_ID: gcloud dataproc clusters describe CLUSTER_NAME을 실행하여 노드 그룹 ID를 나열할 수 있습니다.
  • CLUSTER_NAME: 클러스터 이름입니다.
  • REGION: 클러스터 리전입니다.
  • SIZE: 노드 그룹에 있는 새 드라이버 노드 수를 지정합니다.

선택적 플래그:

  • --graceful-decommission-timeout=TIMEOUT_DURATION: 노드 그룹을 축소할 때 이 플래그를 추가하여 단계적 해제 TIMEOUT_DURATION을 지정하여 작업 드라이버가 즉시 종료되지 않도록 할 수 있습니다. 권장사항: 제한 시간을 노드 그룹에서 실행되는 가장 긴 작업 기간과 동일하게 설정하세요(실패한 드라이버의 복구는 지원되지 않음).

예시: gcloud CLI NodeGroup 수직 확장 명령어:

gcloud dataproc node-groups resize NODE_GROUP_ID \
    --cluster=CLUSTER_NAME \
    --region=REGION \
    --size=4

예시: gcloud CLI NodeGroup 축소 명령어:

gcloud dataproc node-groups resize NODE_GROUP_ID \
    --cluster=CLUSTER_NAME \
    --region=REGION \
    --size=1 \
    --graceful-decommission-timeout="100s"

REST

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • PROJECT_ID: (필수) Google Cloud 프로젝트 ID입니다.
  • REGION: (필수) 클러스터 리전입니다.
  • NODE_GROUP_ID: (필수) gcloud dataproc clusters describe CLUSTER_NAME을 실행하여 노드 그룹 ID를 나열할 수 있습니다.
  • SIZE: (필수) 노드 그룹에 있는 새 노드 수입니다.
  • TIMEOUT_DURATION: 선택사항. 노드 그룹을 축소할 때 작업 드라이버가 즉시 종료되지 않도록 요청 본문에 gracefulDecommissionTimeout을 추가할 수 있습니다. 권장사항: 제한 시간을 노드 그룹에서 실행되는 가장 긴 작업 기간과 동일하게 설정하세요(실패한 드라이버의 복구는 지원되지 않음).

    예:

    { "size": SIZE,
      "gracefulDecommissionTimeout": "TIMEOUT_DURATION"
    }
       

HTTP 메서드 및 URL:

POST https://dataproc.googleapis.com/v1/projects/PROJECT_ID/regions/REGION/clusters/CLUSTER_NAME/nodeGroups/Node_GROUP_ID:resize

JSON 요청 본문:

{
  "size": SIZE,
}

요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

다음과 비슷한 JSON 응답이 표시됩니다.

{
  "name": "projects/PROJECT_ID/regions/REGION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.dataproc.v1.NodeGroupOperationMetadata",
    "nodeGroupId": "NODE_GROUP_ID",
    "clusterUuid": "CLUSTER_UUID",
    "status": {
      "state": "PENDING",
      "innerState": "PENDING",
      "stateStartTime": "2022-12-01T23:34:53.064308Z"
    },
    "operationType": "RESIZE",
    "description": "Scale "up or "down" a GCE node pool to SIZE nodes."
  }
}

드라이버 노드 그룹 클러스터 삭제

Dataproc 클러스터를 삭제하면 클러스터와 연결된 노드 그룹이 삭제됩니다.

작업 제출

gcloud dataproc jobs submit 명령어 또는 Dataproc API를 사용하여 드라이버 노드 그룹이 있는 클러스터에 작업을 제출할 수 있습니다.

gcloud

gcloud dataproc jobs submit JOB_COMMAND \
    --cluster=CLUSTER_NAME \
    --region=REGION \
    --driver-required-memory-mb=DRIVER_MEMORY \
    --driver-required-vcores=DRIVER_VCORES \
    DATAPROC_FLAGS \
    -- JOB_ARGS

필수 플래그:

  • JOB_COMMAND: 작업 명령어를 지정합니다.
  • CLUSTER_NAME: 클러스터 이름입니다.
  • DRIVER_MEMORY: 작업을 실행하는 데 필요한 작업 드라이버 메모리 양(MB)입니다(Yarn 메모리 제어 참조).
  • DRIVER_VCORES: 작업을 실행하는 데 필요한 vCPU 수입니다.

추가 플래그:

  • DATAPROC_FLAGS: 작업 유형과 관련된 추가적인 gcloud dataproc jobs submit 플래그를 추가합니다.
  • JOB_ARGS: (작업에 전달할 -- 뒤에) 인수를 추가합니다.

예시: Dataproc 드라이버 노드 그룹 클러스터의 SSH 터미널 세션에서 다음 예시를 실행할 수 있습니다.

  • pi 값을 추정하는 Spark 작업

    gcloud dataproc jobs submit spark \
        --cluster=CLUSTER_NAME \
        --region=REGION \
        --driver-required-memory-mb=2048 \
        --driver-required-vcores=2 \
        --class=org.apache.spark.examples.SparkPi \
        --jars=file:///usr/lib/spark/examples/jars/spark-examples.jar \
        -- 1000
    
  • Spark WordCount 작업:

    gcloud dataproc jobs submit spark \
        --cluster=CLUSTER_NAME \
        --region=REGION \
        --driver-required-memory-mb=2048 \
        --driver-required-vcores=2 \
        --class=org.apache.spark.examples.JavaWordCount \
        --jars=file:///usr/lib/spark/examples/jars/spark-examples.jar \
        -- 'gs://apache-beam-samples/shakespeare/macbeth.txt'
    
  • pi 값을 추정하는 PySpark 작업:

    gcloud dataproc jobs submit pyspark \
        file:///usr/lib/spark/examples/src/main/python/pi.py \
        --cluster=CLUSTER_NAME \
        --region=REGION \
        --driver-required-memory-mb=2048 \
        --driver-required-vcores=2 \
        -- 1000
    
  • Hadoop TeraGen 맵리듀스 작업:

    gcloud dataproc jobs submit hadoop \
        --cluster=CLUSTER_NAME \
        --region=REGION \
        --driver-required-memory-mb=2048 \
        --driver-required-vcores=2 \
        --jar file:///usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar \
        -- teragen 1000 \
        hdfs:///gen1/test
    

REST

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • PROJECT_ID: (필수) Google Cloud 프로젝트 ID입니다.
  • REGION: (필수) Dataproc 클러스터 리전입니다.
  • CLUSTER_NAME: (필수) 프로젝트 내에서 고유해야 하는 클러스터 이름입니다. 이름은 소문자로 시작해야 하며, 최대 51자(영문 기준)의 소문자, 숫자, 하이픈을 포함할 수 있습니다. 하이픈으로 끝나면 안 됩니다. 삭제된 클러스터의 이름을 재사용할 수 있습니다.
  • DRIVER_MEMORY: (필수) 작업을 실행하는 데 필요한 작업 드라이버 메모리 양(MB)입니다(Yarn 메모리 제어 참조).
  • DRIVER_VCORES: (필수) 작업을 실행하는 데 필요한 vCPU 수입니다.
추가 필드: 작업 유형 및 작업 인수와 관련된 추가 필드를 추가합니다. 샘플 요청에는 pi 값을 추정하는 Spark 작업을 제출하는 데 필요한 필드가 포함됩니다.

HTTP 메서드 및 URL:

POST https://dataproc.googleapis.com/v1/projects/PROJECT_ID/regions/REGION/jobs:submit

JSON 요청 본문:

{
  "job": {
    "placement": {
    "clusterName": "CLUSTER_NAME",
    },
    "driverSchedulingConfig": {
      "memoryMb]": DRIVER_MEMORY,
      "vcores": DRIVER_VCORES
    },
    "sparkJob": {
      "jarFileUris": "file:///usr/lib/spark/examples/jars/spark-examples.jar",
      "args": [
        "10000"
      ],
      "mainClass": "org.apache.spark.examples.SparkPi"
    }
  }
}

요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

다음과 비슷한 JSON 응답이 표시됩니다.

{
  "reference": {
    "projectId": "PROJECT_ID",
    "jobId": "job-id"
  },
  "placement": {
    "clusterName": "CLUSTER_NAME",
    "clusterUuid": "cluster-Uuid"
  },
  "sparkJob": {
    "mainClass": "org.apache.spark.examples.SparkPi",
    "args": [
      "1000"
    ],
    "jarFileUris": [
      "file:///usr/lib/spark/examples/jars/spark-examples.jar"
    ]
  },
  "status": {
    "state": "PENDING",
    "stateStartTime": "start-time"
  },
  "jobUuid": "job-Uuid"
}

작업 로그 보기

작업 상태를 확인하고 작업 문제를 디버깅하려면 gcloud CLI 또는 Google Cloud 콘솔을 사용하여 드라이버 로그를 확인하면 됩니다.

gcloud

작업 드라이버 로그는 작업 실행 중에 gcloud CLI 출력이나 Google Cloud 콘솔로 스트리밍됩니다. 드라이버 로그는 Cloud Storage의 Dataproc 클러스터 스테이징 버킷에 유지됩니다.

다음 gcloud CLI 명령어를 실행하여 Cloud Storage의 드라이버 로그 위치를 나열합니다.

gcloud dataproc jobs describe JOB_ID \
    --region=REGION
   

드라이버 로그의 Cloud Storage 위치는 명령어 결과에 다음 형식으로 driverOutputResourceUri로 나열됩니다.

driverOutputResourceUri: gs://CLUSTER_STAGING_BUCKET/google-cloud-dataproc-metainfo/CLUSTER_UUID/jobs/JOB_ID

콘솔

노드 그룹 클러스터 로그를 보려면 다음 안내를 따르세요.

  1. 로깅 사용 설정

  2. 다음 로그 탐색기 쿼리 형식을 사용하여 로그를 찾을 수 있습니다.

    resource.type="cloud_dataproc_cluster"
    resource.labels.project_id="PROJECT_ID"
    resource.labels.cluster_name="CLUSTER_NAME"
    log_name="projects/PROJECT_ID/logs/LOG_TYPE>"
    
    다음을 바꿉니다.

    • PROJECT_ID: Google Cloud 프로젝트 ID입니다.
    • CLUSTER_NAME: 클러스터 이름입니다.
    • LOG_TYPE:
      • Yarn 사용자 로그: yarn-userlogs
      • Yarn 리소스 관리자 로그: hadoop-yarn-resourcemanager
      • Yarn 노드 관리자 로그: hadoop-yarn-nodemanager

측정항목 모니터링

Dataproc 노드 그룹 작업 드라이버는 dataproc-driverpool 파티션 아래의 dataproc-driverpool-driver-queue 하위 큐에서 실행됩니다.

드라이버 노드 그룹 측정항목

다음 표에는 드라이버 노드 그룹에 대해 기본적으로 수집되는 연결된 노드 그룹 드라이버 측정항목이 나와 있습니다.

드라이버 노드 그룹 측정항목 설명
yarn:ResourceManager:DriverPoolsQueueMetrics:AvailableMB dataproc-driverpool 파티션 아래의 dataproc-driverpool-driver-queue에서 사용 가능한 메모리 양(메비바이트)입니다.
yarn:ResourceManager:DriverPoolsQueueMetrics:PendingContainers dataproc-driverpool 파티션 아래의 dataproc-driverpool-driver-queue에서 대기 중인 큐에 추가된 컨테이너 수입니다.

하위 큐 측정항목

다음 표에는 하위 큐 측정항목이 나와 있습니다. 이 측정항목은 기본적으로 드라이버 노드 그룹에 대해 수집되며 모든 Dataproc 클러스터에서 수집하도록 사용 설정될 수 있습니다.

하위 큐 측정항목 설명
yarn:ResourceManager:ChildQueueMetrics:AvailableMB 기본 파티션 아래의 이 큐에서 사용 가능한 메모리 양(메비바이트)입니다.
yarn:ResourceManager:ChildQueueMetrics:PendingContainers 기본 파티션 아래의 이 큐에서 (큐에 추가된) 대기 중인 컨테이너 수입니다.
yarn:ResourceManager:ChildQueueMetrics:running_0 모든 파티션 아래의 이 큐에서 런타임이 0~60분인 작업 수입니다.
yarn:ResourceManager:ChildQueueMetrics:running_60 모든 파티션 아래의 이 큐에서 런타임이 60~300분인 작업 수입니다.
yarn:ResourceManager:ChildQueueMetrics:running_300 모든 파티션 아래의 이 큐에서 런타임이 300~1440분인 작업 수입니다.
yarn:ResourceManager:ChildQueueMetrics:running_1440 모든 파티션 아래의 이 큐에서 런타임이 1440분을 초과하는 작업의 수입니다.
yarn:ResourceManager:ChildQueueMetrics:AppsSubmitted 모든 파티션 아래의 이 큐에 제출된 애플리케이션 수입니다.

Google Cloud 콘솔에서 YARN ChildQueueMetricsDriverPoolsQueueMetrics를 보려면 다음 안내를 따르세요.

노드 그룹 작업 드라이버 디버깅

이 섹션에서는 드라이버 노드 그룹 조건 및 오류와 함께 조건 또는 오류를 수정하기 위한 추천을 제공합니다.

조건

  • 조건: yarn:ResourceManager:DriverPoolsQueueMetrics:AvailableMB0에 근접합니다. 이는 클러스터 드라이버 풀 큐에 메모리가 부족함을 나타냅니다.

    권장사항: 드라이버 풀의 크기를 확장하세요.

  • 조건: yarn:ResourceManager:DriverPoolsQueueMetrics:PendingContainers가 0보다 큽니다. 이는 클러스터 드라이버 풀 큐에 메모리가 부족하고 YARN이 큐에 작업을 추가하고 있음을 나타낼 수 있습니다.

    권장사항: 드라이버 풀의 크기를 확장하세요.

오류

  • 오류: Cluster <var>CLUSTER_NAME</var> requires driver scheduling config to run SPARK job because it contains a node pool with role DRIVER. Positive values are required for all driver scheduling config values.

    권장사항: driver-required-memory-mbdriver-required-vcores를 양수로 설정합니다.

  • 오류: Container exited with a non-zero exit code 137

    권장사항: driver-required-memory-mb를 작업 메모리 사용량으로 늘리세요.