Grup node driver Dataproc

Ringkasan

Resource NodeGroup Dataproc adalah grup node cluster Dataproc yang menjalankan peran yang ditetapkan. Halaman ini menjelaskan grup node driver, yang merupakan grup VM Compute Engine yang diberi peran Driver untuk tujuan menjalankan driver tugas di cluster Dataproc.

Kapan harus menggunakan grup node driver

  • Gunakan grup node driver hanya jika Anda perlu menjalankan banyak tugas serentak di cluster bersama.
  • Tingkatkan resource node master sebelum menggunakan grup node driver untuk menghindari batasan grup node driver.

Cara node driver membantu Anda menjalankan tugas konkuren

Dataproc memulai proses driver tugas di node master cluster Dataproc untuk setiap tugas. Proses driver, pada gilirannya, menjalankan driver aplikasi, seperti spark-submit, sebagai proses turunannya. Namun, jumlah tugas serentak yang berjalan di master dibatasi oleh resource yang tersedia di node master, dan karena node master Dataproc tidak dapat diskalakan, tugas dapat gagal atau di-throttle saat resource node master tidak memadai untuk menjalankan tugas.

Grup node driver adalah grup node khusus yang dikelola oleh YARN, sehingga konkurensi tugas tidak dibatasi oleh resource node master. Di cluster dengan grup node driver, driver aplikasi berjalan di node driver. Setiap node driver dapat menjalankan beberapa driver aplikasi jika node memiliki resource yang memadai.

Manfaat

Dengan menggunakan cluster Dataproc dengan grup node driver, Anda dapat:

  • Menskalakan resource driver tugas secara horizontal untuk menjalankan lebih banyak tugas serentak
  • Menskalakan resource driver secara terpisah dari resource pekerja
  • Dapatkan penskalaan turun yang lebih cepat di cluster image Dataproc 2.0+ dan yang lebih baru. Di cluster ini, master aplikasi berjalan dalam driver Spark di grup node driver (spark.yarn.unmanagedAM.enabled ditetapkan ke true secara default).
  • Menyesuaikan pengaktifan node driver. Anda dapat menambahkan {ROLE} == 'Driver' dalam skrip inisialisasi agar skrip melakukan tindakan untuk grup node driver dalam pemilihan node.

Batasan

  • Grup node tidak didukung di template alur kerja Dataproc.
  • Cluster grup node tidak dapat dihentikan, dimulai ulang, atau diskalakan secara otomatis.
  • Master aplikasi MapReduce berjalan di node pekerja. Penurunan skala node pekerja dapat melambat jika Anda mengaktifkan penghentian operasi yang lancar.
  • Serentak tugas dipengaruhi oleh properti cluster dataproc:agent.process.threads.job.max. Misalnya, dengan tiga master dan properti ini ditetapkan ke nilai default 100, konkurensi tugas tingkat cluster maksimum adalah 300.

Grup node driver dibandingkan dengan mode cluster Spark

Fitur Mode cluster Spark Grup node driver
Penurunan skala node pekerja Driver berumur panjang berjalan di node pekerja yang sama dengan penampung berumur pendek, sehingga membuat penurunan skala pekerja menggunakan penghentian layanan yang halus menjadi lambat. Node pekerja akan diskalakan lebih cepat saat driver berjalan di grup node.
Output driver yang di-streaming Memerlukan penelusuran di log YARN untuk menemukan node tempat pengemudi dijadwalkan. Output driver di-streaming ke Cloud Storage, dan dapat dilihat di konsol Google Cloud dan di output perintah gcloud dataproc jobs wait setelah tugas selesai.

Izin IAM grup node driver

Izin IAM berikut dikaitkan dengan tindakan terkait grup node Dataproc berikut.

Izin Tindakan
dataproc.nodeGroups.create Buat grup node Dataproc. Jika pengguna memiliki dataproc.clusters.create dalam project, izin ini akan diberikan.
dataproc.nodeGroups.get Mendapatkan detail grup node Dataproc.
dataproc.nodeGroups.update Mengubah ukuran grup node Dataproc.

