Bagikan melalui


Menggunakan database metastore Apache Hive eksternal

Penting

Fitur ini masih dalam mode pratinjau. Ketentuan Penggunaan Tambahan untuk Pratinjau Microsoft Azure mencakup lebih banyak persyaratan hukum yang berlaku untuk fitur Azure yang dalam versi beta, dalam pratinjau, atau belum dirilis ke ketersediaan umum. Untuk informasi tentang pratinjau khusus ini, lihat Azure HDInsight pada informasi pratinjau AKS. Untuk pertanyaan atau saran fitur, kirimkan permintaan di AskHDInsight dengan detail dan ikuti kami untuk pembaruan lebih lanjut di Komunitas Azure HDInsight.

Metastore Apache Hive digunakan sebagai repositori pusat untuk menyimpan metadata tentang data. Artikel ini menjelaskan cara menambahkan database metastore Apache Hive ke kluster Trino Anda dengan HDInsight di AKS. Ada dua cara:

  • Anda dapat menambahkan katalog Apache Hive dan menautkannya ke database metastore Apache Hive eksternal selama pembuatan kluster Trino.

  • Anda dapat menambahkan katalog Apache Hive dan melampirkan database metastore Apache Hive eksternal ke kluster Anda menggunakan pembaruan templat ARM.

Contoh berikut mencakup penambahan katalog Apache Hive dan database metastore ke kluster Anda menggunakan templat ARM.

Prasyarat

Catatan

  • Saat ini, kami mendukung Azure SQL Database sebagai metastore bawaan.
  • Karena keterbatasan Apache Hive, karakter "-" (tanda hubung) dalam nama database metastore tidak didukung.
  • Hanya koneksi database metastore tunggal yang didukung, semua katalog yang tercantum di bagian akan dikonfigurasi clusterProfile.trinoProfile.catalogOptions.hive untuk menggunakan satu dan parameter database yang sama yang ditentukan terlebih dahulu.

Menambahkan database metastore Apache Hive eksternal

Ada beberapa bagian penting yang perlu Anda tambahkan ke templat ARM kluster Anda untuk mengonfigurasi katalog Apache Hive dan database metastore Apache Hive:

Konfigurasi metastore

Konfigurasikan database metastore Apache Hive eksternal dalam config.properties file:

{
    "fileName": "config.properties",
    "values": {
        "hive.metastore.hdi.metastoreDbConnectionURL": "jdbc:sqlserver://server-name.database.windows.net;database=myhmsdb1;encrypt=true;trustServerCertificate=true;create=false;loginTimeout=30",
        "hive.metastore.hdi.metastoreDbConnectionUserName": "trinoadmin",
        "hive.metastore.hdi.metastoreDbConnectionPasswordSecret": "hms-db-pwd",
        "hive.metastore.hdi.metastoreWarehouseDir": "abfs://container1@myadlsgen2account1.dfs.core.windows.net/hive/warehouse"
    }
}
Properti Deskripsi Contoh
hive.metastore.hdi.metastoreDb Koneksi ionURL JDBC string koneksi ke database. jdbc:sqlserver://server-name.database.windows.net; database=myhmsdb1; encrypt=true; trustServerCertificate=true; create=false; loginTimeout=30
hive.metastore.hdi.metastoreDb Koneksi ionUserName Nama pengguna SQL untuk menyambungkan ke database. trinoadmin
hive.metastore.hdi.metastoreDb Koneksi ionPasswordSecret ReferenceName rahasia dikonfigurasi dalam secretsProfile dengan kata sandi. hms-db-pwd
hive.metastore.hdi.metastoreWarehouseDir URI ABFS ke lokasi di penyimpanan tempat data disimpan. abfs://container1@myadlsgen2account1.dfs.core.windows.net/hive/warehouse

Autentikasi metastore

Konfigurasikan autentikasi ke database metastore Apache Hive eksternal yang menentukan rahasia Azure Key Vault.

Catatan

referenceName harus cocok dengan nilai yang disediakan dalam hive.metastore.hdi.metastoreDbConnectionPasswordSecret

