全部产品
Search
文档中心

E-MapReduce:Hubungkan ke Hive

更新时间:Jul 02, 2025

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.

    image

  • 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

  1. Jalankan perintah berikut untuk terhubung ke Hive:

    hive
  2. Opsional. Jalankan perintah quit; atau exit; untuk keluar dari klien Hive.

Gunakan klien Beeline untuk terhubung ke Hive

  1. Jalankan perintah berikut untuk terhubung ke Hive:

    beeline -u jdbc:hive2://master-1-1:10000
  2. Opsional. Jalankan perintah !quit atau !exit untuk keluar dari klien Beeline.

Gunakan JDBC untuk terhubung ke Hive

Penting

Sebelum melakukan langkah-langkah berikut, pastikan bahwa Anda telah menyiapkan lingkungan Java, menginstal alat pemrograman Java, dan mengonfigurasi variabel lingkungan.

  1. 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.

  2. 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));
            }
    
        }
    }
    Catatan

    Anda harus mengaktifkan port 10000. Untuk informasi lebih lanjut, lihat Kelola grup keamanan.

  3. Kemas proyek untuk menghasilkan file JAR dan unggah file JAR ke host untuk menjalankan file JAR.

    Penting

    Dependensi 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-common hilang, pesan kesalahan "java.lang.NoClassDefFoundError: org/apache/hadoop/conf/Configuration" akan muncul.

    • Jika hive-jdbc hilang, pesan kesalahan "java.lang.ClassNotFoundException: org.apache.hive.jdbc.HiveDriver" akan muncul.

    Dalam contoh ini, file JAR emr-hiveserver2-1.0.jar dihasilkan. Anda harus mengunggah file tersebut ke node master-1-1 dari kluster EMR.

  4. Periksa apakah file JAR dapat berjalan dengan benar.

    Penting

    Kami 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 10000

    • Jaringan 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

  1. 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.local

      Jika 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>
      Catatan

      Jika Anda menggunakan server KDC mandiri di EMR, perhatikan item berikut:

      • <admin-user>: Atur nilainya menjadi root/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:
  2. Buat principal bernama test.

    Dalam contoh ini, kata sandinya adalah 123456.

    addprinc -pw 123456 test

    Jika output berisi informasi berikut, principal telah dibuat:

    Principal "test@EMR.C-85D4B8D74296****.COM" created.
    Catatan

    Anda 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.

  3. Masuk ke node tempat Anda ingin menjalankan klien Hive. Jalankan perintah berikut untuk membuat dan beralih ke pengguna bernama test:

    useradd test
    su test
  4. Jalankan perintah berikut untuk membuat TGT:

    kinit

    Tekan Enter dan masukkan kata sandi pengguna test. Dalam contoh ini, kata sandinya adalah 123456.

  5. Jalankan perintah hive untuk terhubung ke klien Hive.

    hive

Gunakan klien Beeline untuk terhubung ke Hive

  1. 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.local

      Jika 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>
      Catatan

      Jika Anda menggunakan server KDC mandiri di EMR, perhatikan item berikut:

      • <admin-user>: Atur nilainya menjadi root/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:
  2. Buat principal bernama test.

    Dalam contoh ini, kata sandinya adalah 123456.

    addprinc -pw 123456 test

    Jika output berisi informasi berikut, principal telah dibuat:

    Principal "test@EMR.C-85D4B8D74296****.COM" created.
    Catatan

    Anda 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.

  3. Masuk ke node tempat Anda ingin menjalankan klien Hive. Jalankan perintah berikut untuk membuat dan beralih ke pengguna bernama test:

    useradd test
    su test
  4. Jalankan perintah berikut untuk membuat TGT:

    kinit

    Tekan Enter dan masukkan kata sandi pengguna test. Dalam contoh ini, kata sandinya adalah 123456.

  5. 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 perintah hostname -f pada 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.

      image

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'

FAQ

Apa yang harus saya lakukan jika saya tidak dapat terhubung ke Hive melalui port tertentu?

Periksa masalah dari aspek berikut:

  • Periksa apakah HiveServer2 sedang berjalan.

    Jalankan perintah berikut pada node tempat HiveServer2 diterapkan untuk memeriksa apakah proses layanan ada di port tertentu. Secara default, port 10000 digunakan.

    netstat -tulnp | grep 10000

    Periksa apakah proses layanan HiveServer2 ada di hasilnya. Jika tidak ada proses layanan terkait, periksa log startup HiveServer2 dan pastikan bahwa HiveServer2 dimulai seperti yang diharapkan.

  • Periksa apakah port 10000 diaktifkan untuk grup keamanan.

    Di bagian Keamanan dari tab Basic Information di konsol EMR, klik tautan di sebelah kanan Cluster Security Group. Di tab Security Group Details, periksa apakah port 10000 diaktifkan. Jika port tidak diaktifkan, aktifkan port 10000 untuk grup keamanan. Untuk informasi lebih lanjut, lihat Kelola grup keamanan.

Bagaimana cara saya terhubung ke Hive jika Ketersediaan Layanan Tinggi dan Autentikasi Kerberos diaktifkan untuk kluster?

Buat principal Kerberos dan peroleh Tiket Pemberian Tiket (TGT). Kemudian, gunakan JDBC untuk terhubung ke Hive. Untuk informasi lebih lanjut, lihat Seimbangkan beban HiveServer2.