Topik ini menjelaskan cara menghubungkan ke Hive di E-MapReduce menggunakan tiga metode: Hive client, Beeline, dan JDBC.
Prasyarat
-
Anda telah membuat kluster dengan layanan Hive diaktifkan (misalnya, DataLake atau Custom) dan mengaktifkan sakelar Assign Public Network IP untuk node master agar memungkinkan login jarak jauh. Untuk informasi lebih lanjut tentang pembuatan kluster, lihat Create a cluster.
-
Kluster umum: Kluster tanpa Kerberos Authentication atau High Service Availability yang diaktifkan.
-
Kluster keamanan tinggi: Kluster yang dibuat dengan sakelar Kerberos Authentication diaktifkan.
-
Kluster ketersediaan tinggi: Kluster yang dibuat dengan sakelar High Service Availability diaktifkan. Perhatikan bahwa saat membuat kluster ketersediaan tinggi, Anda juga harus memilih layanan ZooKeeper.
-
-
Anda telah login ke node master kluster. Untuk informasi lebih lanjut, lihat Log on to a cluster.
Catatan
-
master-1-1dan<Master node public IP address>: hostname dan alamat IP publik node master. Anda dapat memperoleh informasi ini pada halaman Nodes kluster tujuan di Konsol EMR. Untuk informasi lebih lanjut, lihat Log on to a cluster.Umumnya, hostname node master adalah master-1-1. Jika kluster Anda adalah kluster Hadoop, hostname-nya adalah emr-header-1.
-
HiveServer2 tidak memvalidasi username dan password secara default. Untuk mengaktifkan otentikasi username dan password, aktifkan otentikasi LDAP. Untuk informasi lebih lanjut, lihat Use LDAP authentication.
Prosedur
Kluster umum
Menghubungkan menggunakan Hive client
-
Jalankan perintah berikut untuk menghubungkan ke Hive.
hive -
Opsi: Jalankan
quit;atauexit;untuk keluar dari Hive.
Menghubungkan menggunakan Beeline client
-
Jalankan perintah berikut untuk menghubungkan ke Hive.
beeline -u jdbc:hive2://master-1-1:10000 -
Opsi: Jalankan
!quitatau!exituntuk keluar dari Beeline.
Menghubungkan menggunakan JDBC
Sebelum memulai, pastikan Anda telah menginstal lingkungan Java dan tool pengembangan Java, serta mengonfigurasi variabel lingkungan yang relevan.
-
Konfigurasikan dependensi proyek (hadoop-common dan hive-jdbc) dalam file
pom.xml. Contoh berikut menunjukkan dependensi yang ditambahkan.<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 versi hadoop-common dan hive-jdbc sesuai dengan versi Hadoop-Common dan Hive di kluster EMR Anda. Anda dapat melihat informasi perangkat lunak ini pada tab Basic Information di bagian Software Information kluster tujuan di Konsol EMR.
-
Tulis kode untuk menghubungkan ke HiveServer2 dan mengoperasikan data tabel Hive. Contoh berikut menunjukkan kode sampel.
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://<Master node public IP address>: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)); } } }CatatanMetode ini memerlukan port 10000 terbuka. Untuk informasi lebih lanjut, lihat Manage security groups.
-
Bangun proyek (untuk menghasilkan file JAR) dan unggah file JAR tersebut ke lingkungan runtime.
PentingFile JAR bergantung pada hadoop-common dan hive-jdbc. Jika paket dependensi ini tidak termasuk dalam variabel lingkungan lingkungan runtime, unduh dan konfigurasikan, atau masukkan langsung ke dalam file JAR. Jika salah satu dependensi hilang saat menjalankan file JAR, Anda akan melihat salah satu error berikut:
-
hadoop-common tidak ada:
java.lang.NoClassDefFoundError: org/apache/hadoop/conf/Configuration -
hive-jdbc tidak ada:
java.lang.ClassNotFoundException: org.apache.hive.jdbc.HiveDriver
Dalam contoh ini, file JAR yang dihasilkan diberi nama
emr-hiveserver2-1.0.jar. Unggah file JAR ini ke node master kluster E-MapReduce Anda. -
-
Uji apakah file JAR berjalan dengan benar.
PentingServer yang menjalankan file JAR dan kluster E-MapReduce harus berada dalam VPC dan security group yang sama, serta harus memiliki konektivitas jaringan di antara keduanya. Jika berada dalam VPC atau lingkungan jaringan yang berbeda, akses kluster menggunakan alamat IP publiknya, atau gunakan produk jaringan Alibaba Cloud untuk menetapkan konektivitas sebelum mengaksesnya melalui jaringan internal. Untuk menguji konektivitas jaringan:
-
Jaringan publik:
telnet public IP address of master-1-1 10000 -
Jaringan privat:
telnet private IP address of master-1-1 10000
java -jar emr-hiveserver2-1.0.jar -
Kluster keamanan tinggi
Menghubungkan menggunakan Hive client
-
Jalankan perintah berikut untuk memulai tool Kerberos admin.local.
-
Jika Anda masuk ke node master-1-1 tempat server Kerberos Key Distribution Center (KDC) berjalan sebagai pengguna
root, jalankan perintah berikut untuk langsung mengakses tool admin.kadmin.localOutput berikut menunjukkan bahwa Anda telah memasuki antarmuka baris perintah
kadmin.local:Authenticating as principal hadoop/admin@EMR.C-85D4B8D74296****.COM with password. kadmin.local: -
Jika Anda masuk ke node lain atau menggunakan gateway, jalankan perintah berikut untuk mengakses tool admin.
kadmin -p <admin-user> -w <admin-password>CatatanJika Anda menggunakan KDC yang disediakan oleh E-MapReduce, perhatikan parameter berikut:
-
<admin-user>: Nilainya tetaproot/admin. -
<admin-password>: Di Konsol E-MapReduce, buka tab Configure layanan Kerberos untuk mendapatkan nilai parameter admin_pwd.
Output berikut menunjukkan bahwa Anda telah memasuki antarmuka baris perintah
kadmin:Authenticating as principal root/admin with password. kadmin: -
-
-
Jalankan perintah berikut untuk membuat principal bernama
test.Dalam contoh ini, password-nya adalah
123456.addprinc -pw 123456 testOutput berikut menunjukkan bahwa principal berhasil dibuat:
Principal "test@EMR.C-85D4B8D74296****.COM" created.CatatanCatat username dan password tersebut. Anda akan membutuhkannya untuk membuat ticket-granting ticket (TGT).
Jalankan perintah quit untuk keluar dari tool Kerberos
admin.local. -
Masuk ke mesin tempat Anda ingin menjalankan Hive client, lalu jalankan perintah berikut untuk membuat dan beralih ke pengguna
test.useradd test su test -
Jalankan perintah berikut untuk membuat TGT.
kinitTekan Enter dan masukkan password untuk pengguna
test. Dalam contoh ini, password-nya adalah123456. -
Jalankan perintah
hiveuntuk mengakses Hive client.hive
Menghubungkan menggunakan Beeline client
-
Jalankan perintah berikut untuk memulai tool Kerberos admin.local.
-
Jika Anda masuk ke node master-1-1 tempat server Kerberos Key Distribution Center (KDC) berjalan sebagai pengguna
root, jalankan perintah berikut untuk langsung mengakses tool admin.kadmin.localOutput berikut menunjukkan bahwa Anda telah memasuki antarmuka baris perintah
kadmin.local:Authenticating as principal hadoop/admin@EMR.C-85D4B8D74296****.COM with password. kadmin.local: -
Jika Anda masuk ke node lain atau menggunakan gateway, jalankan perintah berikut untuk mengakses tool admin.
kadmin -p <admin-user> -w <admin-password>CatatanJika Anda menggunakan KDC yang disediakan oleh E-MapReduce, perhatikan parameter berikut:
-
<admin-user>: Nilainya tetaproot/admin. -
<admin-password>: Di Konsol E-MapReduce, buka tab Configure layanan Kerberos untuk mendapatkan nilai parameter admin_pwd.
Output berikut menunjukkan bahwa Anda telah memasuki antarmuka baris perintah
kadmin:Authenticating as principal root/admin with password. kadmin: -
-
-
Jalankan perintah berikut untuk membuat principal bernama
test.Dalam contoh ini, password-nya adalah
123456.addprinc -pw 123456 testOutput berikut menunjukkan bahwa principal berhasil dibuat:
Principal "test@EMR.C-85D4B8D74296****.COM" created.CatatanCatat username dan password tersebut. Anda akan membutuhkannya untuk membuat ticket-granting ticket (TGT).
Jalankan perintah quit untuk keluar dari tool Kerberos
admin.local. -
Masuk ke mesin tempat Anda ingin menjalankan Hive client, lalu jalankan perintah berikut untuk membuat dan beralih ke pengguna
test.useradd test su test -
Jalankan perintah berikut untuk membuat TGT.
kinitTekan Enter dan masukkan password untuk pengguna
test. Dalam contoh ini, password-nya adalah123456. -
Jalankan perintah berikut untuk mengakses Hive client.
beeline -u "jdbc:hive2://master-1-1.c-56187feb57f0****.cn-hangzhou.emr.aliyuncs.com:10000/;principal=hive/_HOST@EMR.c-56187feb57f0****.COM"Ganti placeholder berikut dengan informasi Anda:
-
master-1-1.c-56187feb57f0****.cn-hangzhou.emr.aliyuncs.com: hostname lengkap beserta nama domain. Anda dapat memperoleh hostname dengan menjalankan perintahhostname -fpada node tempat layanan HiveServer2 berjalan (biasanya node master-1-1). -
EMR.c-56187feb57f0****.COM: Nama realm. Di Konsol E-MapReduce, buka tab Configure layanan Kerberos untuk menemukan nilai parameterrealm.
-
Kluster ketersediaan tinggi
Menghubungkan menggunakan Beeline client
Bergantung pada mode penemuan layanan yang Anda pilih (zooKeeper atau multiServers), gunakan perintah yang sesuai untuk mengonfigurasi koneksi Beeline.
-
Gunakan mode zooKeeper
beeline -u 'jdbc:hive2://master-1-1:2181,master-1-2:2181,master-1-3:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2' -
Gunakan mode multiServers
beeline -u 'jdbc:hive2://master-1-1:10000,master-1-2:10000,master-1-3:10000/default;serviceDiscoveryMode=multiServers'