Topik ini menjelaskan tentang mesin Kyuubi dan tingkat berbagi mereka, serta memberikan contoh cara memulai mesin Kyuubi dan mengirimkan pekerjaan ke mesin tersebut.
Mesin Kyuubi
Saat menginstal Kyuubi di kluster E-MapReduce (EMR), pastikan bahwa mesin YARN dan Spark 3.x telah diinstal terlebih dahulu. Kyuubi di kluster EMR mendukung Spark 3.x pada YARN, tetapi tidak mendukung Flink, Trino, atau mesin Spark 2.x. Dalam contoh-contoh berikut, mesin Spark 3.x digunakan untuk menggambarkan cara mengelola mesin Kyuubi. Setiap mesin Spark 3.x sesuai dengan aplikasi Spark pada YARN. Untuk informasi lebih lanjut, lihat Contoh.
Tingkat Berbagi
Untuk mengonfigurasi tingkat berbagi mesin Kyuubi, buka tab kyuubi-defaults.conf pada halaman layanan Kyuubi di konsol EMR dan konfigurasikan parameter kyuubi.engine.share.level. Tabel berikut menjelaskan detail dari berbagai tingkat berbagi.
Tingkat Berbagi | Deskripsi | Skenario | Tingkat Isolasi | Tingkat Berbagi |
CONNECTION | Satu mesin per sesi |
| Tinggi | Rendah |
USER | Satu mesin per pengguna | Sedang | Sedang | |
GROUP | Satu mesin per grup sumber daya | Rendah | Tinggi | |
SERVER | Satu mesin per kluster | Administrator | Paling tinggi untuk kluster keamanan tinggi, dan paling rendah untuk kluster standar | Kluster keamanan tinggi hanya tersedia untuk administrator |
Contoh
Contoh berikut menggunakan tingkat berbagi USER untuk menggambarkan cara mengelola mesin Kyuubi. Dalam contoh-contoh tersebut, parameter kyuubi.engine.share.level disetel ke USER, dan semua pengguna telah melewati otentikasi Lightweight Directory Access Protocol (LDAP) atau Kerberos.
Mulai mesin Kyuubi sesuai kebutuhan.
Jika pengguna baru bernama user1 perlu menggunakan mesin Spark 3.x, jalankan perintah berikut. Setelah pekerjaan dikirimkan menggunakan kyuubi-beeline, server Kyuubi memulai mesin Spark 3.x baru untuk memproses pekerjaan tersebut.
kyuubi-beeline -n user1 \ -u "jdbc:hive2://master-1-1:10009/tpcds_parquet_1000" \ -f query1.sqlJika pengguna baru lainnya bernama user2 perlu mengonfigurasi sumber daya yang digunakan oleh mesin Spark 3.x, gunakan salah satu metode berikut:
Metode 1: Konfigurasikan sumber daya seperti eksekutor aplikasi Spark dalam URL Java Database Connectivity (JDBC). Contoh kode:
# 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.sqlMetode 2: Konfigurasikan sumber daya yang digunakan oleh mesin Spark 3.x dalam file konfigurasi kyuubi-defaults.conf. Contoh kode:
# 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
Kirimkan pekerjaan ke mesin Spark 3.x yang ditentukan.
Setelah pekerjaan selesai, mesin Spark 3.x yang dimulai oleh server Kyuubi tetap berjalan selama periode waktu tertentu. Jika Anda ingin mengirimkan pekerjaan lain ke mesin tersebut, Anda dapat langsung menggunakan kembali mesin tanpa meluncurkan aplikasi YARN baru. Ini meningkatkan performa pekerjaan atau kueri SQL. Jika tidak ada pekerjaan yang dikirimkan dalam periode waktu tersebut, mesin secara otomatis keluar dari status berjalan. Periode waktu selama mesin Spark 3.x tetap berjalan ditentukan oleh parameter kyuubi.session.engine.idle.timeout. Secara default, mesin menunggu 30 menit untuk digunakan kembali. Untuk memodifikasi periode waktu, Anda dapat mengubah nilai parameter ini dari PT30M ke nilai lain pada tab kyuubi-defaults.conf halaman layanan Kyuubi.
Kyuubi memungkinkan Anda membuat subdomain pada tingkat berbagi yang sama. Sebagai contoh, jika pengguna baru bernama user4 perlu menggunakan sumber daya mesin yang berbeda dalam skenario bisnis yang berbeda, Anda dapat mengonfigurasi parameter kyuubi.engine.share.level.subdomain dalam URL JDBC lalu mengirimkan pekerjaan ke mesin 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.sqlGunakan mesin Spark 3.x dalam beberapa sesi Spark.
Kyuubi memungkinkan mesin Spark 3.x digunakan dalam beberapa sesi Spark. Sebagai contoh, jika pengguna bernama user1 mengirimkan dua pekerjaan dari dua terminal secara bersamaan, kedua pekerjaan tersebut dapat menggunakan mesin Spark 3.x yang sama untuk komputasi. Eksekutor dialokasikan ke pekerjaan berdasarkan aturan penjadwalan default Spark.
# Konsol 1 kyuubi-beeline -n user1 \ -u "jdbc:hive2://master-1-1:10009/biz1" \ -f query1.sql # Konsol 2 kyuubi-beeline -n user1 \ -u "jdbc:hive2://master-1-1:10009/biz2" \ -f query2.sql