Operasi grup node driver

Anda dapat menggunakan gcloud CLI dan Dataproc API untuk membuat, mendapatkan, mengubah ukuran, menghapus, dan mengirimkan tugas ke grup node driver Dataproc.

Membuat cluster grup node driver

Grup node driver dikaitkan dengan satu cluster Dataproc. Anda membuat grup node sebagai bagian dari membuat cluster Dataproc. Anda dapat menggunakan gcloud CLI atau Dataproc REST API untuk membuat cluster Dataproc dengan grup node driver.

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

Flag yang diperlukan:

  • CLUSTER_NAME: Nama cluster, yang harus unik dalam project. Nama harus diawali dengan huruf kecil, dan dapat berisi hingga 51 huruf kecil, angka, dan tanda hubung. Nama tidak boleh diakhiri dengan tanda hubung. Nama cluster yang dihapus dapat digunakan kembali.
  • REGION: Region tempat cluster akan berada.
  • SIZE: Jumlah node driver dalam grup node. Jumlah node yang diperlukan bergantung pada beban tugas dan jenis mesin kumpulan driver. Jumlah node grup driver minimum sama dengan total memori atau vCPU yang diperlukan oleh driver tugas dibagi dengan memori mesin atau vCPU setiap kumpulan driver.
  • NODE_GROUP_ID: Opsional dan direkomendasikan. ID harus unik dalam cluster. Gunakan ID ini untuk mengidentifikasi grup driver dalam operasi mendatang, seperti mengubah ukuran grup node. Jika tidak ditentukan, Dataproc akan membuat ID grup node.

Flag yang direkomendasikan:

  • --enable-component-gateway: Tambahkan flag ini untuk mengaktifkan Gateway Komponen Dataproc, yang memberikan akses ke antarmuka web YARN. Halaman Aplikasi dan Penjadwal UI YARN menampilkan status cluster dan tugas, memori antrean aplikasi, kapasitas core, dan metrik lainnya.

Flag tambahan: Flag driver-pool opsional berikut dapat ditambahkan ke perintah gcloud dataproc clusters create untuk menyesuaikan grup node.

Flag Nilai default
--driver-pool-id ID string, yang dibuat oleh layanan jika tidak ditetapkan oleh flag. ID ini dapat digunakan untuk mengidentifikasi grup node saat melakukan operasi node pool di masa mendatang, seperti mengubah ukuran grup node.
--driver-pool-machine-type n1-standard-4
--driver-pool-accelerator Tidak ada default. Saat menentukan akselerator, jenis GPU wajib diisi; jumlah GPU bersifat opsional.
--num-driver-pool-local-ssds Tidak ada default
--driver-pool-local-ssd-interface Tidak ada default
--driver-pool-boot-disk-type pd-standard
--driver-pool-boot-disk-size 1000 GB
--driver-pool-min-cpu-platform AUTOMATIC

Selesaikan AuxiliaryNodeGroup sebagai bagian dari permintaan cluster.create Dataproc API.

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_ID: Wajib diisi. ID project Google Cloud.
  • REGION: Wajib diisi. Region cluster Dataproc.
  • CLUSTER_NAME: Wajib diisi. Nama cluster, yang harus unik dalam project. Nama harus diawali dengan huruf kecil, dan dapat berisi maksimal 51 huruf kecil, angka, dan tanda hubung. Nama tidak boleh diakhiri dengan tanda hubung. Nama cluster yang dihapus dapat digunakan kembali.
  • SIZE: Wajib diisi. Jumlah node dalam grup node.
  • NODE_GROUP_ID: Opsional dan direkomendasikan. ID harus unik dalam cluster. Gunakan ID ini untuk mengidentifikasi grup driver dalam operasi mendatang, seperti mengubah ukuran grup node. Jika tidak ditentukan, Dataproc akan membuat ID grup node.

Opsi tambahan: Lihat NodeGroup.

Metode HTTP dan URL:

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