"secretsProfile": {
    "keyVaultResourceId": "/subscriptions/{USER_SUBSCRIPTION_ID}/resourceGroups/{USER_RESOURCE_GROUP}/providers/Microsoft.KeyVault/vaults/{USER_KEYVAULT_NAME}",
    "secrets": [
        {
            "referenceName": "hms-db-pwd",
            "type": "Secret",
            "keyVaultObjectName": "hms-db-pwd"
        }                        ]
},
Properti Deskripsi Contoh
secretsProfile.keyVaultResourceId String ID sumber daya Azure ke Azure Key Vault tempat rahasia untuk metastore Apache Hive disimpan. /subscriptions/0000000-0000-0000-0000-000000000000/resourceGroups/trino-rg/providers/Microsoft.KeyVault/vaults/trinoakv
secretsProfile.secrets[*].referenceName Nama referensi unik rahasia untuk digunakan nanti di clusterProfile. Secret1_ref
secretsProfile.secrets[*].type Jenis objek di Azure Key Vault, hanya "Rahasia" yang didukung. Rahasia
secretsProfile.secrets[*].keyVaultObjectName Nama objek rahasia di Azure Key Vault yang berisi nilai rahasia aktual. secret1

Konfigurasi katalog

Agar katalog Trino menggunakan metastore Apache Hive eksternal harus menentukan hive.metastore=hdi properti. Untuk informasi selengkapnya, lihat Menambahkan katalog ke kluster yang sudah ada:

{
    "fileName": "hive1.properties",
    "values": {
        "connector.name": "hive",
        "hive.metastore": "hdi"
    }
}

Contoh lengkap

Untuk mengonfigurasi metastore Apache Hive eksternal ke kluster Trino yang ada, tambahkan bagian yang diperlukan di templat ARM kluster Anda dengan merujuk ke contoh berikut:

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {},
    "resources": [
        {
            "type": "microsoft.hdinsight/clusterpools/clusters",
            "apiVersion": "<api-version>",
            "name": "<cluster-pool-name>/<cluster-name>",
            "location": "<region, e.g. westeurope>",
            "tags": {},
            "properties": {
                "clusterType": "Trino",

                "clusterProfile": {
                    "secretsProfile": {
                        "keyVaultResourceId": "/subscriptions/{USER_SUBSCRIPTION_ID}/resourceGroups/{USER_RESOURCE_GROUP}/providers/Microsoft.KeyVault/vaults/{USER_KEYVAULT_NAME}",
                        "secrets": [
                            {
                                "referenceName": "hms-db-pwd",
                                "type": "Secret",
                                "keyVaultObjectName": "hms-db-pwd"
                            }                        ]
                    },
                    "serviceConfigsProfiles": [
                        {
                            "serviceName": "trino",
                            "configs": [
                                {
                                    "component": "common",
                                    "files": [
                                        {
                                            "fileName": "config.properties",
                                            "values": {
                                                "hive.metastore.hdi.metastoreDbConnectionURL": "jdbc:sqlserver://server-name.database.windows.net;database=myhmsdb1;encrypt=true;trustServerCertificate=true;create=false;loginTimeout=30",
                                                "hive.metastore.hdi.metastoreDbConnectionUserName": "trinoadmin",
                                                "hive.metastore.hdi.metastoreDbConnectionPasswordSecret": "hms-db-pwd",
                                                "hive.metastore.hdi.metastoreWarehouseDir": "abfs://container1@myadlsgen2account1.dfs.core.windows.net/hive/warehouse"
                                            }
                                        }
                                    ]
                                },
                                {
                                    "component": "catalogs",
                                    "files": [
                                        {
                                            "fileName": "hive1.properties",
                                            "values": {
                                                "connector.name": "hive",
                                                "hive.metastore": "hdi"
                                            }
                                        }
                                    ]
                                }
                            ]
                        }
                    ]
                }
            }
        }
    ]
}

Sebarkan templat ARM yang diperbarui untuk mencerminkan perubahan di kluster Anda. Pelajari cara menyebarkan templat ARM. Setelah berhasil disebarkan, Anda dapat melihat katalog "hive1" di kluster Trino Anda.

