All Products
Search
Document Center

E-MapReduce:Mengelola engine Kyuubi

Last Updated:Mar 26, 2026

Kyuubi dalam kluster E-MapReduce (EMR) menjalankan Spark 3.x di atas YARN. Setiap engine Spark 3.x dipetakan ke satu aplikasi Spark di YARN. Flink, Trino, dan Spark 2.x tidak didukung.

Prasyarat

Sebelum memulai, pastikan Anda telah:

  • Menginstal YARN dan Spark 3.x di kluster EMR.

  • Mengotentikasi semua pengguna melalui Lightweight Directory Access Protocol (LDAP) atau Kerberos.

Tingkat berbagi

Tingkat berbagi menentukan jumlah pengguna yang berbagi satu engine Kyuubi. Atur kyuubi.engine.share.level pada tab kyuubi-defaults.conf di halaman layanan Kyuubi di Konsol EMR.

Tingkat berbagiCakupan engineTingkat isolasiKemampuan berbagiKasus penggunaan
CONNECTIONSatu engine per sessionTinggiRendahETL skala besar, kueri ad hoc
USERSatu engine per penggunaSedangSedang
GROUPSatu engine per resource groupRendahTinggi
SERVERSatu engine per klusterTertinggi (kluster berkeamanan tinggi) / Terendah (kluster standar)Kluster berkeamanan tinggi: hanya administratorAdministrator

Kirim pekerjaan ke engine Kyuubi

Server Kyuubi secara otomatis memulai dan menghentikan engine. Ketika pengguna baru terhubung melalui kyuubi-beeline untuk pertama kalinya, server akan meluncurkan engine Spark 3.x baru—tanpa perlu pemulaian manual.

Contoh berikut menggunakan tingkat berbagi USER. Semua pengguna telah melewati autentikasi LDAP atau Kerberos.

Kirim pekerjaan sebagai pengguna baru

Saat user1 terhubung untuk pertama kalinya, server Kyuubi secara otomatis memulai engine Spark 3.x baru:

kyuubi-beeline -n user1 \
  -u "jdbc:hive2://master-1-1:10009/tpcds_parquet_1000" \
  -f query1.sql

Konfigurasikan resource executor Spark

Terdapat dua metode untuk mengonfigurasi resource yang digunakan oleh engine Spark 3.x.

Metode 1: Atur resource di URL JDBC

Kirim parameter Spark langsung melalui URL koneksi:

# Atur konfigurasi pengguna melalui URL koneksi JDBC
kyuubi-beeline -n user2 \
  -u "jdbc:hive2://master-1-1:10009/tpcds_parquet_1000?spark.dynamicAllocation.enabled=false;spark.executor.cores=2;spark.executor.memory=4g;spark.executor.instances=4" \
  -f query1.sql

Metode 2: Atur default per pengguna di kyuubi-defaults.conf

Tambahkan entri khusus pengguna dalam format ___username___.spark.param=value pada tab kyuubi-defaults.conf:

# Atur konfigurasi default pengguna di kyuubi-defaults.conf
# ___user2___.spark.dynamicAllocation.enabled=false
# ___user2___.spark.executor.memory=5g
# ___user2___.spark.executor.cores=2
# ___user2___.spark.executor.instances=10

kyuubi-beeline -n user2 \
  -u "jdbc:hive2://master-1-1:10009/tpcds_parquet_1000" \
  -f query1.sql

Gunakan kembali engine yang sedang berjalan

Setelah pekerjaan selesai, engine Spark 3.x tetap aktif selama periode tertentu sebelum dimatikan. Mengirim pekerjaan lain dalam periode tersebut akan menggunakan kembali engine yang ada alih-alih meluncurkan aplikasi YARN baru, sehingga mengurangi waktu startup pekerjaan.

Timeout idle dikontrol oleh kyuubi.session.engine.idle.timeout (default: PT30M, 30 menit). Untuk mengubah timeout ini, perbarui parameter tersebut pada tab kyuubi-defaults.conf.

Kirim pekerjaan ke engine berbeda dari pengguna yang sama

Untuk menjalankan beban kerja di engine terpisah untuk lini bisnis berbeda, gunakan kyuubi.engine.share.level.subdomain di URL JDBC:

kyuubi-beeline -n user4 \
  -u "jdbc:hive2://master-1-1:10009/biz1?kyuubi.engine.share.level.subdomain=biz1" \
  -f query1.sql

kyuubi-beeline -n user4 \
  -u "jdbc:hive2://master-1-1:10009/biz2?kyuubi.engine.share.level.subdomain=biz2" \
  -f query2.sql

kyuubi-beeline -n user4 \
  -u "jdbc:hive2://master-1-1:10009/biz3?kyuubi.engine.share.level.subdomain=biz3" \
  -f query3.sql

Setiap subdomain dipetakan ke engine Spark yang berbeda, sehingga biz1, biz2, dan biz3 berjalan secara terisolasi.

Berbagi satu engine di beberapa session

Beberapa session dari pengguna yang sama berbagi satu engine Spark 3.x. Misalnya, jika user1 mengirim dua pekerjaan dari terminal terpisah secara bersamaan, kedua pekerjaan tersebut berjalan pada engine yang sama:

# Terminal 1
kyuubi-beeline -n user1 \
  -u "jdbc:hive2://master-1-1:10009/biz1" \
  -f query1.sql

# Terminal 2
kyuubi-beeline -n user1 \
  -u "jdbc:hive2://master-1-1:10009/biz2" \
  -f query2.sql

Resource executor dialokasikan sesuai aturan penjadwalan default Spark.

Langkah berikutnya