All Products
Search
Document Center

E-MapReduce:Metode koneksi Hive

Last Updated:Mar 27, 2026

Hubungkan ke Hive di kluster E-MapReduce (EMR) menggunakan klien Hive, Beeline, atau Java Database Connectivity (JDBC).

Prasyarat

Sebelum memulai, pastikan Anda telah:

  • Membuat kluster EMR dengan Hive terinstal dan mengaktifkan sakelar Assign Public Network IP pada node master. Untuk membuat kluster, lihat Create a cluster.

  • Masuk ke node master kluster. Lihat Log on to a cluster.

Jenis kluster yang dirujuk dalam topik ini:

Jenis kluster Deskripsi
Kluster umum Kerberos Authentication dan High Service Availability keduanya dimatikan
Kluster keamanan tinggi Kerberos Authentication diaktifkan
Kluster ketersediaan tinggi High Service Availability diaktifkan; ZooKeeper harus dipilih saat pembuatan kluster

Catatan penggunaan

  • Temukan nama node master dan alamat IP publik di tab Nodes. Lihat Log on to a cluster. Nama default node master adalah master-1-1. Untuk kluster Hadoop, yaitu emr-header-1.

    image

  • HiveServer2 tidak memverifikasi username dan password secara default. Untuk mengaktifkan otentikasi, aktifkan Lightweight Directory Access Protocol (LDAP) authentication. Lihat Use LDAP authentication.

Hubungkan ke Hive pada kluster umum

Gunakan klien Hive

Jalankan perintah berikut:

hive

Untuk keluar, jalankan quit; atau exit;.

Gunakan Beeline

Jalankan perintah berikut:

beeline -u jdbc:hive2://master-1-1:10000

Untuk keluar, jalankan !quit atau !exit.

Gunakan JDBC

Penting

