Saat kluster E-MapReduce (EMR) menjalankan beberapa layanan HiveServer2, Anda dapat menggunakan ZooKeeper dan Server Load Balancer (SLB) untuk menerapkan load balancing dan mendistribusikan beban di beberapa node. Topik ini menjelaskan cara mengonfigurasi dan menggunakan load balancing HiveServer2 baik untuk kluster standar maupun kluster yang diaktifkan dengan Kerberos.
Batasan
Topik ini hanya berlaku untuk kluster yang telah mengaktifkan fitur High Service Availability.
Anda harus terlebih dahulu membuat kluster ketersediaan tinggi. Untuk informasi selengkapnya, lihat Create a cluster. Fitur High Service Availability harus diaktifkan. Setelah fitur ini diaktifkan, E-MapReduce mendistribusikan node master di perangkat keras dasar yang berbeda untuk mengurangi risiko kegagalan.
Kluster E-MapReduce standar
Metode berikut berlaku untuk kluster yang menonaktifkan Kerberos Authentication.
Load balancing ZooKeeper
ZooKeeper diinstal secara default pada kluster ketersediaan tinggi. Anda dapat menggunakan metode berikut agar ZooKeeper memilih instans HiveServer2 untuk koneksi Anda, yang menyediakan load balancing.
Lakukan koneksi ke kluster melalui SSH. Untuk informasi selengkapnya, lihat Log on to a cluster.
-
Jalankan perintah berikut. ZooKeeper akan memilih instans HiveServer2 yang tersedia untuk koneksi.
beeline -u 'jdbc:hive2://master-1-1:2181,master-1-2:2181,master-1-3:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2'CatatanDalam perintah tersebut,
master-1-1:2181,master-1-2:2181,master-1-3:2181adalah string koneksi untuk ZooKeeper.Untuk mengizinkan Hue terhubung ke instans HiveServer2 yang telah dilengkapi load balancing, tambahkan tiga parameter kustom berikut pada tab hue dalam konfigurasi Hue.
Parameter
Deskripsi
zookeeper.clusters.default.hostports
String koneksi untuk ZooKeeper. Ganti contoh tersebut dengan nilai aktual Anda. Contoh: master-1-1:2181,master-1-2:2181,master-1-3:2181.
beeswax.hive_discovery_hs2
Atur nilainya menjadi
true.beeswax.hive_discovery_hiveserver2_znode
Atur nilainya menjadi
/hiveserver2.
Load balancing SLB
-
Buat instans Server Load Balancer (SLB). Untuk informasi selengkapnya, lihat Create and manage a CLB instance.
-
Tambahkan instans ECS yang menjalankan layanan HiveServer2 ke default server group. Konfigurasikan bobot setiap instans ECS sesuai kebutuhan.
Untuk informasi selengkapnya, lihat Manage a default server group.
-
Konfigurasikan listener TCP. Anda dapat menyesuaikan port antarmuka depan. Atur Backend Protocol/Port menjadi TCP:10000.
Pilih algoritma penjadwalan sesuai kebutuhan Anda. Untuk informasi selengkapnya, lihat Add a TCP listener.
-
Hubungkan ke HiveServer2.
-
Hubungkan ke kluster melalui SSH. Untuk informasi selengkapnya, lihat Log on to a cluster.
-
Jalankan perintah berikut untuk terhubung ke layanan HiveServer2 melalui load balancer.
beeline -u 'jdbc:hive2://<slb_ip_or_host>:<slb_port>'Ganti parameter berikut dengan nilai aktual Anda:
-
<slb_ip_or_host>: Alamat IP instans SLB atau hostname yang terikat dengannya. -
<slb_port>: Port listener antarmuka depan dari instans SLB.
-
Untuk mengonfigurasi Hue agar berkomunikasi dengan HiveServer2 melalui load balancer ini, ubah parameter berikut pada tab hue dalam konfigurasi Hue.
Parameter
Deskripsi
hive_server2_host
Alamat IP instans SLB atau hostname yang terikat dengannya.
hive_server2_port
Port listener antarmuka depan dari instans SLB.
-
Kluster E-MapReduce yang diaktifkan dengan Kerberos
Metode berikut berlaku untuk kluster yang mengaktifkan Kerberos Authentication.
Load balancing ZooKeeper
-
Jalankan perintah
kinituntuk melakukan otentikasi dengan Kerberos dan mendapatkan tiket-granting ticket. Untuk informasi selengkapnya, lihat Use Kerberos authentication. -
Hubungkan ke HiveServer2.
-
Hubungkan ke kluster melalui SSH. Untuk informasi selengkapnya, lihat Log on to a cluster.
-
Jalankan perintah berikut. ZooKeeper akan memilih instans HiveServer2 yang tersedia untuk koneksi.
beeline -u 'jdbc:hive2://master-1-1:2181,master-1-2:2181,master-1-3:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2'CatatanDalam perintah tersebut,
master-1-1:2181,master-1-2:2181,master-1-3:2181adalah string koneksi untuk ZooKeeper.Hue tidak mendukung koneksi ke HiveServer2 yang telah dilengkapi load balancing melalui ZooKeeper pada kluster E-MapReduce yang diaktifkan dengan Kerberos. Oleh karena itu, gunakan metode SLB untuk koneksi dari Hue.
-
Load balancing SLB
Anda dapat membuat dan mengonfigurasi instans SLB seperti yang dijelaskan dalam bagian Standard E-MapReduce clusters. Pada kluster yang diaktifkan dengan Kerberos, Anda juga harus mengonfigurasi principal Kerberos yang digunakan oleh HiveServer2 agar koneksi berhasil.
Contoh ini mengasumsikan alamat IP SLB adalah 121.40.. dan port listener antarmuka depan adalah 10000. Ganti nilai-nilai tersebut dengan nilai aktual Anda.
-
Jalankan perintah
kinituntuk melakukan otentikasi dengan Kerberos dan mendapatkan tiket-granting ticket. Untuk informasi selengkapnya, lihat Use Kerberos authentication. -
Buat principal Hive untuk alamat 121.40.**.** dan ekspor keytab-nya.
-
Login ke node master-1-1 kluster. Untuk informasi selengkapnya, lihat Log on to a cluster.
-
Jalankan perintah berikut untuk masuk ke tool admin Kerberos:
kadmin.local -
Jalankan perintah berikut untuk membuat principal dan mengekspornya ke
/tmp/slb.keytab:addprinc -randkey hive/121.40.. xst -k /tmp/slb.keytab hive/121.40.**.** exitJika kluster Kerberos E-MapReduce Anda terintegrasi dengan instans MIT Kerberos eksternal, gunakan
kadmin.localataukadminuntuk terhubung ke KDC dan jalankan perintahaddprincdanxst.PentingMengekspor Kerberos keytab beberapa kali dapat membatalkan file keytab sebelumnya. Pastikan bahwa
slb.keytabhanya berisi principal yang paling baru diekspor. Jika Anda perlu mengekspor principal lagi, Anda harus menghapus file keytab yang sebelumnya dihasilkan terlebih dahulu.
-
-
Transfer file
slb.keytabke semua node yang menjalankan layanan HiveServer2. Kemudian, pada masing-masing node tersebut, gunakan tool ktutil untuk menggabungkan isislb.keytabke dalam file /etc/taihao-apps/hive-conf/keytab/hive.keytab dengan menjalankan perintah berikut:ktutil rkt /tmp/slb.keytab wkt /etc/taihao-apps/hive-conf/keytab/hive.keytab quit -
Jalankan perintah berikut untuk melihat isi file hive.keytab:
klist -kt /etc/taihao-apps/hive-conf/keytab/hive.keytab[root@master-1-1(172.16.xxx) ~]# klist -kt /etc/taihao-apps/hive-conf/keytab/hive.keytab Keytab name: FILE:/etc/taihao-apps/hive-conf/keytab/hive.keytab KVNO Timestamp Principal ---- ------------------- ------------------------------------------------------ 2 10/30/2024 14:12:05 hive/master-1-1.c-7d27ce0e7xxx.cn-hangzhou.emr.aliyuncs.com@EMR.C-7D27CE0E7xxx.COM 2 10/30/2024 14:12:05 hive/master-1-1.c-7d27ce0e7xxx.cn-hangzhou.emr.aliyuncs.com@EMR.C-7D27CE0E7xxx.COM 2 10/30/2024 14:12:06 hive/master-1-1.c-7d27ce0e7xxx.cn-hangzhou.emr.aliyuncs.com@EMR.C-7D27CE0E7xxx.COM 2 10/30/2024 14:12:06 hive/master-1-1.c-7d27ce0e7xxx.cn-hangzhou.emr.aliyuncs.com@EMR.C-7D27CE0E7xxx.COM 2 10/30/2024 14:12:06 hive/master-1-1.c-7d27ce0e7xxx.cn-hangzhou.emr.aliyuncs.com@EMR.C-7D27CE0E7xxx.COM 2 10/30/2024 14:12:06 hive/master-1-1.c-7d27ce0e7xxx.cn-hangzhou.emr.aliyuncs.com@EMR.C-7D27CE0E7xxx.COM 2 10/30/2024 14:26:56 hive/121.40.xxx @EMR.C-7D27CE0E77xxx.COM 2 10/30/2024 14:26:56 hive/121.40.xxx @EMR.C-7D27CE0E77xxx.COM 2 10/30/2024 14:26:56 hive/121.40.xxx @EMR.C-7D27CE0E77xxx.COM 2 10/30/2024 14:26:56 hive/121.40.xxx @EMR.C-7D27CE0E77xxx.COM 2 10/30/2024 14:26:56 hive/121.40.xxx @EMR.C-7D27CE0E77xxx.COM 2 10/30/2024 14:26:56 hive/121.40.xxx @EMR.C-7D27CE0E77xxx.COM 2 10/30/2024 14:26:56 hive/121.40.xxx @EMR.C-7D27CE0E77xxx.COM -
Ubah konfigurasi Hive untuk kluster tersebut.
Pada Konsol EMR, buka tab Configure layanan Hive. Cari parameter hive.server2.authentication.kerberos.principal dan ubah nilainya menjadi hive/121.40..@EMR...COM, yaitu principal yang Anda buat pada langkah sebelumnya. Lalu, simpan dan terapkan konfigurasi tersebut.
-
Mulai ulang layanan HiveServer2.
-
Pada Konsol EMR, buka tab Status layanan Hive. Pada baris HiveServer2, klik Restart di kolom Actions.
-
Masukkan alasan eksekusi dan klik OK.
-
Pada kotak dialog Confirm, klik OK.
-
-
Pada node master-1-1, jalankan perintah berikut untuk terhubung ke HiveServer2:
beeline -u 'jdbc:hive2://121.40.**.**:10000/default;principal=hive/121.40.**.**@EMR.**.COM'