All Products
Search
Document Center

MaxCompute:Baca data Hadoop Hive menggunakan HMS dan HDFS

Last Updated:Mar 25, 2026

Topik ini menggunakan Hive pada E-MapReduce sebagai contoh untuk menjelaskan cara membuat skema eksternal di MaxCompute dan mengkueri data tabel Hive di Hadoop.

Catatan penggunaan

Fitur ini hanya didukung di wilayah China (Hangzhou), China (Shanghai), China (Beijing), China (Zhangjiakou), China (Shenzhen), China (Hong Kong), Singapura, dan Jerman (Frankfurt).

Prosedur

Langkah 1: Prasyarat

Lewati langkah ini jika Anda sudah memiliki data Hive.

  1. Aktifkan E-MapReduce.

  2. Buat proyek MaxCompute.

    Proyek MaxCompute dan kluster Hadoop harus berada di wilayah yang sama.

  3. Aktifkan dukungan skema untuk proyek MaxCompute Anda.

    1. Login ke Konsol MaxCompute dan pilih wilayah di pojok kiri atas.

    2. Pada panel navigasi di sebelah kiri, pilih Manage Configurations > Projects.

    3. Pada halaman Projects, klik Enable Schema di kolom Actions untuk proyek target.

Langkah 2: Siapkan data Hive

