Dataproc Persistent History Server

Ringkasan

Dataproc Persistent History Server (PHS) menyediakan antarmuka web untuk melihat histori tugas untuk tugas yang berjalan di cluster Dataproc yang aktif atau dihapus. Library ini tersedia di gambar versi 1.5 Dataproc dan yang lebih baru, serta berjalan di cluster Dataproc satu node. Layanan ini menyediakan antarmuka web ke file dan data berikut:

  • File histori tugas MapReduce dan Spark

  • File histori tugas Flink (lihat Komponen Flink opsional Dataproc untuk membuat cluster Dataproc guna menjalankan tugas Flink)

  • File data Linimasa Aplikasi yang dibuat oleh YARN Timeline Service v2 dan disimpan di instance Bigtable.

  • Log agregasi YARN

Server Histori Permanen mengakses dan menampilkan file histori tugas Spark dan MapReduce, file histori tugas Flink, dan file log YARN yang ditulis ke Cloud Storage selama masa aktif cluster tugas Dataproc.

Batasan

  • Versi image cluster PHS dan versi image cluster tugas Dataproc harus cocok. Misalnya, Anda dapat menggunakan cluster PHS versi gambar Dataproc 2.0 untuk melihat file histori tugas dari tugas yang berjalan di cluster tugas versi gambar Dataproc 2.0 yang berada di project tempat cluster PHS berada.

  • Cluster PHS tidak mendukung Kerberos dan Autentikasi Pribadi.

Membuat cluster PHS Dataproc

Anda dapat menjalankan perintah gcloud dataproc clusters create berikut di terminal lokal atau di Cloud Shell dengan flag berikut dan properti cluster untuk membuat cluster node tunggal Dataproc Persistent History Server.

gcloud dataproc clusters create CLUSTER_NAME \
    --project=PROJECT \
    --region=REGION \
    --single-node \
    --enable-component-gateway \
    --optional-components=COMPONENT \
    --properties=PROPERTIES
  • CLUSTER_NAME: Tentukan nama cluster PHS.
  • PROJECT: Tentukan project yang akan dikaitkan dengan cluster PHS. Project ini harus sama dengan project yang terkait dengan cluster yang menjalankan tugas Anda (lihat Membuat cluster tugas Dataproc).
  • REGION: Tentukan region Compute Engine tempat cluster PHS akan berada.
  • --single-node: Cluster PHS adalah cluster node tunggal Dataproc.
  • --enable-component-gateway: Flag ini mengaktifkan antarmuka web Component Gateway di cluster PHS.
  • COMPONENT: Gunakan flag ini untuk menginstal satu atau beberapa komponen opsional di cluster. Anda harus menentukan komponen opsional FLINK untuk menjalankan Layanan Web Flink HistoryServer di cluster PHS guna melihat file histori tugas Flink.
  • PROPERTIES. Tentukan satu atau beberapa properti cluster.
  • Secara opsional, tambahkan flag --image-version untuk menentukan versi image cluster PHS. Versi image PHS harus cocok dengan versi image cluster tugas Dataproc. Lihat Batasan.

    Catatan:

    • Contoh nilai properti di bagian ini menggunakan karakter pengganti "*" untuk memungkinkan PHS cocok dengan beberapa direktori dalam bucket yang ditentukan yang ditulis oleh cluster tugas yang berbeda (tetapi lihat Pertimbangan efisiensi karakter pengganti).
    • Flag --properties terpisah ditampilkan dalam contoh berikut untuk membantu keterbacaan. Praktik yang direkomendasikan saat menggunakan gcloud dataproc clusters create untuk membuat cluster Dataproc di Compute Engine adalah menggunakan satu flag --properties untuk menentukan daftar properti yang dipisahkan koma (lihat pemformatan properti cluster).

    Properti:

    • yarn:yarn.nodemanager.remote-app-log-dir=gs://bucket-name/*/yarn-logs: Tambahkan properti ini untuk menentukan lokasi Cloud Storage tempat PHS akan mengakses log YARN yang ditulis oleh cluster tugas.
    • spark:spark.history.fs.logDirectory=gs://bucket-name/*/spark-job-history: Tambahkan properti ini untuk mengaktifkan histori tugas Spark yang persisten. Properti ini menentukan lokasi tempat PHS akan mengakses log histori tugas Spark yang ditulis oleh cluster tugas.

      Di cluster Dataproc 2.0+, dua properti berikut juga harus ditetapkan untuk mengaktifkan log histori Spark PHS (lihat Opsi Konfigurasi Server Histori Spark). Nilai spark.history.custom.executor.log.url adalah nilai literal yang berisi {{PLACEHOLDERS}} untuk variabel yang akan ditetapkan oleh Server Histori Permanen. Variabel ini tidak ditetapkan oleh pengguna; teruskan nilai properti seperti yang ditampilkan.

      --properties=spark:spark.history.custom.executor.log.url.applyIncompleteApplication=false
      
      --properties=spark:spark.history.custom.executor.log.url={{YARN_LOG_SERVER_URL}}/{{NM_HOST}}:{{NM_PORT}}/{{CONTAINER_ID}}/{{CONTAINER_ID}}/{{USER}}/{{FILE_NAME}}
      

    • mapred:mapreduce.jobhistory.read-only.dir-pattern=gs://bucket-name/*/mapreduce-job-history/done: Tambahkan properti ini untuk mengaktifkan histori tugas MapReduce persisten. Properti ini menentukan lokasi Cloud Storage tempat PHS akan mengakses log histori tugas MapReduce yang ditulis oleh cluster tugas.

    • dataproc:yarn.atsv2.bigtable.instance=projects/project-id/instance_id/bigtable-instance-id: Setelah Anda Mengonfigurasi Layanan Linimasa Yarn v2, tambahkan properti ini untuk menggunakan cluster PHS guna melihat data linimasa di antarmuka web Layanan Linimasa Aplikasi YARN V2 dan Tez (lihat Antarmuka web Component Gateway).

    • flink:historyserver.archive.fs.dir=gs://bucket-name/*/flink-job-history/completed-jobs: Gunakan properti ini untuk mengonfigurasi HistoryServer Flink guna memantau daftar direktori yang dipisahkan koma.

    Contoh properti:

    --properties=spark:spark.history.fs.logDirectory=gs://bucket-name/*/spark-job-history
    
    --properties=mapred:mapreduce.jobhistory.read-only.dir-pattern=gs://bucket-name/*/mapreduce-job-history/done
    
    --properties=flink:flink.historyserver.archive.fs.dir=gs://bucket-name/*/flink-job-history/completed-jobs
    

