Kyuubi mendukung beberapa tingkat berbagi engine yang mengatur cara alokasi engine Spark di berbagai sesi, pengguna, dan kelompok.
Engine yang didukung
Instalasi Kyuubi dalam klaster E-MapReduce juga mencakup YARN dan Spark 3 sebagai dependensi. Kyuubi pada E-MapReduce hanya mendukung Spark 3 di atas YARN. Flink, Trino, dan Spark 2 tidak didukung. Setiap engine Spark berkorespondensi dengan satu aplikasi Spark di YARN. Untuk informasi selengkapnya, lihat Contoh.
Tingkat berbagi
Untuk mengatur tingkat berbagi engine, konfigurasikan parameter kyuubi.engine.share.level pada tab kyuubi-defaults.conf di halaman konfigurasi layanan Kyuubi.
|
Tingkat berbagi |
Deskripsi |
Kasus penggunaan |
Tingkat isolasi |
Kemampuan berbagi |
|
CONNECTION |
Satu engine diluncurkan per session. |
|
Tinggi |
Rendah |
|
USER |
Satu engine per pengguna. |
Sedang |
Sedang |
|
|
GROUP |
Satu engine per kelompok sumber daya. |
Rendah |
Tinggi |
|
|
SERVER |
Satu engine per kluster. |
Administrator |
Tertinggi untuk kluster berkeamanan tinggi, dan terendah untuk kluster standar. |
Kluster berkeamanan tinggi hanya tersedia untuk administrator. |
Contoh
Contoh berikut menggunakan tingkat berbagi USER (kyuubi.engine.share.level diatur ke USER) dan mengasumsikan semua pengguna diautentikasi melalui Lightweight Directory Access Protocol (LDAP) atau Kerberos.
-
Meluncurkan engine sesuai permintaan
Ketika pengguna baru,
user1, mengirim pekerjaan menggunakan tool kyuubi-beeline, server Kyuubi meluncurkan engine Spark baru untuk memprosesnya.kyuubi-beeline -n user1 \ -u "jdbc:hive2://master-1-1:10009/tpcds_parquet_1000" \ -f query1.sqlJika pengguna lain,
user2, perlu menentukan resource untuk engine Spark, mereka dapat menggunakan salah satu metode berikut:-
Metode 1: Atur resource, seperti executor aplikasi Spark, dalam URL JDBC.
# Setel 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 resource untuk engine Spark dalam file konfigurasi kyuubi-defaults.conf.
# Setel konfigurasi default Pengguna di kyuubi-defatuls.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
-
-
Mengirim pekerjaan ke engine tertentu
Setelah pekerjaan selesai, engine Spark yang diluncurkan oleh Kyuubi tetap aktif selama periode yang dapat dikonfigurasi. Pekerjaan baru dapat menggunakan kembali engine idle ini, sehingga meningkatkan performa karena tidak perlu meluncurkan aplikasi YARN baru. Jika tidak ada pekerjaan baru yang dikirim dalam periode tersebut, engine akan secara otomatis dihentikan. Parameter kyuubi.session.engine.idle.timeout menentukan periode timeout idle, yang secara default bernilai
PT30M(30 menit). Anda dapat mengonfigurasi parameter ini pada tab kyuubi-defaults.conf.Kyuubi memungkinkan Anda membuat subdomain dalam tingkat berbagi yang sama. Misalnya, jika pengguna
user4memerlukan resource engine berbeda untuk skenario bisnis yang berbeda, mereka dapat mengatur parameter kyuubi.engine.share.level.subdomain dalam URL JDBC untuk mengirim pekerjaan ke engine yang berbeda.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 -
Satu engine mendukung beberapa sesi Spark
Beberapa sesi Spark dapat menggunakan satu engine Spark secara bersamaan. Misalnya, jika pengguna
user1mengirim dua pekerjaan dari dua terminal berbeda secara bersamaan, kedua pekerjaan tersebut berjalan pada engine Spark yang sama. Spark mengalokasikan resource executor ke pekerjaan berdasarkan mekanisme penjadwalan internal default-nya.# Console 1 kyuubi-beeline -n user1 \ -u "jdbc:hive2://master-1-1:10009/biz1" \ -f query1.sql # Console 2 kyuubi-beeline -n user1 \ -u "jdbc:hive2://master-1-1:10009/biz2" \ -f query2.sql