Meminta isi JSON:

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

Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://dataproc.googleapis.com/v1/projects/PROJECT_ID/regions/REGION/clusters"

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://dataproc.googleapis.com/v1/projects/PROJECT_ID/regions/REGION/clusters" | Select-Object -Expand Content

Anda akan melihat respons JSON seperti berikut:

{
  "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"
      }
    ]
  },
}

Mendapatkan metadata cluster grup node driver

Anda dapat menggunakan perintah gcloud dataproc node-groups describe atau Dataproc API untuk mendapatkan metadata grup node driver.

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

Flag yang diperlukan:

  • NODE_GROUP_ID: Anda dapat menjalankan gcloud dataproc clusters describe CLUSTER_NAME untuk mencantumkan ID grup node.
  • CLUSTER_NAME: Nama cluster.
  • REGION: Region cluster.

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_ID: Wajib diisi. ID project Google Cloud.
  • REGION: Wajib diisi. Region cluster.
  • CLUSTER_NAME: Wajib diisi. Nama cluster.
  • NODE_GROUP_ID: Wajib diisi. Anda dapat menjalankan gcloud dataproc clusters describe CLUSTER_NAME untuk mencantumkan ID grup node.

Metode HTTP dan URL:

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

Untuk mengirim permintaan, perluas salah satu opsi berikut:

Jalankan perintah berikut:

curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://dataproc.googleapis.com/v1/projects/PROJECT_ID/regions/REGION/clusters/CLUSTER_NAMEnodeGroups/Node_GROUP_ID"

Jalankan perintah berikut:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://dataproc.googleapis.com/v1/projects/PROJECT_ID/regions/REGION/clusters/CLUSTER_NAMEnodeGroups/Node_GROUP_ID" | Select-Object -Expand Content

Anda akan melihat respons JSON seperti berikut:

{
  "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"
  }
}

Mengubah ukuran grup node driver

Anda dapat menggunakan perintah gcloud dataproc node-groups resize atau Dataproc API untuk menambahkan atau menghapus node driver dari grup node driver cluster.

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

Flag yang diperlukan:

  • NODE_GROUP_ID: Anda dapat menjalankan gcloud dataproc clusters describe CLUSTER_NAME untuk mencantumkan ID grup node.
  • CLUSTER_NAME: Nama cluster.
  • REGION: Region cluster.
  • SIZE: Tentukan jumlah node driver baru dalam grup node.

Flag opsional:

  • --graceful-decommission-timeout=TIMEOUT_DURATION: Saat menskalakan grup node, Anda dapat menambahkan flag ini untuk menentukan penghentian layanan yang lancar TIMEOUT_DURATION guna menghindari penghentian langsung driver tugas. Rekomendasi: Tetapkan durasi waktu tunggu yang setidaknya sama dengan durasi tugas terpanjang yang berjalan di grup node (pemulihan driver yang gagal tidak didukung).

Contoh: perintah peningkatan skala NodeGroup gcloud CLI:

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

Contoh: Perintah penskalaan turun NodeGroup gcloud CLI:

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

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_ID: Wajib diisi. ID project Google Cloud.
  • REGION: Wajib diisi. Region cluster.
  • NODE_GROUP_ID: Wajib diisi. Anda dapat menjalankan gcloud dataproc clusters describe CLUSTER_NAME untuk mencantumkan ID grup node.
  • SIZE: Wajib diisi. Jumlah node baru dalam grup node.
  • TIMEOUT_DURATION: Opsional. Saat menskalakan grup node, Anda dapat menambahkan gracefulDecommissionTimeout ke isi permintaan untuk menghindari penghentian langsung driver tugas. Rekomendasi: Tetapkan durasi waktu tunggu yang setidaknya sama dengan durasi tugas terpanjang yang berjalan di grup node (pemulihan driver yang gagal tidak didukung).

    Contoh:

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

Metode HTTP dan URL:

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

Meminta isi JSON:

{
  "size": SIZE,
}

Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://dataproc.googleapis.com/v1/projects/PROJECT_ID/regions/REGION/clusters/CLUSTER_NAME/nodeGroups/Node_GROUP_ID:resize"

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://dataproc.googleapis.com/v1/projects/PROJECT_ID/regions/REGION/clusters/CLUSTER_NAME/nodeGroups/Node_GROUP_ID:resize" | Select-Object -Expand Content

