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.
Proyek MaxCompute dan kluster Hadoop harus berada di wilayah yang sama.
Aktifkan dukungan skema untuk proyek MaxCompute Anda.
Login ke Konsol MaxCompute dan pilih wilayah di pojok kiri atas.
Pada panel navigasi di sebelah kiri, pilih .
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.
Login ke Konsol E-MapReduce dan pilih wilayah di pojok kiri atas.
Pada halaman My Clusters, klik Create Cluster.
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), danYARN(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_namejavax.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.
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
PentingGrup 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.
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.
Login ke node master kluster dan siapkan data di Hive.
Dapatkan alamat IP publik dan nama node
Login ke Konsol E-MapReduce dan pilih wilayah di pojok kiri atas.
Klik Nodes untuk kluster target.
Pada tab Nodes, klik ikon
di baris kelompok node untuk mendapatkan Public IP Address dan Node Name/ID.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 , 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.
Login ke node master kluster
Login ke Konsol E-MapReduce dan pilih wilayah di pojok kiri atas.
Klik Nodes untuk kluster target.
Pada tab Nodes, klik ikon
di baris kelompok node, lalu klik ID node untuk membuka halaman detail Instance.Pada halaman Instance untuk node tertentu, klik Connect.
Pada kotak dialog Remote connection, dengan opsi default Workbench yang dipilih, klik Sign in now.
Pada jendela login, masukkan informasi instance sesuai kebutuhan.
CatatanSaat 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.
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
Login ke Konsol MaxCompute dan pilih wilayah di pojok kiri atas.
Pada panel navigasi di sebelah kiri, pilih .
Pada halaman External Data Source, klik Create External Data Source.
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.
PentingVPC 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:
Login ke Konsol E-MapReduce dan pilih wilayah di pojok kiri atas.
Klik ID kluster target untuk membuka halaman detail kluster.
Pada tab Services, klik Configure untuk layanan HDFS guna membuka halaman Configure.
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:
Login ke Konsol E-MapReduce dan pilih wilayah di pojok kiri atas.
Klik ID kluster target untuk membuka halaman detail kluster.
Pada tab Services, klik Status pada layanan HDFS untuk membuka halaman Status.
Di area Components, klik ikon
di samping NameNode untuk memperluas daftar topologi.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.
Login ke Konsol E-MapReduce dan pilih wilayah di pojok kiri atas.
Klik ID kluster target untuk membuka halaman detail kluster.
Pada tab Services, klik Status untuk layanan Hive untuk membuka halaman Status.
Di area Components, klik ikon
di sebelah HiveRuntime untuk memperluas daftar topologi.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.
Klik OK untuk membuat sumber data eksternal.
Pada halaman External Data Source, temukan sumber data target dan klik Details di kolom Actions.
Langkah 4: Buat skema eksternal
Hubungkan ke proyek MaxCompute Anda.
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
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 OKPentingJika 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.
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
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 SalesLogin 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 |
+------------+------------+------------+-------------+