Topik ini menjelaskan cara menggunakan klien Hive, Beeline, dan Java Database Connectivity (JDBC) untuk terhubung ke Hive dalam kluster E-MapReduce (EMR).
Prasyarat
Kluster EMR yang berisi Hive telah dibuat, dengan saklar Assign Public Network IP diaktifkan untuk node master. Untuk informasi tentang cara membuat kluster, lihat Buat kluster.
Kluster umum: Kluster tempat Kerberos Authentication dan High Service Availability tidak diaktifkan.
Kluster keamanan tinggi: Kluster tempat Kerberos Authentication diaktifkan.
Kluster ketersediaan tinggi: Kluster tempat High Service Availability diaktifkan. Saat membuat kluster ketersediaan tinggi, Anda harus memilih ZooKeeper.
Anda telah masuk ke node master dari kluster. Untuk informasi lebih lanjut, lihat Masuk ke kluster.
Peringatan
Anda dapat memperoleh nama dan alamat IP publik dari node master kluster pada tab Nodes. Untuk informasi lebih lanjut, lihat Masuk ke kluster.
Dalam kebanyakan kasus, nama node master adalah master-1-1. Jika kluster Anda adalah kluster Hadoop, nama node master adalah emr-header-1.

Secara default, HiveServer2 tidak memverifikasi nama pengguna dan kata sandi. Jika Anda ingin nama pengguna dan kata sandi diautentikasi, Anda harus mengaktifkan autentikasi Lightweight Directory Access Protocol (LDAP). Untuk informasi lebih lanjut, lihat Gunakan autentikasi LDAP.
Prosedur
Kluster umum
Gunakan klien Hive untuk terhubung ke Hive
Jalankan perintah berikut untuk terhubung ke Hive:
hiveOpsional. Jalankan perintah
quit;atauexit;untuk keluar dari klien Hive.
Gunakan klien Beeline untuk terhubung ke Hive
Jalankan perintah berikut untuk terhubung ke Hive:
beeline -u jdbc:hive2://master-1-1:10000Opsional. Jalankan perintah
!quitatau!exituntuk keluar dari klien Beeline.
Gunakan JDBC untuk terhubung ke Hive
Sebelum melakukan langkah-langkah berikut, pastikan bahwa Anda telah menyiapkan lingkungan Java, menginstal alat pemrograman Java, dan mengonfigurasi variabel lingkungan.
Konfigurasikan dependensi proyek hadoop-common dan hive-jdbc dalam file
pom.xml. Contoh:<dependencies> <dependency> <groupId>org.apache.hive</groupId> <artifactId>hive-jdbc</artifactId> <version>3.1.3</version> </dependency> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-common</artifactId> <version>3.2.1</version> </dependency> </dependencies>Pastikan bahwa informasi versi hadoop-common dan hive-jdbc sesuai dengan informasi versi Hadoop-Common dan Hive di kluster EMR. Anda dapat melihat informasi versi Hadoop-Common dan Hive di bagian Software Information dari tab Basic Information kluster di konsol EMR.
Tulis kode untuk terhubung ke HiveServer2 dan melakukan operasi pada data tabel Hive. Contoh kode:
import java.sql.*; public class App { private static String driverName = "org.apache.hive.jdbc.HiveDriver"; public static void main(String[] args) throws SQLException { try { Class.forName(driverName); } catch (ClassNotFoundException e) { e.printStackTrace(); } Connection con = DriverManager.getConnection( "jdbc:hive2://<Alamat IP Publik node master>:10000", "root", ""); Statement stmt = con.createStatement(); String sql = "select * from sample_tbl limit 10"; ResultSet res = stmt.executeQuery(sql); while (res.next()) { System.out.println(res.getString(1) + "\t" + res.getString(2)); } } }CatatanAnda harus mengaktifkan port 10000. Untuk informasi lebih lanjut, lihat Kelola grup keamanan.
Kemas proyek untuk menghasilkan file JAR dan unggah file JAR ke host untuk menjalankan file JAR.
PentingDependensi hadoop-common dan hive-jdbc diperlukan untuk menjalankan file JAR. Jika kedua dependensi tersebut tidak dikonfigurasi dalam variabel lingkungan di host, Anda harus mengunduh dan mengonfigurasi dependensi di host. Sebagai alternatif, Anda dapat mengemas kedua dependensi dan proyek ke file JAR yang sama. Jika salah satu dependensi hilang saat Anda menjalankan file JAR, pesan kesalahan akan muncul.
Jika
hadoop-commonhilang, pesan kesalahan "java.lang.NoClassDefFoundError: org/apache/hadoop/conf/Configuration" akan muncul.Jika
hive-jdbchilang, pesan kesalahan "java.lang.ClassNotFoundException: org.apache.hive.jdbc.HiveDriver" akan muncul.
Dalam contoh ini, file JAR
emr-hiveserver2-1.0.jardihasilkan. Anda harus mengunggah file tersebut ke node master-1-1 dari kluster EMR.Periksa apakah file JAR dapat berjalan dengan benar.
PentingKami merekomendasikan agar Anda menjalankan file JAR pada host yang berada di virtual private cloud (VPC) dan grup keamanan yang sama dengan kluster EMR. Pastikan bahwa host dan kluster EMR dapat berkomunikasi satu sama lain. Jika host dan kluster EMR berada di VPC yang berbeda atau memiliki tipe jaringan yang berbeda, mereka hanya dapat berkomunikasi melalui Internet. Dalam hal ini, Anda perlu menghubungkannya menggunakan layanan jaringan Alibaba Cloud. Dengan cara ini, mereka dapat berkomunikasi melalui jaringan internal. Gunakan metode berikut untuk menguji konektivitas:
Internet:
telnet Alamat IP Publik node master-1-1 10000Jaringan internal:
telnet Alamat IP Internal node master-1-1 10000
java -jar emr-hiveserver2-1.0.jar
Kluster keamanan tinggi
Gunakan klien Hive untuk terhubung ke Hive
Buka CLI admin.local Kerberos.
Jika Anda masuk ke node master-1-1 tempat server Key Distribution Center (KDC) berada sebagai pengguna root, jalankan perintah berikut untuk membuka CLI admin.local. KDC adalah server Kerberos.
kadmin.localJika output berisi informasi berikut, CLI admin.local dibuka:
Authenticating as principal hadoop/admin@EMR.C-85D4B8D74296****.COM with password. kadmin.local:Jika Anda masuk ke node selain master-1-1 atau menggunakan gateway, jalankan perintah berikut untuk membuka CLI admin.local. Ganti parameter admin-user dan admin-password dengan nama pengguna dan kata sandi sebenarnya.
kadmin -p <admin-user> -w <admin-password>CatatanJika Anda menggunakan server KDC mandiri di EMR, perhatikan item berikut:
<admin-user>: Atur nilainya menjadiroot/admin.<admin-password>: Masukkan nilai parameter admin_pwd. Anda dapat memperoleh nilai tersebut di tab Configure layanan Kerberos di konsol EMR.
Jika output berisi informasi berikut, CLI admin.local dibuka:
Authenticating as principal root/admin with password. kadmin:
Buat principal bernama test.
Dalam contoh ini, kata sandinya adalah 123456.
addprinc -pw 123456 testJika output berisi informasi berikut, principal telah dibuat:
Principal "test@EMR.C-85D4B8D74296****.COM" created.CatatanAnda harus mencatat nama pengguna dan kata sandi, yang diperlukan saat Anda membuat tiket pemberian tiket (TGT).
Untuk keluar dari CLI admin.local, jalankan perintah
quit.Masuk ke node tempat Anda ingin menjalankan klien Hive. Jalankan perintah berikut untuk membuat dan beralih ke pengguna bernama test:
useradd test su testJalankan perintah berikut untuk membuat TGT:
kinitTekan Enter dan masukkan kata sandi pengguna test. Dalam contoh ini, kata sandinya adalah 123456.
Jalankan perintah
hiveuntuk terhubung ke klien Hive.hive
Gunakan klien Beeline untuk terhubung ke Hive
Buka CLI admin.local Kerberos.
Jika Anda masuk ke node master-1-1 tempat server Key Distribution Center (KDC) berada sebagai pengguna root, jalankan perintah berikut untuk membuka CLI admin.local. KDC adalah server Kerberos.
kadmin.localJika output berisi informasi berikut, CLI admin.local dibuka:
Authenticating as principal hadoop/admin@EMR.C-85D4B8D74296****.COM with password. kadmin.local:Jika Anda masuk ke node selain master-1-1 atau menggunakan gateway, jalankan perintah berikut untuk membuka CLI admin.local. Ganti parameter admin-user dan admin-password dengan nama pengguna dan kata sandi sebenarnya.
kadmin -p <admin-user> -w <admin-password>CatatanJika Anda menggunakan server KDC mandiri di EMR, perhatikan item berikut:
<admin-user>: Atur nilainya menjadiroot/admin.<admin-password>: Masukkan nilai parameter admin_pwd. Anda dapat memperoleh nilai tersebut di tab Configure layanan Kerberos di konsol EMR.
Jika output berisi informasi berikut, CLI admin.local dibuka:
Authenticating as principal root/admin with password. kadmin:
Buat principal bernama test.
Dalam contoh ini, kata sandinya adalah 123456.
addprinc -pw 123456 testJika output berisi informasi berikut, principal telah dibuat:
Principal "test@EMR.C-85D4B8D74296****.COM" created.CatatanAnda harus mencatat nama pengguna dan kata sandi, yang diperlukan saat Anda membuat tiket pemberian tiket (TGT).
Untuk keluar dari CLI admin.local, jalankan perintah
quit.Masuk ke node tempat Anda ingin menjalankan klien Hive. Jalankan perintah berikut untuk membuat dan beralih ke pengguna bernama test:
useradd test su testJalankan perintah berikut untuk membuat TGT:
kinitTekan Enter dan masukkan kata sandi pengguna test. Dalam contoh ini, kata sandinya adalah 123456.
Jalankan perintah berikut untuk terhubung ke klien Hive:
beeline -u "jdbc:hive2://master-1-1.c-56187feb57f0****.cn-hangzhou.emr.aliyuncs.com:10000/;principal=hive/_HOST@EMR.c-56187feb57f0****.COM"Ganti informasi berikut berdasarkan kebutuhan bisnis Anda:
master-1-1.c-56187feb57f0****.cn-hangzhou.emr.aliyuncs.com: Nama host lengkap, termasuk domain. Anda dapat memperoleh nama host dengan menjalankan perintahhostname -fpada node tempat layanan HiveServer2 diterapkan. Layanan ini diterapkan pada node master-1-1 dalam kebanyakan kasus.EMR.c-56187feb57f0****.COM: Nama realm. Anda dapat mencari parameter realm di tab Konfigurasi halaman layanan Kerberos di konsol EMR. Nilai parameter ini adalah nama realm.
Kluster ketersediaan tinggi
Gunakan klien Beeline untuk terhubung ke Hive
Jalankan perintah yang sesuai untuk menggunakan JDBC untuk terhubung ke Hive berdasarkan mode penemuan layanan yang dipilih.
ZooKeeper
beeline -u 'jdbc:hive2://master-1-1:2181,master-1-2:2181,master-1-3:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2'Multi-server
beeline -u 'jdbc:hive2://master-1-1:10000,master-1-2:10000,master-1-3:10000/default;serviceDiscoveryMode=multiServers'