Membuat cluster tugas Dataproc

Anda dapat menjalankan perintah berikut di terminal lokal atau di Cloud Shell untuk membuat cluster tugas Dataproc yang menjalankan tugas dan menulis file histori tugas ke Persistent History Server (PHS).

gcloud dataproc clusters create CLUSTER_NAME \
    --project=PROJECT \
    --region=REGION \
    --optional-components=COMPONENT \
    --enable-component-gateway \
    --properties=PROPERTIES \
    other args ...
  • CLUSTER_NAME: Tentukan nama cluster tugas.
  • PROJECT: Menentukan project yang terkait dengan cluster tugas.
  • REGION: Tentukan region Compute Engine tempat cluster tugas akan berada.
  • --enable-component-gateway: Flag ini mengaktifkan antarmuka web Component Gateway di cluster tugas.
  • COMPONENT: Gunakan flag ini untuk menginstal satu atau beberapa komponen opsional di cluster. Tentukan komponen opsional FLINK untuk menjalankan tugas Flink di cluster.
  • PROPERTIES: Tambahkan satu atau beberapa properti cluster berikut untuk menetapkan lokasi Cloud Storage non-default terkait PHS dan properti cluster tugas lainnya.

    Catatan:

    • Contoh nilai properti di bagian ini menggunakan karakter pengganti "*" untuk memungkinkan PHS cocok dengan beberapa direktori dalam bucket yang ditentukan yang ditulis oleh cluster tugas yang berbeda (tetapi lihat Pertimbangan efisiensi karakter pengganti).
    • Flag --properties terpisah ditampilkan dalam contoh berikut untuk membantu keterbacaan. Praktik yang direkomendasikan saat menggunakan gcloud dataproc clusters create untuk membuat cluster Dataproc di Compute Engine adalah menggunakan satu flag --properties untuk menentukan daftar properti yang dipisahkan koma (lihat pemformatan properti cluster).

    Properti:

    • yarn:yarn.nodemanager.remote-app-log-dir: Secara default, log YARN gabungan diaktifkan di cluster tugas Dataproc dan ditulis ke bucket sementara cluster. Tambahkan properti ini untuk menentukan lokasi Cloud Storage lain tempat cluster akan menulis log agregasi untuk diakses oleh Persistent History Server.
      --properties=yarn:yarn.nodemanager.remote-app-log-dir=gs://bucket-name/directory-name/yarn-logs
      
    • spark:spark.history.fs.logDirectory dan spark:spark.eventLog.dir: Secara default, file histori tugas Spark disimpan di temp bucket cluster di direktori /spark-job-history. Anda dapat menambahkan properti ini untuk menentukan lokasi Cloud Storage yang berbeda untuk file ini. Jika kedua properti tersebut digunakan, properti tersebut harus mengarah ke direktori dalam bucket yang sama.
      --properties=spark:spark.history.fs.logDirectory=gs://bucket-name/directory-name/spark-job-history
      
      --properties=spark:spark.eventLog.dir=gs://bucket-name/directory-name/spark-job-history
      
    • mapred:mapreduce.jobhistory.done-dir dan mapred:mapreduce.jobhistory.intermediate-done-dir: Secara default, file histori tugas MapReduce disimpan di cluster temp bucket dalam direktori /mapreduce-job-history/done dan /mapreduce-job-history/intermediate-done. Lokasi mapreduce.jobhistory.intermediate-done-dir perantara adalah penyimpanan sementara; file perantara dipindahkan ke lokasi mapreduce.jobhistory.done-dir saat tugas MapReduce selesai. Anda dapat menambahkan properti ini untuk menentukan lokasi Cloud Storage yang berbeda untuk file ini. Jika digunakan, kedua properti tersebut harus mengarah ke direktori di bucket yang sama.
      --properties=mapred:mapreduce.jobhistory.done-dir=gs://bucket-name/directory-name/mapreduce-job-history/done
      
      --properties=mapred:mapreduce.jobhistory.intermediate-done-dir=gs://bucket-name/directory-name/mapreduce-job-history/intermediate-done
      
    • spark:spark.history.fs.gs.outputstream.type dan spark:spark.history.fs.gs.outputstream.sync.min.interval.ms: Tambahkan properti konektor Cloud Storage ini untuk mengubah perilaku default cara cluster tugas mengirim data ke Cloud Storage. spark:spark.history.fs.gs.outputstream.type default adalah BASIC, yang mengirim data ke Cloud Storage setelah tugas selesai. Anda dapat mengubah setelan ini ke FLUSHABLE_COMPOSITE untuk mengubah perilaku penghapusan data untuk menyalin data ke Cloud Storage pada interval reguler saat tugas berjalan.
      --properties=spark:spark.history.fs.gs.outputstream.type=FLUSHABLE_COMPOSITE
      
      spark:spark.history.fs.gs.outputstream.sync.min.interval.ms default, yang mengontrol frekuensi transfer data ke Cloud Storage, adalah 5000ms, dan dapat diubah ke interval waktu ms yang berbeda:
      --properties=spark:spark.history.fs.gs.outputstream.sync.min.interval.ms=intervalms
      
      Catatan: Untuk menetapkan properti ini, versi image cluster tugas Dataproc harus menggunakan konektor Cloud Storage versi 2.2.0 atau yang lebih baru. Anda dapat memeriksa versi konektor yang diinstal pada versi image dari halaman Daftar versi image Dataproc.
    • dataproc:yarn.atsv2.bigtable.instance: Setelah Anda Mengonfigurasi Layanan Linimasa Yarn v2, tambahkan properti ini untuk menulis data linimasa YARN ke instance Bigtable yang ditentukan untuk dilihat di antarmuka web Layanan Linimasa Aplikasi YARN V2 dan Tez cluster PHS. Catatan: pembuatan cluster akan gagal jika instance Bigtable tidak ada.
      --properties=dataproc:yarn.atsv2.bigtable.instance=projects/project-id/instance_id/bigtable-instance-id
      
    • flink:jobhistory.archive.fs.dir: Flink JobManager mengarsipkan tugas Flink yang telah selesai dengan mengupload informasi tugas yang diarsipkan ke direktori sistem file. Gunakan properti ini untuk menetapkan direktori arsip di flink-conf.yaml.
      --properties=flink:jobmanager.archive.fs.dir=gs://bucket-name/job-cluster-1/flink-job-history/completed-jobs
      