Pastikan Anda telah menyiapkan lingkungan Java, menginstal tool pengembangan Java, dan mengonfigurasi variabel lingkungan sebelum melanjutkan.

  1. Tambahkan hadoop-common dan hive-jdbc sebagai dependensi dalam file pom.xml Anda:

    <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 tersebut sesuai dengan versi Hadoop-Common dan Hive di kluster EMR Anda. Periksa informasi ini di bagian Software Information pada tab Basic Information di Konsol EMR.

  2. Tulis kode untuk menghubungkan ke HiveServer2 dan melakukan kueri data:

    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();
            }
    
            // Ganti <Public IP address of the master node> dengan alamat IP publik sebenarnya
            Connection con = DriverManager.getConnection(
                "jdbc:hive2://<Public IP address of the master node>: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

    Metode ini memerlukan port 10000 terbuka. Untuk informasi lebih lanjut, lihat Manage security groups.

  3. Kemas proyek sebagai file JAR dan unggah ke host tempat Anda ingin menjalankannya.

    Penting

    File JAR memerlukan hadoop-common dan hive-jdbc untuk dijalankan. Jika lingkungan runtime Anda tidak menyertakan paket dependensi ini dalam variabel lingkungan, Anda harus mengunduh dan mengonfigurasinya atau mengemasnya bersama dalam file JAR. Jika dependensi ini tidak tersedia saat menjalankan file JAR, error berikut akan muncul:

    • hadoop-common tidak ditemukan: java.lang.NoClassDefFoundError: org/apache/hadoop/conf/Configuration

    • hive-jdbc tidak ditemukan: java.lang.ClassNotFoundException: org.apache.hive.jdbc.HiveDriver

    Dalam contoh ini, file JAR yang dihasilkan adalah emr-hiveserver2-1.0.jar. Unggah file JAR ini ke node master kluster E-MapReduce.

  4. Jalankan file JAR:

    Penting

    Server tempat Anda menjalankan file JAR dan kluster E-MapReduce harus berada dalam VPC dan security group yang sama serta memiliki konektivitas jaringan. Jika berada di VPC atau lingkungan jaringan yang berbeda, Anda harus menggunakan alamat IP publik untuk akses. Atau, Anda dapat menggunakan produk jaringan untuk membuat koneksi antara keduanya lalu menggunakan jaringan internal untuk akses. Untuk menguji konektivitas jaringan:

    • Jaringan publik: telnet <Public IP address of master-1-1> 10000

    • Jaringan internal: telnet <Internal IP address of master-1-1> 10000

    java -jar emr-hiveserver2-1.0.jar

Hubungkan ke Hive pada kluster keamanan tinggi

Kluster keamanan tinggi memerlukan otentikasi Kerberos. Sebelum menghubungkan dengan klien Hive atau Beeline, siapkan principal Kerberos dan peroleh Ticket Granting Ticket (TGT).

Siapkan otentikasi Kerberos

  1. Buka CLI admin Kerberos.

    • Di master-1-1 (node Key Distribution Center (KDC)), jalankan sebagai root:

      kadmin.local

      CLI siap digunakan ketika output mencakup:

      Authenticating as principal hadoop/admin@EMR.C-85D4B8D74296****.COM with password.
      kadmin.local:
    • Di node atau gateway lainnya, jalankan:

      kadmin -p <admin-user> -w <admin-password>

      Ganti placeholder berikut:

      Placeholder Nilai
      <admin-user> root/admin (untuk KDC yang dikelola sendiri di EMR)
      <admin-password> Nilai parameter admin_pwd, yang dapat ditemukan di tab Configure layanan Kerberos di Konsol EMR

      CLI siap digunakan ketika output mencakup:

      Authenticating as principal root/admin with password.
      kadmin:
  2. Buat principal Kerberos bernama test:

    Catatan

    Simpan username dan password — Anda memerlukannya untuk membuat TGT.

    addprinc -pw 123456 test

    Principal berhasil dibuat ketika output mencakup:

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

    Untuk keluar dari CLI admin, jalankan quit.

  3. Buat pengguna sistem dan beralih ke pengguna tersebut:

    useradd test
    su test
  4. Buat TGT:

    kinit

    Saat diminta, masukkan password untuk pengguna test (dalam contoh ini, 123456).

Gunakan klien Hive

Setelah menyelesaikan penyiapan Kerberos di atas, jalankan:

beeline -u "jdbc:hive2://master-1-1.c-56187feb57f0****.cn-hangzhou.emr.aliyuncs.com:10000/;principal=hive/_HOST@EMR.c-56187feb57f0****.COM"

Gunakan Beeline

Setelah menyelesaikan penyiapan Kerberos di atas, jalankan:

beeline -u "jdbc:hive2://master-1-1.c-56187feb57f0****.cn-hangzhou.emr.aliyuncs.com:10000/;principal=hive/_HOST@EMR.c-56187feb57f0****.COM"

Ganti nilai berikut berdasarkan kluster Anda:

Placeholder Cara mendapatkannya
master-1-1.c-56187feb57f0****.cn-hangzhou.emr.aliyuncs.com Hostname lengkap (fully qualified hostname) dari node HiveServer2 (biasanya master-1-1). Jalankan hostname -f di node tersebut untuk mendapatkan nilai ini.
EMR.c-56187feb57f0****.COM Nama realm. Cari parameter realm di tab Configure layanan Kerberos di Konsol EMR.
image

Hubungkan ke Hive pada kluster ketersediaan tinggi

Kluster ketersediaan tinggi menyediakan beberapa instans HiveServer2. Gunakan Beeline dengan mode service discovery yang sesuai dengan konfigurasi kluster Anda.

Gunakan Beeline dengan service discovery ZooKeeper

beeline -u 'jdbc:hive2://master-1-1:2181,master-1-2:2181,master-1-3:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2'

Gunakan Beeline dengan service discovery multi-server

beeline -u 'jdbc:hive2://master-1-1:10000,master-1-2:10000,master-1-3:10000/default;serviceDiscoveryMode=multiServers'

Pemecahan masalah

Tidak dapat terhubung ke Hive pada port 10000

Gejala: Koneksi ke HiveServer2 pada port 10000 mengalami timeout atau ditolak.

Penyebab: HiveServer2 tidak berjalan, atau security group tidak mengizinkan traffic pada port 10000.

Penyelesaian:

  1. Verifikasi bahwa HiveServer2 sedang berjalan. Di node tempat HiveServer2 dideploy, jalankan:

    netstat -tulnp | grep 10000

    Jika tidak ada proses yang muncul, HiveServer2 tidak berjalan. Periksa log startup HiveServer2 untuk mendiagnosis masalah.

  2. Verifikasi bahwa port 10000 terbuka di security group. Di Konsol EMR, buka tab Basic Information dan klik tautan di samping Cluster Security Group. Di tab Security Group Details, pastikan port 10000 terbuka. Jika belum, aktifkan. Lihat Manage security groups.

Ketersediaan tinggi dan otentikasi Kerberos diaktifkan bersamaan

Gejala: Kluster memiliki High Service Availability dan Kerberos Authentication yang diaktifkan, dan Anda perlu menghubungkan ke Hive.

Penyebab: Kombinasi ini memerlukan kredensial Kerberos dan endpoint HiveServer2 yang load-balanced, yang tidak ditangani secara otomatis oleh perintah Beeline standar.

Penyelesaian: Buat principal Kerberos dan peroleh TGT, lalu gunakan JDBC untuk terhubung. Lihat Balance the load of HiveServer2.