Mulai versi 2.2, Hologres mendukung Hive Metastore (HMS) sebagai sumber metadata untuk data lake yang dibangun di atas Object Storage Service (OSS). Jika data lake Anda berjalan pada kluster E-MapReduce (EMR) dengan OSS atau OSS-HDFS sebagai lapisan penyimpanan, Anda dapat menghubungkan Hologres ke HMS untuk mengkueri data OSS secara langsung menggunakan SQL—tanpa perlu memigrasi atau menyalin data.
Prasyarat
Sebelum memulai, pastikan Anda telah:
-
Layanan OSS telah diaktifkan. Lihat Mulai Cepat Konsol.
-
Memiliki kluster data lake EMR dengan data uji yang telah dimuat. Lihat 在EMR Hive或Spark中访问OSS-HDFS dan Create a cluster. Kluster tersebut harus memenuhi semua kondisi berikut:
-
Versi Hive 3.1.3 atau lebih baru
-
Otentikasi Kerberos dinonaktifkan
-
Metadata diatur ke Self-managed RDS atau Built-in MySQL
-
-
Memiliki instans Hologres dengan akselerasi data lake yang diaktifkan dan database yang telah dibuat. Lihat Purchase a Hologres instance dan Create a database.
Untuk mengaktifkan akselerasi data lake, buka Konsol Hologres. Pada kolom Actions instans target, klik Lake Acceleration dan konfirmasi.
-
Menyiapkan koneksi jaringan antara Hologres dan kluster EMR. Karena Hologres dideploy di jaringan klasik dan EMR berjalan di virtual private cloud (VPC), diperlukan titik akhir balik (reverse endpoint) agar kedua layanan dapat berkomunikasi. Kirim permintaan koneksi jaringan. Tim dukungan Hologres kemudian akan memandu Anda melalui langkah-langkah berikut:
-
Login ke Konsol VPC dan buat reverse endpoint. Lihat Access Alibaba Cloud services.
-
Untuk parameter Type, pilih Other Endpoint Services dan masukkan nama layanan titik akhir untuk wilayah tempat kluster EMR Anda berada:
Wilayah
Nama layanan titik akhir
China (Beijing)
com.aliyuncs.privatelink.cn-beijing.epsrv-2zeokrydzjd6kx3cbwmbChina (Shanghai)
com.aliyuncs.privatelink.cn-shanghai.epsrv-uf61fvlfwta7f7dv9n3xChina (Zhangjiakou)
com.aliyuncs.privatelink.cn-zhangjiakou.epsrv-8vbno4k4wwvys0eg2swp
Jika wilayah Anda tidak tercantum dalam daftar, tim Hologres akan membuat layanan titik akhir dan memberikan namanya setelah Anda mengirim permintaan. Koneksi menggunakan alamat IP. Jika alamat IP kluster EMR berubah, konfigurasi ulang koneksi tersebut.
-
Batasan
-
Instans Hologres secondary read-only tidak mendukung akselerasi data lake.
-
UPDATE,DELETE, danTRUNCATEtidak didukung pada tabel eksternal. -
Auto Load (pemetaan batch tabel eksternal dari HMS) tidak didukung.
-
Kluster EMR dengan otentikasi Kerberos yang diaktifkan tidak didukung.
Hubungkan Hologres ke HMS
Hologres menyediakan dua cara untuk terhubung ke HMS. Pilih salah satu berdasarkan versi instans Anda dan tingkat kontrol yang Anda butuhkan atas pemetaan kolom.
-
Metode 1: external database (direkomendasikan). Memerlukan Hologres V3.0 atau lebih baru. Database eksternal memetakan setiap database dan tabel HMS ke database eksternal, skema, dan tabel eksternal di Hologres sekaligus, sehingga Anda dapat mengkueri data dengan nama tiga bagian alih-alih membuat satu tabel eksternal dalam satu waktu.
-
Metode 2: hive_fdw. Gunakan metode ini pada Hologres V2.2 atau lebih baru tetapi sebelum V3.0, atau ketika Anda perlu memetakan subset kolom atau mengganti nama tabel.
Metode 1: Gunakan database eksternal (direkomendasikan)
-
Hubungkan ke instans Hologres Anda dan buat database eksternal. Langkah ini memerlukan izin superuser.
Untuk sintaks lengkap, lihat CREATE EXTERNAL DATABASE.
CREATE EXTERNAL DATABASE <EXTERNAL_DATABASE_NAME> owner '<ACCOUNT_NAME>' metastore_type 'hms' catalog_type 'hive' hive_metastore_uris 'thrift://<HIVE_METASTORE_IP>:<PORT>' metadata_cache_ttl_sec '600' metadata_cache_update_interval_sec '60' metadata_refresh_interval_sec '7200' oss_endpoint 'oss-<REGION_ID>-internal.aliyuncs.com' table_count_limitation_per_schema '2000' comment '<EXTERNAL_DATABASE_COMMENT>';Parameter
Deskripsi
Contoh
external_database_nameNama database eksternal.
catalog_hiveownerAkun Hologres yang memiliki database eksternal.
p4_<ACCOUNT_ID>metastore_typeJenis layanan metadata. Atur ke hms untuk Hive Metastore.
hmscatalog_typeJenis katalog. Atur ke hive untuk katalog Hive.
hivehive_metastore_urisURI Hive Metastore. Format: thrift://<HIVE_METASTORE_IP>:<PORT>. Port default adalah 9083.
thrift://10.0.0.1:9083metadata_cache_ttl_secOpsional. Durasi validitas metadata yang di-cache, dalam detik.
600 (default)metadata_cache_update_interval_secOpsional. Interval antara pembaruan cache metadata, dalam detik.
60 (default)metadata_refresh_interval_secOpsional. Interval antara penyegaran penuh metadata, dalam detik.
7200 (default)oss_endpointTitik akhir OSS. Untuk OSS native, gunakan titik akhir internal untuk performa lebih baik.
oss-cn-beijing-internal.aliyuncs.comtable_count_limitation_per_schemaOpsional. Jumlah maksimum tabel yang dimuat per skema.
2000 (default)commentOpsional. Deskripsi database eksternal.
holo-emr-hiveInterval cache dan batas jumlah tabel di atas merupakan nilai contoh. Sesuaikan nilainya dengan frekuensi pembaruan metadata dan jumlah tabel di HMS Anda.
-
(Opsional) Buat pemetaan pengguna.
Pemetaan pengguna menyediakan kredensial yang digunakan akun Hologres tertentu untuk membaca dari OSS. Untuk detailnya, lihat CREATE USER MAPPING.
CREATE USER MAPPING FOR <ACCOUNT_NAME> EXTERNAL DATABASE <EXTERNAL_DATABASE_NAME> OPTIONS ( oss_access_id '<ACCESS_KEY_ID>', oss_access_key '<ACCESS_KEY_SECRET>' ); -
Kueri tabel eksternal.
Setelah database eksternal tersedia, referensikan tabel apa pun dengan nama tiga bagian: database eksternal, database Hive, tabel Hive.
Tabel non-partisi:
SELECT * FROM <EXTERNAL_DATABASE_NAME>.<HIVE_DATABASE_NAME>.<HIVE_TABLE_NAME>;Tabel partisi: filter berdasarkan kunci partisi dalam klausa WHERE.
SELECT * FROM <EXTERNAL_DATABASE_NAME>.<HIVE_DATABASE_NAME>.<HIVE_PARTITION_TABLE_NAME> WHERE <PARTITION_KEY> = '<PARTITION_VALUE>';
Metode 2: Gunakan hive_fdw
Langkah 1: Buat ekstensi
Jalankan perintah SQL berikut untuk menginstal pembungkus data asing (FDW) hive_fdw. Operasi ini memerlukan izin superuser dan hanya perlu dijalankan sekali per database.
CREATE EXTENSION IF NOT EXISTS hive_fdw;
Langkah 2: Buat server asing
Buat server asing yang mengarah ke instans HMS dan penyimpanan OSS Anda.
Sebelum menjalankan perintah, kumpulkan nilai-nilai berikut:
-
Alamat IP HMS: Di Konsol E-MapReduce, klik Node Management untuk kluster Anda. Pada tab Node Management, temukan Internal IP node master.
-
Titik akhir OSS: Di Konsol OSS, buka halaman ikhtisar bucket dan periksa area Access Ports.
CREATE SERVER IF NOT EXISTS <SERVER_NAME> FOREIGN DATA WRAPPER hive_fdw
OPTIONS (
hive_metastore_uris 'thrift://<HIVE_METASTORE_IP>:<PORT>',
oss_endpoint '<OSS_ENDPOINT>'
);
|
Parameter |
Wajib |
Deskripsi |
Contoh |
|
|
Ya |
Nama kustom untuk server asing. |
|
|
|
Ya |
URI Hive Metastore. Format: |
|
|
|
Ya |
Titik akhir OSS. Untuk OSS native, gunakan titik akhir internal untuk performa lebih baik. Untuk OSS-HDFS, hanya akses jaringan internal yang didukung. |
Lihat contoh di bawah |
Untuk oss_endpoint, pilih berdasarkan jenis penyimpanan Anda:
-
OSS native: Gunakan titik akhir internal.
oss-cn-shanghai-internal.aliyuncs.com -
OSS-HDFS: Hanya akses jaringan internal yang didukung.
<BUCKET_NAME>.cn-beijing.oss-dls.aliyuncs.com
Langkah 3: (Opsional) Buat pemetaan pengguna
Pemetaan pengguna mengontrol akun Hologres mana yang dapat mengakses data eksternal melalui server asing. Misalnya, pemilik server asing dapat memberikan akses pengguna Resource Access Management (RAM) ke data OSS.
Untuk detail sintaks CREATE USER MAPPING, lihat dokumentasi PostgreSQL.
-- Berikan akses pengguna saat ini ke server asing
CREATE USER MAPPING FOR current_user SERVER <SERVER_NAME> OPTIONS (
dlf_access_id '<ACCESS_KEY_ID>',
dlf_access_key '<ACCESS_KEY_SECRET>',
oss_access_id '<ACCESS_KEY_ID>',
oss_access_key '<ACCESS_KEY_SECRET>'
);
-- Berikan akses pengguna RAM (123xxx) ke server asing
CREATE USER MAPPING FOR "p4_123xxx" SERVER <SERVER_NAME> OPTIONS (
dlf_access_id '<ACCESS_KEY_ID>',
dlf_access_key '<ACCESS_KEY_SECRET>',
oss_access_id '<ACCESS_KEY_ID>',
oss_access_key '<ACCESS_KEY_SECRET>'
);
-- Hapus pemetaan pengguna
DROP USER MAPPING FOR CURRENT_USER SERVER <SERVER_NAME>;
DROP USER MAPPING FOR "p4_123xxx" SERVER <SERVER_NAME>;
Langkah 4: Buat tabel asing
Hologres menyediakan dua perintah untuk membuat tabel asing:
|
Perintah |
Paling cocok untuk |
|
Jumlah tabel yang sedikit, atau ketika Anda perlu memetakan subset kolom atau memberikan nama tabel kustom. |
|
|
Pemetaan batch beberapa tabel dari skema eksternal. |
Hologres mendukung tabel partisi di OSS. Jenis kunci partisi yang didukung adalah TEXT, VARCHAR, dan INT.
Dengan CREATE FOREIGN TABLE: definisikan bidang partisi sebagai kolom biasa, karena perintah ini memetakan skema tanpa menyimpan data.
Dengan IMPORT FOREIGN SCHEMA: sistem menangani pemetaan bidang secara otomatis.
Jika nama tabel eksternal bentrok dengan tabel internal Hologres yang sudah ada,IMPORT FOREIGN SCHEMAmelewatkan tabel tersebut. GunakanCREATE FOREIGN TABLEuntuk memetakannya dengan nama berbeda.
-- Buat satu tabel asing
CREATE FOREIGN TABLE <HOLO_SCHEMA_NAME>.<TABLE_NAME>
(
column_name data_type
[, ...]
)
SERVER <SERVER_NAME>
OPTIONS (
schema_name '<HIVE_DATABASE_NAME>',
table_name '<HIVE_TABLE_NAME>'
);
-- Impor beberapa tabel asing secara batch
IMPORT FOREIGN SCHEMA <HIVE_DATABASE_NAME>
[
{ LIMIT TO | EXCEPT }
( table_name [, ...] )
]
FROM SERVER <SERVER_NAME>
INTO <HOLO_SCHEMA_NAME>
OPTIONS (
if_table_exist 'update',
if_unsupported_type 'error'
);
Langkah 5: Kueri tabel asing
Setelah membuat tabel asing, kueri langsung untuk membaca data dari OSS.
Tabel non-partisi:
SELECT * FROM <HOLO_SCHEMA_NAME>.<TABLE_NAME>;
Tabel partisi:
SELECT * FROM <HOLO_SCHEMA_NAME>.<PARTITION_TABLE_NAME>
WHERE <PARTITION_KEY> = '<PARTITION_VALUE>';