Lewati langkah ini jika Anda sudah memiliki data Hive.

  1. Login ke Konsol E-MapReduce dan pilih wilayah di pojok kiri atas.

  2. Pada halaman My Clusters, klik Create Cluster.

    1. Software Configuration

      Pada bilah menu atas, pilih kelompok sumber daya. Secara default, semua resource di bawah akun Anda akan ditampilkan. Konfigurasikan parameter lainnya sebagai berikut.

      Parameter

      Deskripsi

      Region

      • Kluster dibuat di wilayah yang dipilih. Wilayah tidak dapat diubah setelah kluster dibuat.

      • Proyek MaxCompute dan kluster Hadoop harus berada di wilayah yang sama.

      Business Scenario

      Untuk contoh ini, pilih Custom Cluster.

      Product Version

      Pilih versi. Disarankan menggunakan versi terbaru.

      High Service Availability

      Fitur ini dinonaktifkan secara default. Jika Anda mengaktifkan High Service Availability, EMR mendistribusikan node master di perangkat keras dasar yang berbeda untuk mengurangi risiko kegagalan.

      Optional Services (Select One At Least)

      Untuk contoh ini, pilih HADOOP-COMMON(3.2.1), HDFS(3.2.1), HIVE(3.1.3), dan YARN(3.2.1).

      Collect Service Operational Logs

      Pengumpulan log diaktifkan secara default.

      if you want to collect service operational logs, you can modify the collection status on the Basic Information tab of the cluster details page.

      Metadata

      Contoh ini menggunakan instans Self-managed RDS.

      Untuk informasi lebih lanjut tentang cara membuat instans RDS, lihat Buat instans RDS for MySQL dan konfigurasikan database.

      • For an EMR cluster that is used in the production environment, we recommend that you use independent ApsaraDB RDS for MySQL. For example, you can use ApsaraDB RDS for MySQL 5.7 of Alibaba Cloud high-availability edition.

      • Konfigurasikan informasi koneksi RDS di hivemetastore-site.xml:

        • javax.jdo.option.ConnectionURL

          Koneksi metadata Java Database Connectivity (JDBC). Contoh: jdbc:mysql://rds.host.name/hive_db_name

        • javax.jdo.option.ConnectionUserName

          Akun database untuk metadata.

        • javax.jdo.option.ConnectionPassword

          Password database untuk metadata.

      Konfigurasi di atas hanya untuk contoh ini. Untuk informasi lebih lanjut tentang cara membuat kluster analitik data lake di Konsol E-MapReduce, lihat Buat dan gunakan kluster DataLake.

    2. Hardware Configuration

      Parameter

      Deskripsi

      Billing Method

      • Subscription

      • Pay-as-you-go

      Untuk pengujian, gunakan Pay-as-you-go. Setelah pengujian selesai, Anda dapat melepas kluster tersebut dan membuat kluster Subscription untuk produksi.

      Zone

      Zona tidak dapat diubah setelah kluster dibuat. Pilih dengan cermat.

      VPC

      Pilih virtual private cloud (VPC) di wilayah tersebut. Jika belum ada, klik Create VPC. Setelah membuat VPC, klik Refresh untuk memilihnya.

      vSwitch

      Pilih vSwitch di zona VPC yang dipilih. Jika tidak tersedia vSwitch di zona tersebut, buat satu.

      Default Security Group

      Penting

      Grup keamanan tingkat lanjut yang dibuat di ECS tidak didukung.

      Jika Anda memiliki grup keamanan yang sedang digunakan, Anda dapat memilihnya atau membuat yang baru.

      Node Group

      Konfigurasikan kelompok node master, core, atau task sesuai kebutuhan bisnis Anda. Untuk informasi lebih lanjut, lihat Pilih hardware dan jaringan.

      Untuk contoh ini, aktifkan Assign Public Network IP untuk kelompok node master dan gunakan nilai default untuk parameter lainnya.

      Cluster Scaling

      Konfigurasikan aturan penskalaan.

    3. Basic Configuration

      Parameter

      Deskripsi

      Cluster Name

      Nama kluster. Nama harus terdiri dari 1 hingga 64 karakter dan dapat berisi karakter Tionghoa, huruf, angka, tanda hubung (-), dan garis bawah (_).

      Identity Credentials

      • Key Pair: Jika Anda ingin melakukan verifikasi identitas tanpa memasukkan password, Anda dapat menggunakan Key Pair. Untuk informasi lebih lanjut, lihat Kelola pasangan kunci SSH.

      • Password: Password yang digunakan untuk login remote ke node master kluster. Catat password ini. Anda akan membutuhkannya untuk login ke kluster.

  3. Login ke node master kluster dan siapkan data di Hive.

    1. Dapatkan alamat IP publik dan nama node

      1. Login ke Konsol E-MapReduce dan pilih wilayah di pojok kiri atas.

      2. Klik Nodes untuk kluster target.

      3. Pada tab Nodes, klik ikon image di baris kelompok node untuk mendapatkan Public IP Address dan Node Name/ID.

      4. Jika alamat IP publik node kosong, ini menunjukkan bahwa Attach Public IP tidak diaktifkan saat kluster dibuat. Dalam kasus ini, klik ID node untuk melihat instance details.

        Pada bagian Basic Information > Public IP Address, Anda dapat mengklik Associate EIP atau Assign Public IP Address.

        • Asosiasi dengan EIP: Buat dan asosiasikan Elastic IP Address (EIP). Untuk informasi lebih lanjut, lihat Elastic IP Address.

        • Assign Public IP Address: Atur bandwidth ke nilai lebih dari 0 Mbps. Sistem secara otomatis menetapkan alamat IP publik. Untuk informasi lebih lanjut, lihat Static public IP address.

        Gunakan EIP untuk mengelola alamat IP publik secara fleksibel, seperti menyesuaikan bandwidth atau mengalihkan resource. Gunakan alamat IP publik statis jika Anda hanya memerlukan egress publik tetap yang jarang berubah.

    2. Login ke node master kluster

      1. Login ke Konsol E-MapReduce dan pilih wilayah di pojok kiri atas.

      2. Klik Nodes untuk kluster target.

      3. Pada tab Nodes, klik ikon image di baris kelompok node, lalu klik ID node untuk membuka halaman detail Instance.

      4. Pada halaman Instance untuk node tertentu, klik Connect.

      5. Pada kotak dialog Remote connection, dengan opsi default Workbench yang dipilih, klik Sign in now.

      6. Pada jendela login, masukkan informasi instance sesuai kebutuhan.

        Catatan

        Saat Anda membuat pasangan kunci, kunci privat secara otomatis diunduh dan disimpan sebagai file .pem. Anda dapat memilih autentikasi kunci Secure Shell (SSH) dan mengunggah file kunci privat untuk melakukan verifikasi identitas tanpa password.

    3. Siapkan data uji Hive. Setelah login ke node master kluster menggunakan Workbench, jalankan perintah berikut di terminal:

      [user@emr-node ~]$ hive
      
      -- Buat database.
      hive> CREATE database IF NOT EXISTS myhive;
      
      -- Beralih ke database.
      hive> USE myhive;
      
      -- Buat tabel non-partisi.
      hive> CREATE TABLE IF NOT EXISTS employees (
              id INT,
              name STRING,
              age INT,
              department STRING
            )
            ROW FORMAT DELIMITED
            FIELDS TERMINATED BY ','
            STORED AS TEXTFILE;
      
      -- Masukkan data.
      hive> INSERT INTO employees VALUES(1, 'John', 25, 'Sales'),
          (2, 'Jane', 30, 'Marketing'),
          (3, 'Mike', 35, 'Engineering'),
          (4, 'Sarah', 28, 'HR'),
          (5, 'David', 32, 'Finance'),
          (6, 'Linda', 29, 'IT'),
          (7, 'Robert', 31, 'Operations'),
          (8, 'Emily', 27, 'Research'),
          (9, 'Michael', 33, 'Development'),
          (10, 'Chris', 26, 'Support');
      
      -- Buat tabel partisi.
      hive> CREATE TABLE employees_pt (
            id INT,
            name STRING,
            age INT
          )
        PARTITIONED BY (department STRING)
        ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';
      
      -- Masukkan data.
      INSERT INTO employees_pt PARTITION (department='Sales') VALUES(1, 'John', 25),(2, 'Jane', 30),(3, 'Mike', 35);
      INSERT INTO employees_pt PARTITION (department='Marketing') VALUES(4, 'Sarah', 28),(5, 'David', 32);
      INSERT INTO employees_pt PARTITION (department='Engineering') VALUES(6, 'Linda', 29),(7, 'Robert', 31);
      INSERT INTO employees_pt PARTITION (department='HR') VALUES(8, 'Emily', 27),(9, 'Michael', 33),(10, 'Chris', 26);

      Kueri tabel non-partisi dan tabel partisi:

      -- Kueri tabel non-partisi.
      hive> SELECT * FROM employees;
      
      1       John    25      Sales
      2       Jane    30      Marketing
      3       Mike    35      Engineering
      4       Sarah   28      HR
      5       David   32      Finance
      6       Linda   29      IT
      7       Robert  31      Operations
      8       Emily   27      Research
      9       Michael 33      Development
      10      Chris   26      Support
      
      -- Kueri tabel partisi.
      hive> SELECT * FROM employees_pt;
      
      6       Linda   29      Engineering
      7       Robert  31      Engineering
      8       Emily   27      HR
      9       Michael 33      HR
      10      Chris   26      HR
      4       Sarah   28      Marketing
      5       David   32      Marketing
      1       John    25      Sales
      2       Jane    30      Sales
      3       Mike    35      Sales

