Server Histori Persisten Dataproc

Ringkasan

Dataproc Persistent History Server (PHS) menyediakan antarmuka web untuk melihat histori tugas untuk tugas yang dijalankan pada cluster Dataproc yang aktif atau dihapus. Alat ini tersedia pada image Dataproc versi 1.5 dan yang lebih baru, serta berjalan pada cluster Dataproc node tunggal. Library 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 dalam instance Bigtable.

  • Log agregasi YARN

Persistent History Server 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

  • Cluster Dataproc PHS memungkinkan Anda melihat file histori tugas hanya dari tugas Dataproc yang berjalan dalam project tempat cluster PHS berada. Selain itu, versi gambar cluster PHS dan versi gambar cluster tugas Dataproc harus cocok. Misalnya, Anda dapat menggunakan cluster PHS versi gambar Dataproc 2.0 untuk melihat file histori tugas tugas yang berjalan di cluster tugas versi gambar Dataproc 2.0 yang berada dalam project tempat cluster PHS berada.

  • Cluster PHS tidak mendukung Kerberos dan Autentikasi Pribadi.

Buat cluster Dataproc PHS

Anda dapat menjalankan perintah gcloud dataproc clusters create berikut di terminal lokal atau di Cloud Shell dengan flag dan properti cluster berikut 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: Menentukan nama cluster PHS.
  • PROJECT: Menentukan project yang akan dikaitkan dengan cluster PHS. Project ini harus sama dengan project yang dikaitkan 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 Gateway Komponen di cluster PHS.
  • COMPONENT: Gunakan flag ini untuk menginstal satu atau beberapa komponen opsional di cluster. Anda harus menentukan komponen opsional FLINK untuk menjalankan Flink HistoryServer Web Service di cluster PHS untuk melihat file histori tugas Flink.
  • PROPERTIES. Tentukan satu atau beberapa properti cluster.
  • Secara opsional, tambahkan tanda --image-version untuk menentukan versi gambar cluster PHS. Versi gambar PHS harus cocok dengan versi gambar cluster tugas Dataproc. Lihat Batasan.

    Catatan:

    • Contoh nilai properti di bagian ini menggunakan karakter pengganti "*" untuk memungkinkan PHS mencocokkan beberapa direktori di bucket yang ditentukan yang ditulis oleh cluster tugas yang berbeda (tetapi lihat Pertimbangan efisiensi karakter pengganti).
    • Tanda --properties terpisah ditampilkan dalam contoh berikut untuk membantu meningkatkan keterbacaan. Praktik yang direkomendasikan saat menggunakan gcloud dataproc clusters create untuk membuat Dataproc di cluster 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.

      Pada cluster Dataproc 2.0+, dua properti berikut juga harus ditetapkan untuk mengaktifkan log histori PHS Spark (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 Persisten. Variabel ini tidak ditetapkan oleh pengguna. Masukkan nilai properti seperti yang ditunjukkan.

      --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 yang 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 pada antarmuka web YARN Application Timeline V2 dan Tez (lihat Antarmuka web Gateway Komponen).

    • flink:historyserver.archive.fs.dir=gs://bucket-name/*/flink-job-history/completed-jobs: Gunakan properti ini untuk mengonfigurasi Flink HistoryServer 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: Menentukan nama cluster tugas.
  • PROJECT: Menentukan project yang terkait dengan cluster tugas.
  • REGION: Menentukan region Compute Engine tempat cluster tugas akan berada.
  • --enable-component-gateway: Flag ini mengaktifkan antarmuka web Gateway Komponen 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 mencocokkan beberapa direktori di bucket yang ditentukan yang ditulis oleh cluster tugas yang berbeda (tetapi lihat Pertimbangan efisiensi karakter pengganti).
    • Tanda --properties terpisah ditampilkan dalam contoh berikut untuk membantu meningkatkan keterbacaan. Praktik yang direkomendasikan saat menggunakan gcloud dataproc clusters create untuk membuat Dataproc di cluster 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 temp cluster. Tambahkan properti ini untuk menentukan lokasi Cloud Storage lain tempat cluster akan menulis log agregasi untuk akses oleh Server Histori Persisten.
      --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 cluster temp bucket di direktori /spark-job-history. Anda dapat menambahkan properti ini untuk menentukan lokasi Cloud Storage yang berbeda untuk file-file ini. Jika kedua properti tersebut digunakan, properti tersebut harus mengarah ke direktori di 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 di 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-file ini. Jika kedua properti tersebut 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-nya adalah BASIC, yang mengirimkan data ke Cloud Storage setelah tugas selesai. Anda dapat mengubah setelan ini menjadi FLUSHABLE_COMPOSITE untuk mengubah perilaku flush guna menyalin data ke Cloud Storage pada interval reguler selama 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 data ditransfer 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 gambar 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 YARN Application Timeline Service 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 menyelesaikan tugas 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 Server Histori Persisten dengan Dataproc Serverless untuk beban kerja batch Spark:

  1. Buat 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 Persisten dengan Dataproc di GKE:

  1. Buat cluster PHS.

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

Antarmuka web Gateway Komponen

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

Antarmuka web Server Histori Spark

Screenshot berikut menunjukkan antarmuka web Server Histori Spark yang menampilkan link ke tugas Spark yang dijalankan pada job-cluster-1 dan job-cluster-2 setelah menyiapkan spark.history.fs.logDirectory cluster tugas, spark:spark.eventLog.dir, serta lokasi 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 disetel dengan salah satu cara berikut (dicantumkan berdasarkan prioritas):

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

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

Log aktivitas

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

Tugas Spark

Aplikasi Spark dipecah 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 tahapan tugas.

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

    Detail Stage mencakup visualisasi DAG, linimasa peristiwa, dan metrik untuk tugas dalam tahapan tersebut. Anda dapat menggunakan halaman ini untuk memecahkan masalah terkait tugas yang tercekik, penundaan penjadwal, dan error kehabisan memori. Visualizer DAG menampilkan baris kode tempat tahapan berasal, sehingga membantu Anda melacak kembali masalah ke kode.

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

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

Antarmuka web Tez

Tez adalah mesin eksekusi default untuk Hive dan Pig di Dataproc. Mengirimkan tugas Hive pada 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 pengambilan dan ditampilkan di antarmuka web Tez yang berjalan di server PHP.

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 pada antarmuka web YARN Application Timeline Service yang berjalan di server PHP. Tugas Dataproc tercantum di bawah tab Flow Activity di antarmuka web.

Mengonfigurasi Layanan Linimasa Yarn v2

Untuk mengonfigurasi Layanan Linimasa Yarn 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 Dataproc PHS untuk YARN Timeline Service v2 memerlukan skema spesifik yang dibuat dalam instance Bigtable. Dataproc membuat skema yang diperlukan saat cluster tugas atau cluster PHS dibuat dengan properti dataproc:yarn.atsv2.bigtable.instance yang disetel agar mengarah ke instance Bigtable.

Berikut ini adalah skema instance Bigtable yang diperlukan:

Tables Kelompok 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 Bigtable Garbage Collection berbasis usia untuk tabel ASv2:

  • 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 hari maksimum adalah 30d.