Anda akan melihat respons JSON seperti berikut:

{
  "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."
  }
}

Menghapus cluster grup node driver

Saat Anda menghapus cluster Dataproc, grup node yang terkait dengan cluster akan dihapus.

Mengirim tugas

Anda dapat menggunakan perintah gcloud dataproc jobs submit atau Dataproc API untuk mengirimkan tugas ke cluster dengan grup node driver.

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

Flag yang diperlukan:

  • JOB_COMMAND: Menentukan perintah tugas.
  • CLUSTER_NAME: Nama cluster.
  • DRIVER_MEMORY: Jumlah memori driver tugas dalam MB yang diperlukan untuk menjalankan tugas (lihat Kontrol Memori Yarn).
  • DRIVER_VCORES: Jumlah vCPU yang diperlukan untuk menjalankan tugas.

Flag tambahan:

  • DATAPROC_FLAGS: Tambahkan flag gcloud dataproc jobs submit tambahan yang terkait dengan jenis tugas.
  • JOB_ARGS: Tambahkan argumen apa pun (setelah -- untuk diteruskan ke tugas.

Contoh: Anda dapat menjalankan contoh berikut dari sesi terminal SSH di cluster grup node driver Dataproc.

  • Tugas Spark untuk memperkirakan nilai pi:

    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
    
  • Tugas jumlah kata 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.JavaWordCount \
        --jars=file:///usr/lib/spark/examples/jars/spark-examples.jar \
        -- 'gs://apache-beam-samples/shakespeare/macbeth.txt'
    
  • Tugas PySpark untuk memperkirakan nilai pi:

    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
    
  • Tugas MapReduce TeraGen Hadoop:

    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
    

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_ID: Wajib diisi. ID project Google Cloud.
  • REGION: Wajib diisi. Region cluster Dataproc
  • CLUSTER_NAME: Wajib diisi. Nama cluster, yang harus unik dalam project. Nama harus diawali dengan huruf kecil, dan dapat berisi hingga 51 huruf kecil, angka, dan tanda hubung. Nama tidak boleh diakhiri dengan tanda hubung. Nama cluster yang dihapus dapat digunakan kembali.
  • DRIVER_MEMORY: Wajib diisi. Jumlah memori driver tugas dalam MB yang diperlukan untuk menjalankan tugas (lihat Kontrol Memori Yarn).
  • DRIVER_VCORES: Wajib diisi. Jumlah vCPU yang diperlukan untuk menjalankan tugas.
Kolom tambahan: Tambahkan kolom tambahan yang terkait dengan jenis tugas dan argumen tugas (permintaan contoh menyertakan kolom yang diperlukan untuk mengirimkan tugas Spark yang memperkirakan nilai pi).

Metode HTTP dan URL:

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

Meminta isi 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"
    }
  }
}


Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://dataproc.googleapis.com/v1/projects/PROJECT_ID/regions/REGION/jobs:submit"

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://dataproc.googleapis.com/v1/projects/PROJECT_ID/regions/REGION/jobs:submit" | Select-Object -Expand Content

Anda akan melihat respons JSON seperti berikut:

{
  "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"
}

Lihat log tugas

Untuk melihat status tugas dan membantu men-debug masalah tugas, Anda dapat melihat log driver menggunakan gcloud CLI atau konsol Google Cloud .

Log driver tugas di-streaming ke output gcloud CLI atau konsolGoogle Cloud selama eksekusi tugas. Log driver tetap ada di bucket staging cluster Dataproc di Cloud Storage.

Jalankan perintah gcloud CLI berikut untuk mencantumkan lokasi log driver di Cloud Storage:

gcloud dataproc jobs describe JOB_ID \
    --region=REGION
   

Lokasi Cloud Storage log driver tercantum sebagai driverOutputResourceUri dalam output perintah dalam format berikut:

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