Langkah 3: Buat sumber data eksternal Hive+HDFS

  1. Login ke Konsol MaxCompute dan pilih wilayah di pojok kiri atas.

  2. Pada panel navigasi di sebelah kiri, pilih Manage Configurations > External Data Source.

  3. Pada halaman External Data Source, klik Create External Data Source.

  4. Pada dialog Create External Data Source, konfigurasikan parameter. Tabel berikut menjelaskan parameter tersebut.

    Parameter

    Wajib

    Deskripsi

    External Data Source Type

    Wajib

    Pilih Hive+HDFS.

    External Data Source Name

    Wajib

    Masukkan nama kustom. Konvensi penamaan sebagai berikut:

    • Nama harus dimulai dengan huruf dan hanya boleh berisi huruf kecil, garis bawah (_), dan angka.

    • Nama tidak boleh melebihi 128 karakter.

    Contoh: hive_hdfs_mc.

    Description

    Opsional

    Masukkan deskripsi sesuai kebutuhan.

    Network Connection Object

    Wajib

    Nama objek koneksi jaringan. Pilih atau buat koneksi dari MaxCompute ke jaringan VPC Alibaba Cloud E-MapReduce atau Hadoop.

    Penting

    VPC harus berada di wilayah yang sama dengan sumber data eksternal MaxCompute dan proyek tempat sumber data eksternal tersebut dilampirkan.

    Untuk informasi lebih lanjut tentang parameter tersebut, lihat langkah Create a network connection between MaxCompute and the target VPC network dalam VPC access solution (direct connection).

    Cluster Name

    Wajib

    Nama yang digunakan untuk merujuk NameNode dalam kluster Hadoop dengan ketersediaan tinggi (HA).

    Ambil contoh kluster EMR. Untuk mendapatkan nama kluster:

    1. Login ke Konsol E-MapReduce dan pilih wilayah di pojok kiri atas.

    2. Klik ID kluster target untuk membuka halaman detail kluster.

    3. Pada tab Services, klik Configure untuk layanan HDFS guna membuka halaman Configure.

    4. Beralih ke tab hdfs-site.xml. Di kolom By Name, cari dfs.nameservices. Nilai item konfigurasi ini adalah Cluster Name.

    NameNode Address

    Wajib

    Titik akhir dan nomor port layanan NameNode aktif dan cadangan dari kluster Hadoop target. Nomor port biasanya 8020.

    Ambil contoh kluster EMR. Untuk mendapatkan alamat NameNode:

    1. Login ke Konsol E-MapReduce dan pilih wilayah di pojok kiri atas.

    2. Klik ID kluster target untuk membuka halaman detail kluster.

    3. Pada tab Services, klik Status pada layanan HDFS untuk membuka halaman Status.

    4. Di area Components, klik ikon image di samping NameNode untuk memperluas daftar topologi.

    5. Dapatkan Private IP Address dari node master-1-1. NameNode Address berformat Internal IP:8020.

    HMS Service Address

    Wajib

    Titik akhir dan nomor port layanan metadata Hive dari NameNode aktif dan cadangan kluster Hadoop target. Nomor port biasanya 9083.

    1. Login ke Konsol E-MapReduce dan pilih wilayah di pojok kiri atas.

    2. Klik ID kluster target untuk membuka halaman detail kluster.

    3. Pada tab Services, klik Status untuk layanan Hive untuk membuka halaman Status.

    4. Di area Components, klik ikon image di sebelah HiveRuntime untuk memperluas daftar topologi.

    5. Dapatkan Private IP Address dari node master-1-1. HMS Service Address berformat Internal IP:9083.

    Authentication Type

    Ini wajib.

    Saat ini, hanya No Authentication yang didukung.

    Create vSwitch

    Wajib

    MaxCompute mengakses sumber data melalui VPC. Secara default, solusi reverse access 2.0 digunakan. Solusi ini mengharuskan Anda mengonfigurasi vSwitch di zona tertentu untuk membangun tautan akses metadata.

    Zona yang tersedia untuk vSwitch di setiap wilayah dijelaskan pada antarmuka pengguna. Di VPC tempat sumber data berada, pilih vSwitch yang sudah ada atau buat yang baru sesuai persyaratan zona.

  5. Klik OK untuk membuat sumber data eksternal.

  6. Pada halaman External Data Source, temukan sumber data target dan klik Details di kolom Actions.