Menggunakan PHS dengan workload batch Spark

Untuk menggunakan Persistent History Server dengan Dataproc Serverless untuk workload batch Spark:

  1. Membuat cluster PHS.

  2. Pilih atau tentukan cluster PHS saat Anda mengirimkan beban kerja batch Spark.

Menggunakan PHS dengan Dataproc di Google Kubernetes Engine

Untuk menggunakan Server Histori Permanen dengan Dataproc di GKE:

  1. Membuat cluster PHS.

  2. Pilih atau tentukan cluster PHS saat Anda membuat Dataproc di cluster virtual GKE.

Antarmuka web Component Gateway

Di konsol Google Cloud, dari halaman Clusters Dataproc, klik nama cluster PHS untuk membuka halaman Cluster details. Di tab Web Interfaces, pilih link Component gateway untuk membuka antarmuka web yang berjalan di cluster PHS.

Antarmuka web Spark History Server

Screenshot berikut menunjukkan antarmuka web Spark History Server yang menampilkan link ke tugas Spark yang dijalankan di job-cluster-1 dan job-cluster-2 setelah menyiapkan lokasi spark.history.fs.logDirectory dan spark:spark.eventLog.dir cluster tugas dan spark.history.fs.logDirectory cluster PHS sebagai berikut:

job-cluster-1 gs://example-cloud-storage-bucket/job-cluster-1/spark-job-history
job-cluster-2 gs://example-cloud-storage-bucket/job-cluster-2/spark-job-history
phs-cluster gs://example-cloud-storage-bucket/*/spark-job-history

