Setelah mengonfigurasi katalog Hive, Anda dapat langsung membaca metadata Hive di Konsol pengembangan Realtime Compute for Apache Flink tanpa perlu mendaftarkan tabel Hive secara manual. Hal ini meningkatkan efisiensi pengembangan pekerjaan dan memastikan akurasi data. Topik ini menjelaskan cara mengonfigurasi metadata Hive serta membuat dan menggunakan katalog Hive.
Latar Belakang
Untuk mengonfigurasi katalog Hive di Konsol pengembangan Realtime Compute for Apache Flink, simpan terlebih dahulu file konfigurasi katalog Hive dan dependensi Hadoop ke direktori tertentu di Konsol Object Storage Service (OSS). Setelah katalog Hive dikonfigurasi, Anda dapat menggunakan pernyataan DML untuk membuat logika bisnis dan mengambil metadata tabel Hive secara langsung di Konsol pengembangan, sehingga tidak perlu lagi menggunakan pernyataan DDL untuk mendeklarasikan tabel. Tabel katalog Hive dapat berfungsi sebagai tabel sumber atau tabel hasil untuk penerapan streaming maupun batch.
Realtime Compute for Apache Flink mendukung metastore Hive atau Alibaba Cloud Data Lake Formation (DLF) sebagai pusat metadata untuk katalog Hive. Topik ini menjelaskan operasi berikut untuk mengelola katalog Hive:
Prasyarat
Untuk menggunakan Hive MetaStore atau Alibaba Cloud DLF sebagai pusat manajemen metadata untuk Katalog Hive, lengkapi konfigurasi berikut:
-
Menggunakan Hive MetaStore sebagai pusat manajemen metadata untuk Katalog Hive
Persyaratan
Deskripsi
Aktifkan layanan Hive MetaStore.
Gunakan perintah berikut:
-
Untuk memulai layanan Hive MetaStore:
hive --service metastore -
Untuk memeriksa apakah layanan Hive MetaStore telah diaktifkan:
netstat -ln | grep 9083Nomor port default untuk Hive MetaStore adalah 9083. Jika Anda mengonfigurasi nomor port berbeda di file hive-site.xml, ganti 9083 dengan nomor port yang benar.
Konfigurasikan daftar putih pada Hive MetaStore untuk mengizinkan akses dari Flink.
Untuk mendapatkan Blok CIDR untuk Flink, lihat Konfigurasikan daftar putih. Untuk mengonfigurasi daftar putih Hive MetaStore, lihat Tambahkan aturan grup keamanan.
-
-
Menggunakan Alibaba Cloud DLF sebagai pusat manajemen metadata untuk Katalog Hive
Aktifkan Alibaba Cloud DLF.
Batasan
-
Hanya metastore Hive yang dikelola sendiri yang didukung.
-
Hanya Ververica Runtime (VVR) 6.x yang mendukung Hive 1.x, 2.1.x, dan 2.2.x, karena dukungan untuk versi-versi tersebut telah dihentikan di Apache Flink 1.16 dan versi setelahnya.
-
Jika katalog Hive menggunakan Data Lake Formation (DLF) sebagai metastore-nya, hanya Ververica Runtime (VVR) 8.0.6 atau versi lebih baru yang mendukung pembuatan tabel non-Hive.
-
Hanya Ververica Runtime (VVR) 8.0.6 atau versi lebih baru yang mendukung penulisan data ke OSS-HDFS.
Konfigurasikan metadata Hive
-
Hubungkan Virtual Private Cloud (VPC) kluster Hadoop ke VPC Realtime Compute for Apache Flink.
Hubungkan VPC menggunakan Alibaba Cloud DNS PrivateZone. Untuk informasi selengkapnya, lihat Resolver. Setelah jaringan terhubung, Realtime Compute for Apache Flink menggunakan file konfigurasi kluster Hadoop untuk mengaksesnya.
-
Katalog Hive dapat menggunakan Hive MetaStore atau Data Lake Formation (DLF) untuk manajemen metadata. Bagian berikut menjelaskan konfigurasi yang diperlukan.
Hive MetaStore
Pastikan parameter hive.metastore.uris dalam file konfigurasi hive-site.xml dikonfigurasi dengan benar.
<property> <name>hive.metastore.uris</name> <value>thrift://xx.yy.zz.mm:9083</value> <description>Thrift URI for the remote metastore. Used by metastore client to connect to remote metastore.</description> </property>Pada contoh di atas,
xx.yy.zz.mmadalah alamat IP internal atau Alamat IP publik Hive MetaStore.CatatanJika Anda mengatur hive.metastore.uris ke hostname, Anda harus mengonfigurasi layanan resolusi nama domain. Jika tidak, saat Konsol pengembangan Flink mengakses Hive secara remote, nilai parameter hive.metastore.uris tidak dapat diselesaikan, dan error
UnknownHostExceptionakan dilaporkan. Untuk informasi lebih lanjut tentang cara mengonfigurasi layanan resolusi nama domain, lihat Tambahkan catatan PrivateZone.Data Lake Formation (DLF)
Untuk mengizinkan katalog Hive mengakses DLF, tambahkan properti berikut ke file konfigurasi hive-site.xml.
CatatanJika file hive-site.xml Anda berisi properti dlf.catalog.akMode, Anda harus menghapusnya. Jika tidak, katalog Hive tidak dapat mengakses DLF.
<property> <name>hive.imetastoreclient.factory.class</name> <value>com.aliyun.datalake.metastore.hive2.DlfMetaStoreClientFactory</value> </property> <property> <name>dlf.catalog.uid</name> <value>${YOUR_DLF_CATALOG_UID}</value> </property> <property> <name>dlf.catalog.endpoint</name> <value>${YOUR_DLF_ENDPOINT}</value> </property> <property> <name>dlf.catalog.region</name> <value>${YOUR_DLF_CATALOG_REGION}</value> </property> <property> <name>dlf.catalog.accessKeyId</name> <value>${YOUR_ACCESS_KEY_ID}</value> </property> <property> <name>dlf.catalog.accessKeySecret</name> <value>${YOUR_ACCESS_KEY_SECRET}</value> </property>Parameter
Deskripsi
Keterangan
dlf.catalog.uid
ID akun Alibaba Cloud Anda.
Untuk informasi akun Anda, buka halaman Informasi Pengguna.
dlf.catalog.endpoint
Titik akhir layanan DLF.
Untuk informasi selengkapnya, lihat Wilayah dan titik akhir.
Catatan-
Kami menyarankan agar Anda mengatur parameter dlf.catalog.endpoint ke titik akhir VPC DLF. Misalnya, jika wilayah yang Anda pilih adalah Tiongkok (Hangzhou), atur parameter dlf.catalog.endpoint ke dlf-vpc.cn-hangzhou.aliyuncs.com.
-
Untuk mengakses DLF lintas VPC, lihat Bagaimana cara mengakses layanan lintas VPC?.
dlf.catalog.region
Wilayah layanan DLF.
Untuk informasi selengkapnya, lihat Wilayah dan titik akhir.
CatatanPastikan wilayah ini sesuai dengan yang ditentukan dalam parameter dlf.catalog.endpoint.
dlf.catalog.accessKeyId
ID AccessKey Alibaba Cloud Anda.
Untuk informasi selengkapnya, lihat Dapatkan Pasangan Kunci Akses.
dlf.catalog.accessKeySecret
Rahasia AccessKey Alibaba Cloud Anda.
Untuk informasi selengkapnya, lihat Dapatkan Pasangan Kunci Akses.
-
-
Katalog Hive dapat menyimpan tabel di Object Storage Service (OSS) atau layanan OSS-HDFS. Bagian berikut menjelaskan konfigurasi yang diperlukan.
OSS
Untuk mengizinkan katalog Hive mengakses OSS, tambahkan properti berikut ke file konfigurasi hive-site.xml.
<property> <name>fs.oss.impl.disable.cache</name> <value>true</value> </property> <property> <name>fs.oss.impl</name> <value>org.apache.hadoop.fs.aliyun.oss.AliyunOSSFileSystem</value> </property> <property> <name>hive.metastore.warehouse.dir</name> <value>${YOUR_OSS_WAREHOUSE_DIR}</value> </property> <property> <name>fs.oss.endpoint</name> <value>${YOUR_OSS_ENDPOINT}</value> </property> <property> <name>fs.oss.accessKeyId</name> <value>${YOUR_ACCESS_KEY_ID}</value> </property> <property> <name>fs.oss.accessKeySecret</name> <value>${YOUR_ACCESS_KEY_SECRET}</value> </property> <property> <name>fs.defaultFS</name> <value>oss://${YOUR_OSS_BUCKET_DOMIN}</value> </property>Tabel berikut menjelaskan parameter-parameter tersebut.
Parameter
Deskripsi
Keterangan
hive.metastore.warehouse.dir
Jalur penyimpanan untuk data tabel.
fs.oss.endpoint
Titik akhir Object Storage Service (OSS).
Untuk informasi selengkapnya, lihat Wilayah dan titik akhir.
fs.oss.accessKeyId
ID AccessKey Alibaba Cloud Anda.
Untuk informasi selengkapnya, lihat Dapatkan Pasangan Kunci Akses.
fs.oss.accessKeySecret
Rahasia AccessKey Alibaba Cloud Anda.
Untuk informasi selengkapnya, lihat Dapatkan Pasangan Kunci Akses.
fs.defaultFS
Sistem file default untuk data tabel.
Tentukan bucket OSS Anda sebagai sistem file default. Contohnya,
oss://your-bucket-name.OSS-HDFS
-
Untuk mengizinkan katalog Hive mengakses layanan OSS-HDFS, tambahkan properti berikut ke file konfigurasi hive-site.xml.
<property> <name>fs.jindo.impl</name> <value>com.aliyun.jindodata.jindo.JindoFileSystem</value> </property> <property> <name>hive.metastore.warehouse.dir</name> <value>${YOUR_OSS_WAREHOUSE_DIR}</value> </property> <property> <name>fs.oss.endpoint</name> <value>${YOUR_OSS_ENDPOINT}</value> </property> <property> <name>fs.oss.accessKeyId</name> <value>${YOUR_ACCESS_KEY_ID}</value> </property> <property> <name>fs.oss.accessKeySecret</name> <value>${YOUR_ACCESS_KEY_SECRET}</value> </property> <property> <name>fs.defaultFS</name> <value>oss://${YOUR_OSS_HDFS_BUCKET_DOMIN}</value> </property>Parameter
Deskripsi
Keterangan
hive.metastore.warehouse.dir
Jalur penyimpanan untuk data tabel.
fs.oss.endpoint
Titik akhir Object Storage Service (OSS).
Untuk informasi selengkapnya, lihat Wilayah dan titik akhir.
fs.oss.accessKeyId
ID AccessKey Alibaba Cloud Anda.
Untuk informasi selengkapnya, lihat Dapatkan Pasangan Kunci Akses.
fs.oss.accessKeySecret
Rahasia AccessKey Alibaba Cloud Anda.
Untuk informasi selengkapnya, lihat Dapatkan Pasangan Kunci Akses.
fs.defaultFS
Sistem file default untuk data tabel.
Tentukan bucket OSS Anda sebagai sistem file default. Contohnya,
oss://your-bucket-name. -
(Opsional) Untuk membaca tabel Hive berformat Parquet dari layanan OSS-HDFS, tambahkan parameter berikut ke file konfigurasi Realtime Compute for Apache Flink:
fs.oss.jindo.accessKeyId: ${YOUR_ACCESS_KEY_ID} fs.oss.jindo.accessKeySecret: ${YOUR_ACCESS_KEY_SECRET} fs.oss.jindo.endpoint: ${YOUR_JINODO_ENDPOINT} fs.oss.jindo.buckets: ${YOUR_JINDO_BUCKETS}Untuk informasi selengkapnya tentang parameter tersebut, lihat Tulis data ke OSS-HDFS.
CatatanJika Anda menggunakan fitur penyimpanan terkelola penuh dari Realtime Compute for Apache Flink, Anda tidak perlu melakukan langkah-langkah berikut. Anda dapat langsung melanjutkan ke Buat katalog Hive.
-
-
Di Konsol OSS, buat direktori dan unggah file konfigurasi Hive serta dependensi Hadoop ke jalur target.
-
Masuk ke Konsol OSS.
-
Di panel navigasi sebelah kiri, klik Buckets.
-
Klik nama bucket target.
-
Di jalur oss://${bucket}/artifacts/namespaces/${ns}/, buat direktori bernama ${hms}.
Untuk informasi selengkapnya tentang cara membuat direktori di Konsol OSS, lihat Buat direktori. Tabel berikut menjelaskan variabel dalam jalur tersebut.
Parameter
Deskripsi
${bucket}
Nama bucket yang digunakan oleh Realtime Compute for Apache Flink.
${ns}
Ruang kerja tempat Anda akan menggunakan katalog Hive.
${hms}
Kami menyarankan menggunakan nama yang sama dengan katalog Hive yang akan Anda buat.
CatatanSetelah Anda mengaktifkan ruang kerja, Realtime Compute for Apache Flink secara otomatis membuat direktori /artifacts/namespaces/${ns}/ di bucket yang ditentukan untuk menyimpan data seperti paket JAR. Jika Anda tidak menemukan direktori ini di Konsol OSS, buka halaman Artifacts di Konsol pengembangan dan unggah file untuk memicu pembuatan direktori.
-
Di jalur oss://${bucket}/artifacts/namespaces/${ns}/${hms}, buat dua direktori: hive-conf-dir dan hadoop-conf-dir. Untuk informasi selengkapnya, lihat Buat direktori.
Simpan file-file berikut di direktori hive-conf-dir dan hadoop-conf-dir:
-
Direktori oss://${bucket}/artifacts/namespaces/${ns}/${hms}/hive-conf-dir/ menyimpan file konfigurasi Hive hive-site.xml.
-
Direktori oss://${bucket}/artifacts/namespaces/${ns}/${hms}/hadoop-conf-dir/ menyimpan file konfigurasi Hadoop, termasuk core-site.xml, hdfs-site.xml, yarn-site.xml, dan mapred-site.xml.
Setelah membuat direktori, Anda dapat melihatnya dan menyalin URL OSS-nya di halaman Files.
-
-
Unggah file konfigurasi Hive Anda (hive-site.xml) ke direktori hive-conf-dir. Untuk informasi selengkapnya, lihat Unggah objek.
-
Unggah file konfigurasi berikut ke direktori hadoop-conf-dir. Untuk informasi selengkapnya, lihat Unggah objek.
-
core-site.xml
-
hdfs-site.xml
-
mapred-site.xml
-
File lainnya, seperti paket terkompresi yang digunakan oleh pekerjaan Hive.
-
-
Buat katalog Hive
Setelah Anda mengonfigurasi metadata Hive, Anda dapat membuat katalog Hive. Anda dapat membuat katalog melalui UI atau dengan menjalankan perintah SQL. Kami menyarankan Anda menggunakan UI.
UI
-
Buka halaman Catalogs.
-
Masuk ke Konsol Realtime Compute for Apache Flink. Di kolom Actions ruang kerja target, klik Console.
-
Di panel navigasi sebelah kiri, klik Catalogs.
-
-
Klik Create Catalog. Di halaman yang muncul, pilih Hive lalu klik Next.
-
Konfigurasikan parameter.
PentingAnda tidak dapat mengubah parameter konfigurasi setelah katalog dibuat. Untuk melakukan perubahan, Anda harus menghapus katalog yang ada dan membuat yang baru.
Parameter
Deskripsi
Catalog name
Nama katalog Hive.
hive-version
Versi metastore Hive.
Realtime Compute for Apache Flink mendukung versi Hive 2.0.0 hingga 2.3.9 dan 3.1.0 hingga 3.1.3. Saat membuat katalog Hive, atur parameter hive-version sebagai berikut:
-
Untuk Hive 2.0.x dan 2.1.x, atur parameter ini ke 2.2.0.
-
Untuk Hive 2.2.x, 2.3.x, dan 3.1.x, atur parameter ini ke 2.2.0, 2.3.6, dan 3.1.2, masing-masing.
default-database
Nama database default.
hive-conf-dir
-
OSS: Direktori tempat file konfigurasi Hive disimpan. Anda harus membuat direktori
hive-conf-dirterlebih dahulu. Untuk informasi selengkapnya, lihat Konfigurasikan metadata Hive. -
fully managed storage: Unggah file yang sesuai seperti yang diminta di konsol.
hadoop-conf-dir
-
OSS: Direktori tempat dependensi Hadoop disimpan. Anda harus membuat direktori
hadoop-conf-dirterlebih dahulu. Untuk informasi selengkapnya, lihat Konfigurasikan metadata Hive. -
fully managed storage: Unggah file yang sesuai seperti yang diminta di konsol.
hive-kerberos
Mengaktifkan Otentikasi Kerberos. Anda perlu mengonfigurasi kluster Kerberos terdaftar dan principal. Jika Anda belum mendaftarkan kluster Kerberos, lihat Daftarkan kluster Hive yang di-Kerberos.
-
-
Klik Confirm.
-
Di bagian Catalogs di sebelah kiri, lihat katalog yang telah dibuat.
SQL
-
Di editor pada halaman Scripts, masukkan pernyataan berikut.
CREATE CATALOG ${HMS Name} WITH ( 'type' = 'hive', 'default-database' = 'default', 'hive-version' = '<hive-version>', 'hive-conf-dir' = '<hive-conf-dir>', 'hadoop-conf-dir' = '<hadoop-conf-dir>' );Parameter
Deskripsi
${HMS Name}
Nama katalog Hive.
type
Jenis konektor. Nilainya harus hive.
default-database
Nama database default.
hive-version
Versi metastore Hive.
Realtime Compute for Apache Flink mendukung versi Hive 2.0.0 hingga 2.3.9 dan 3.1.0 hingga 3.1.3. Saat membuat katalog Hive, atur parameter hive-version sebagai berikut:
-
Untuk Hive 2.0.x dan 2.1.x, atur parameter ini ke 2.2.0.
-
Untuk Hive 2.2.x, 2.3.x, dan 3.1.x, atur parameter ini ke 2.2.0, 2.3.6, dan 3.1.2, masing-masing.
hive-conf-dir
Direktori tempat file konfigurasi Hive disimpan. Anda harus membuat direktori
hive-conf-dirterlebih dahulu. Untuk informasi selengkapnya, lihat Konfigurasikan metadata Hive.hadoop-conf-dir
Direktori tempat dependensi Hadoop disimpan. Anda harus membuat direktori
hadoop-conf-dirterlebih dahulu. Untuk informasi selengkapnya, lihat Konfigurasikan metadata Hive. -
-
Pilih pernyataan CREATE CATALOG dan klik Run di sebelah kiri nomor baris.
Setelah Anda mengonfigurasi katalog Hive, Anda dapat mereferensikan tabelnya dalam pekerjaan Anda sebagai tabel hasil dan tabel dimensi tanpa perlu mendeklarasikannya dalam pernyataan DDL. Nama tabel harus dalam format ${hive-catalog-name}.${hive-db-name}.${hive-table-name}.
Untuk berhenti menggunakan katalog Hive, lihat Hapus katalog Hive.
Gunakan katalog Hive
Buat tabel Hive
UI
-
Buka halaman Catalogs.
-
Masuk ke Konsol Realtime Compute for Apache Flink. Di kolom Actions ruang kerja yang diinginkan, klik Console.
-
Di panel navigasi sebelah kiri, klik Catalogs.
-
-
Temukan katalog yang diinginkan dan klik View di kolom Actions.
-
Temukan database yang diinginkan dan klik View di kolom Actions.
-
Klik Create Table.
-
Di tab Built-in, pilih konektor dan klik Next.
-
Masukkan pernyataan CREATE TABLE dan konfigurasikan parameternya.
CREATE TABLE `${catalog_name}`.`${db_name}`.`${table_name}` ( id INT, name STRING ) WITH ( 'connector' = 'hive' ); -
Klik OK.
Perintah SQL
-
Di editor Scripts, masukkan perintah berikut:
CREATE TABLE `${catalog_name}`.`${db_name}`.`${table_name}` ( id INT, name STRING ) WITH ( 'connector' = 'hive' ); -
Pilih pernyataan tersebut dan klik Run di sebelah kiri nomor baris.
Contoh:
-- Buat tabel flink_hive_test di database flinkhive dari katalog flinkexporthive.
CREATE TABLE `flinkexporthive`.`flinkhive`.`flink_hive_test` (
id INT,
name STRING
) WITH (
'connector' = 'hive'
);
Ubah tabel Hive
Di editor Scripts, masukkan perintah berikut.
-- Tambahkan kolom ke tabel Hive.
ALTER TABLE `${catalog_name}`.`${db_name}`.`${table_name}`
ADD column type-column;
-- Hapus kolom dari tabel Hive.
ALTER TABLE `${catalog_name}`.`${db_name}`.`${table_name}`
DROP column;
Contoh:
-- Tambahkan kolom color ke tabel Hive.
ALTER TABLE `flinkexporthive`.`flinkhive`.`flink_hive_test`
ADD color STRING;
-- Hapus kolom color dari tabel Hive.
ALTER TABLE `flinkexporthive`.`flinkhive`.`flink_hive_test`
DROP color;
Baca data dari tabel Hive
INSERT INTO ${other_sink_table}
SELECT ...
FROM `${catalog_name}`.`${db_name}`.`${table_name}`;
Tulis data ke tabel Hive
INSERT INTO `${catalog_name}`.`${db_name}`.`${table_name}`
SELECT ...
FROM ${other_source_table};
Hapus tabel Hive
UI
-
Buka halaman Catalogs.
-
Masuk ke Konsol Realtime Compute for Apache Flink. Pada kolom Actions untuk ruang kerja yang diinginkan, klik Console.
-
Di panel navigasi sebelah kiri, klik Catalogs.
-
-
Di panel Catalogs, perluas katalog dan database yang diinginkan, lalu klik tabel yang ingin dihapus.
-
Di halaman detail tabel, klik Delete Table.
-
Di kotak dialog konfirmasi, klik OK.
Perintah SQL
Di editor Scripts, masukkan perintah berikut:
-- Hapus tabel Hive.
DROP TABLE `${catalog_name}`.`${db_name}`.`${table_name}`;
Contoh:
-- Hapus tabel Hive.
DROP TABLE `flinkexporthive`.`flinkhive`.`flink_hive_test`;
Lihat katalog Hive
-
Buka halaman Catalogs.
-
Masuk ke Konsol Realtime Compute for Apache Flink.
-
Di kolom Actions ruang kerja target, klik Console.
-
Klik Catalogs.
-
-
Di halaman Catalog List, periksa kolom Name dan Type.
CatatanUntuk melihat database dan tabel dalam katalog, klik View di kolom Actions.
Hapus katalog Hive
Menghapus katalog Hive tidak memengaruhi penerapan yang sedang Berjalan. Namun, hal ini memengaruhi penerapan offline atau penerapan yang perlu dijeda dan dilanjutkan. Harap berhati-hati.
UI
-
Buka halaman Catalog List.
-
Masuk ke Konsol Realtime Compute for Apache Flink, dan di kolom Actions ruang kerja target, klik Console.
-
Klik Catalogs.
-
-
Di halaman Catalog List, temukan katalog yang ingin dihapus dan klik Delete di kolom Actions.
-
Di kotak dialog konfirmasi, klik Delete.
-
Di area Catalogs di sebelah kiri, verifikasi bahwa katalog telah dihapus.
Perintah SQL
-
Di editor script, masukkan perintah berikut.
DROP CATALOG ${HMS Name};Dalam perintah ini, ${HMS Name} adalah nama katalog Hive yang akan dihapus.
-
Pilih perintah tersebut, klik kanan, lalu pilih Run.
-
Di area Catalogs di sebelah kiri, verifikasi bahwa katalog telah dihapus.