Langkah 4: Buat skema eksternal

  1. Hubungkan ke proyek MaxCompute Anda.

  2. Gunakan kode berikut untuk membuat skema eksternal:

    -- Aktifkan sintaks skema. 
    SET odps.namespace.schema=true;
    
    CREATE EXTERNAL SCHEMA IF NOT EXISTS <YOUR_EXTERNAL_SCHEMA_NAME>
    WITH  <YOUR_EXTERNAL_DATASOURCE_NAME>
    ON 'myhive' ;

    Deskripsi parameter:

    • your_external_schema_name: Nama skema eksternal yang akan dibuat. Contoh: ex_hms_hdfs.

    • your_external_datasource_name: Nama sumber data eksternal yang dibuat di MaxCompute pada langkah sebelumnya. Proyek tempat skema eksternal dilampirkan harus berada di wilayah yang sama dengan sumber data eksternal. Contoh: hive_hdfs_mc.

    • myhive: Nama database Hive yang dibuat saat menyiapkan data Hive.

Langkah 5: Gunakan SQL untuk mengakses data Hadoop Hive

  1. Kueri tabel di skema eksternal.

    SET odps.namespace.schema=true;
    SHOW tables IN <YOUR_EXTERNAL_SCHEMA_NAME>;
    
    -- Hasil berikut dikembalikan:
    ALIYUN$xxx:employees
    ALIYUN$xxx:employees_pt
    
    OK
    Penting

    Jika kueri gagal, login ke Konsol RDS untuk memeriksa apakah VPC dan grup keamanan MaxCompute telah ditambahkan ke daftar putih RDS. Daftar putih memerlukan waktu minimal 5 menit untuk berlaku setelah grup keamanan ditambahkan.

  2. Kueri detail tabel skema eksternal.

    -- Kueri tabel non-partisi.
    SELECT * FROM <YOUR_EXTERNAL_SCHEMA_NAME>.employees;
    
    -- Hasil.
    +------------+------------+------------+------------+
    | id         | name       | age        | department | 
    +------------+------------+------------+------------+
    | 1          | John       | 25         | Sales      | 
    | 2          | Jane       | 30         | Marketing  | 
    | 3          | Mike       | 35         | Engineering | 
    | 4          | Sarah      | 28         | HR         | 
    | 5          | David      | 32         | Finance    | 
    | 6          | Linda      | 29         | IT         | 
    | 7          | Robert     | 31         | Operations | 
    | 8          | Emily      | 27         | Research   | 
    | 9          | Michael    | 33         | Development | 
    | 10         | Chris      | 26         | Support    | 
    +------------+------------+------------+------------+
    
    -- Kueri tabel partisi.
    SELECT * FROM <YOUR_EXTERNAL_SCHEMA_NAME>.employees_pt WHERE department='HR';
    
    -- Hasil.
    +------------+------------+------------+------------+
    | id         | name       | age        | department | 
    +------------+------------+------------+------------+
    | 8          | Emily      | 27         | HR         | 
    | 9          | Michael    | 33         | HR         | 
    | 10         | Chris      | 26         | HR         | 
    +------------+------------+------------+------------+