Anda dapat menjalankan beberapa kueri sederhana untuk mencoba katalog Apache Hive.

Periksa apakah katalog Apache Hive berhasil dibuat.

show catalogs;

Kueri tabel (Dalam contoh ini, "hive1" adalah nama katalog apache hive yang ditentukan).

create schema hive1.schema1;
create table hive1.schema1.tpchorders as select * from tpch.tiny.orders;
select * from hive1.schema1.tpchorders limit 100;

Konfigurasi alternatif

Atau parameter database metastore Apache Hive eksternal dapat ditentukan trinoProfile.catalogOptions.hive bersama dengan hive.metastore=hdi properti katalog:

Properti Deskripsi Contoh
trinoProfile.catalogOptions.hive Daftar katalog Apache Hive atau gunung es atau delta dengan parameter database metastore Apache Hive eksternal, memerlukan parameter untuk masing-masing katalog. Untuk menggunakan database metastore eksternal, katalog harus ada dalam daftar ini.
trinoProfile.catalogOptions.hive[*].catalogName Nama katalog Trino dikonfigurasi dalam , yang dikonfigurasi serviceConfigsProfilesuntuk menggunakan database metastore Apache Hive eksternal. hive1
trinoProfile.catalogOptions.hive[*].metastoreDb Koneksi ionURL JDBC string koneksi ke database. jdbc:sqlserver://server-name.database.windows.net; database=myhmsdb1; encrypt=true; trustServerCertificate=true; create=false; loginTimeout=30
trinoProfile.catalogOptions.hive[*].metastoreDb Koneksi ionUserName Nama pengguna SQL untuk menyambungkan ke database. trinoadmin
trinoProfile.catalogOptions.hive[*].metastoreDb Koneksi ionPasswordSecret ReferenceName rahasia dikonfigurasi dalam secretsProfile dengan kata sandi. hms-db-pwd
trinoProfile.catalogOptions.hive[*].metastoreWarehouseDir URI ABFS ke lokasi di penyimpanan tempat data disimpan. abfs://container1@myadlsgen2account1.dfs.core.windows.net/hive/warehouse

Contoh lengkap

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {},
    "resources": [
        {
            "type": "microsoft.hdinsight/clusterpools/clusters",
            "apiVersion": "<api-version>",
            "name": "<cluster-pool-name>/<cluster-name>",
            "location": "<region, e.g. westeurope>",
            "tags": {},
            "properties": {
                "clusterType": "Trino",

                "clusterProfile": {
                    "secretsProfile": {
                        "keyVaultResourceId": "/subscriptions/{USER_SUBSCRIPTION_ID}/resourceGroups/{USER_RESOURCE_GROUP}/providers/Microsoft.KeyVault/vaults/{USER_KEYVAULT_NAME}",
                        "secrets": [
                            {
                                "referenceName": "hms-db-pwd",
                                "type": "Secret",
                                "keyVaultObjectName": "hms-db-pwd"
                            }                        ]
                    },
                    "serviceConfigsProfiles": [
                        {
                            "serviceName": "trino",
                            "configs": [
                                {
                                    "component": "catalogs",
                                    "files": [
                                        {
                                            "fileName": "hive1.properties",
                                            "values": {
                                                "connector.name": "hive",
                                                "hive.metastore": "hdi"
                                            }
                                        }
                                    ]
                                }
                            ]
                        }
                    ],
                    "trinoProfile": {
                        "catalogOptions": {
                            "hive": [
                                {
                                    "catalogName": "hive1",
                                    "metastoreDbConnectionURL": "jdbc:sqlserver://server-name.database.windows.net;database=myhmsdb1;encrypt=true;trustServerCertificate=true;create=false;loginTimeout=30",
                                    "metastoreDbConnectionUserName": "trinoadmin",
                                    "metastoreDbConnectionPasswordSecret": "hms-db-pwd",
                                    "metastoreWarehouseDir": "abfs://container1@myadlsgen2account1.dfs.core.windows.net/hive/warehouse"
                                }
                            ]
                        }
                    }
                }
            }
        }
    ]
}