Anda dapat mencantumkan tugas berdasarkan Nama Aplikasi di antarmuka web Spark History Server dengan memasukkan nama aplikasi di kotak penelusuran. Nama aplikasi dapat ditetapkan dengan salah satu cara berikut (diurutkan berdasarkan prioritas):

  1. Ditetapkan di dalam kode aplikasi saat membuat konteks spark
  2. Ditetapkan oleh properti spark.app.name saat tugas dikirim
  3. Ditetapkan oleh Dataproc ke nama resource REST lengkap untuk tugas (projects/project-id/regions/region/jobs/job-id)

Pengguna dapat memasukkan istilah nama aplikasi atau resource di kotak Telusuri untuk menemukan dan mencantumkan tugas.

Log aktivitas

Antarmuka web Server Histori Spark menyediakan tombol Log Peristiwa yang dapat Anda klik untuk mendownload log peristiwa Spark. Log ini berguna untuk memeriksa siklus proses aplikasi Spark.

Tugas Spark

Aplikasi Spark dibagi menjadi beberapa tugas, yang selanjutnya dibagi menjadi beberapa tahap. Setiap tahap dapat memiliki beberapa tugas, yang dijalankan di node eksekutor (pekerja).

  • Klik ID Aplikasi Spark di antarmuka web untuk membuka halaman Tugas Spark, yang menyediakan linimasa peristiwa dan ringkasan tugas dalam aplikasi.

  • Klik tugas untuk membuka halaman Detail Tugas dengan Directed Acyclic Graph (DAG) dan ringkasan tahap tugas.

  • Klik tahap atau gunakan tab Tahap untuk memilih tahap guna membuka halaman Detail Tahap.

    Detail Tahap mencakup visualisasi DAG, linimasa peristiwa, dan metrik untuk tugas dalam tahap. Anda dapat menggunakan halaman ini untuk memecahkan masalah terkait tugas yang terhambat, penundaan penjadwal, dan error kehabisan memori. Visualisator DAG menampilkan baris kode tempat tahap berasal, yang membantu Anda melacak masalah kembali ke kode.

  • Klik tab Executors untuk mengetahui informasi tentang node driver dan executor aplikasi Spark.

    Informasi penting di halaman ini mencakup jumlah core dan jumlah tugas yang dijalankan di setiap eksekutor.

Antarmuka web Tez

Tez adalah mesin eksekusi default untuk Hive dan Pig di Dataproc. Mengirimkan tugas Hive di cluster tugas Dataproc akan meluncurkan aplikasi Tez (lihat Menggunakan Apache Hive di Dataproc ).