Langkah 6: Tambahkan data baru ke sumber data Hadoop

  1. Login ke node master kluster yang dibuat dengan EMR dan masukkan data partisi baru ke tabel partisi Hive:

    INSERT INTO employees_pt PARTITION (department='Computer') 
      VALUES(11, 'Cily', 29),(12, 'Miky', 35);
     
     -- Kueri tabel partisi di sisi Hive.
     hive> SELECT * FROM employees_pt;
     
     -- Hasil kueri.
     OK
    11      Cily    29      Computer
    12      Miky    35      Computer
    6       Linda   29      Engineering
    7       Robert  31      Engineering
    8       Emily   27      HR
    9       Michael 33      HR
    10      Chris   26      HR
    4       Sarah   28      Marketing
    5       David   32      Marketing
    1       John    25      Sales
    2       Jane    30      Sales
    3       Mike    35      Sales
  2. Login ke klien MaxCompute dan kueri data partisi baru di sisi MaxCompute:

    SELECT * FROM <YOUR_EXTERNAL_SCHEMA_NAME>.employees_pt WHERE department='Computer';
    
    -- Hasil.
    +------------+------------+------------+------------+
    | id         | name       | age        | department | 
    +------------+------------+------------+------------+
    | 11         | Cily       | 29         | Computer   | 
    | 12         | Miky       | 35         | Computer   | 
    +------------+------------+------------+------------+

Langkah 7: Salin data dari tabel eksternal federasi ke gudang data

-- Salin data dari tabel eksternal federasi ke gudang data.
CREATE TABLE employees_copy AS SELECT * FROM <YOUR_EXTERNAL_SCHEMA_NAME>.employees;

-- Kueri data tabel yang disalin di gudang data.
SELECT * FROM employees_copy;

-- Hasil berikut dikembalikan:
+------------+------------+------------+-------------+
| id         | name       | age        | department  | 
+------------+------------+------------+-------------+
| 1          | John       | 25         | Sales       | 
| 2          | Jane       | 30         | Marketing   | 
| 3          | Mike       | 35         | Engineering | 
| 4          | Sarah      | 28         | HR          | 
| 5          | David      | 32         | Finance     | 
| 6          | Linda      | 29         | IT          | 
| 7          | Robert     | 31         | Operations  | 
| 8          | Emily      | 27         | Research    | 
| 9          | Michael    | 33         | Development | 
| 10         | Chris      | 26         | Support     | 
+------------+------------+------------+-------------+