Untuk melihat log cluster grup node:

  1. Aktifkan Logging.

  2. Anda dapat menggunakan format kueri Logs Explorer berikut untuk menemukan log:

    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>"
    
    Ganti kode berikut;

    • PROJECT_ID:Project ID Google Cloud .
    • CLUSTER_NAME: Nama cluster.
    • LOG_TYPE:
      • Log pengguna Yarn: yarn-userlogs
      • Log pengelola resource Yarn: hadoop-yarn-resourcemanager
      • Log pengelola node Yarn: hadoop-yarn-nodemanager

Memantau metrik

Driver tugas grup node Dataproc berjalan di antrean turunan dataproc-driverpool-driver-queue dalam partisi dataproc-driverpool.

Metrik grup node driver

Tabel berikut mencantumkan metrik driver grup node terkait, yang dikumpulkan secara default untuk grup node driver.

Metrik grup node driver Deskripsi
yarn:ResourceManager:DriverPoolsQueueMetrics:AvailableMB Jumlah memori yang tersedia dalam Mebibyte di dataproc-driverpool-driver-queue pada partisi dataproc-driverpool.
yarn:ResourceManager:DriverPoolsQueueMetrics:PendingContainers Jumlah penampung yang tertunda (antrean) di dataproc-driverpool-driver-queue dalam partisi dataproc-driverpool.

Metrik antrean turunan

Tabel berikut mencantumkan metrik antrean turunan. Metrik dikumpulkan secara default untuk grup node driver, dan dapat diaktifkan untuk pengumpulan di cluster Dataproc mana pun.

Metrik antrean turunan Deskripsi
yarn:ResourceManager:ChildQueueMetrics:AvailableMB Jumlah memori yang tersedia dalam Mebibyte dalam antrean ini di bagian partisi default.
yarn:ResourceManager:ChildQueueMetrics:PendingContainers Jumlah penampung yang tertunda (antrean) dalam antrean ini berdasarkan partisi default.
yarn:ResourceManager:ChildQueueMetrics:running_0 Jumlah tugas dengan runtime antara 0 dan 60 menit dalam antrean ini di semua partisi.
yarn:ResourceManager:ChildQueueMetrics:running_60 Jumlah tugas dengan runtime antara 60 dan 300 menit dalam antrean ini di semua partisi.
yarn:ResourceManager:ChildQueueMetrics:running_300 Jumlah tugas dengan runtime antara 300 dan 1440 menit dalam antrean ini di semua partisi.
yarn:ResourceManager:ChildQueueMetrics:running_1440 Jumlah tugas dengan runtime lebih dari 1440 menit dalam antrean ini di semua partisi.
yarn:ResourceManager:ChildQueueMetrics:AppsSubmitted Jumlah aplikasi yang dikirim ke antrean ini di semua partisi.

Untuk melihat YARN ChildQueueMetrics dan DriverPoolsQueueMetrics di konsol Google Cloud :

Proses debug driver tugas grup node

Bagian ini memberikan kondisi dan error grup node driver dengan rekomendasi untuk memperbaiki kondisi atau error.

Kondisi

  • Kondisi: yarn:ResourceManager:DriverPoolsQueueMetrics:AvailableMB hampir mencapai 0. Hal ini menunjukkan bahwa antrean kumpulan driver cluster kekurangan memori.

    Rekomendasi:: Tingkatkan skala ukuran kumpulan pengemudi.

  • Kondisi: yarn:ResourceManager:DriverPoolsQueueMetrics:PendingContainers lebih besar dari 0. Hal ini dapat menunjukkan bahwa antrean kumpulan driver cluster kehabisan memori dan YARN mengantrekan tugas.

    Rekomendasi:: Tingkatkan skala ukuran kumpulan pengemudi.

Error

  • Error: 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.

    Rekomendasi: Tetapkan driver-required-memory-mb dan driver-required-vcores dengan angka positif.

  • Error: Container exited with a non-zero exit code 137.

    Rekomendasi: Tingkatkan driver-required-memory-mb ke penggunaan memori tugas.