Jika Anda mengonfigurasi Yarn Timeline Service v2 dan menetapkan properti dataproc:yarn.atsv2.bigtable.instance saat membuat cluster tugas PHS dan Dataproc, YARN akan menulis data linimasa tugas Hive dan Pig yang dihasilkan ke instance Bigtable yang ditentukan untuk diambil dan ditampilkan di antarmuka web Tez yang berjalan di server PHS.

Antarmuka web Linimasa Aplikasi YARN V2

Jika Anda mengonfigurasi Yarn Timeline Service v2 dan menetapkan properti dataproc:yarn.atsv2.bigtable.instance saat membuat cluster tugas PHS dan Dataproc, YARN akan menulis data linimasa tugas yang dihasilkan ke instance Bigtable yang ditentukan untuk diambil dan ditampilkan di antarmuka web YARN Application Timeline Service yang berjalan di server PHS. Tugas Dataproc tercantum di tab Aktivitas Alur di antarmuka web.

Mengonfigurasi Layanan Linimasa Yarn v2

Untuk mengonfigurasi Yarn Timeline Service v2, siapkan instance Bigtable dan, jika diperlukan, periksa peran akun layanan, sebagai berikut:

  1. Buat instance Bigtable.

  2. Periksa peran akun layanan, jika diperlukan. Akun layanan VM default yang digunakan oleh VM cluster Dataproc memiliki izin yang diperlukan untuk membuat dan mengonfigurasi instance Bigtable untuk Layanan Linimasa YARN. Jika Anda membuat tugas atau cluster PHS dengan akun Layanan VM kustom, akun tersebut harus memiliki peran Administrator atau Bigtable User Bigtable.

Skema tabel yang diperlukan

Dukungan PHS Dataproc untuk YARN Timeline Service v2 memerlukan skema tertentu yang dibuat di instance Bigtable. Dataproc membuat skema yang diperlukan saat cluster tugas atau cluster PHS dibuat dengan properti dataproc:yarn.atsv2.bigtable.instance yang ditetapkan untuk mengarah ke instance Bigtable.

Berikut adalah skema instance Bigtable yang diperlukan:

Tabel Grup kolom
prod.timelineservice.application c,i,m
prod.timelineservice.app_flow m
prod.timelineservice.entity c,i,m
prod.timelineservice.flowactivity i
prod.timelineservice.flowrun i
prod.timelineservice.subapplication c,i,m

Pembersihan sampah memori Bigtable

Anda dapat mengonfigurasi Pembersihan Sampah Bigtable berbasis usia untuk tabel ATSv2:

  • Instal cbt, (termasuk pembuatan .cbrtc file).

  • Buat kebijakan pembersihan sampah memori berbasis usia ATSv2:

export NUMBER_OF_DAYS = number \
cbt setgcpolicy prod.timelineservice.application c maxage=${NUMBER_OF_DAYS} \
cbt setgcpolicy prod.timelineservice.application i maxage=${NUMBER_OF_DAYS} \
cbt setgcpolicy prod.timelineservice.application m maxage=${NUMBER_OF_DAYS} \
cbt setgcpolicy prod.timelineservice.app_flow m maxage=${NUMBER_OF_DAYS} \
cbt setgcpolicy prod.timelineservice.entity c maxage=${NUMBER_OF_DAYS} \
cbt setgcpolicy prod.timelineservice.entity i maxage=${NUMBER_OF_DAYS} \
cbt setgcpolicy prod.timelineservice.entity m maxage=${NUMBER_OF_DAYS} \
cbt setgcpolicy prod.timelineservice.flowactivity i maxage=${NUMBER_OF_DAYS} \
cbt setgcpolicy prod.timelineservice.flowrun i maxage=${NUMBER_OF_DAYS} \
cbt setgcpolicy prod.timelineservice.subapplication c maxage=${NUMBER_OF_DAYS} \
cbt setgcpolicy prod.timelineservice.subapplication i maxage=${NUMBER_OF_DAYS} \
cbt setgcpolicy prod.timelineservice.subapplication m maxage=${NUMBER_OF_DAYS}

Catatan:

NUMBER_OF_DAYS: Jumlah maksimum hari adalah 30d.