استخدام قاعدة بيانات Hive metastore الخارجية
هام
هذه الميزة في وضع المعاينة حاليًا. تتضمن شروط الاستخدام التكميلية لمعاينات Microsoft Azure المزيد من الشروط القانونية التي تنطبق على ميزات Azure الموجودة في الإصدار التجريبي أو قيد المعاينة أو التي لم يتم إصدارها بعد في التوفر العام. للحصول على معلومات حول هذه المعاينة المحددة، راجع معلومات معاينة Azure HDInsight على AKS. للأسئلة أو اقتراحات الميزات، يرجى إرسال طلب على AskHDInsight مع التفاصيل ومتابعتنا لمزيد من التحديثات على مجتمع Azure HDInsight.
يتم استخدام Hive metastore كمستودع مركزي لتخزين بيانات التعريف حول البيانات. توضح هذه المقالة كيف يمكنك إضافة قاعدة بيانات Hive metastore إلى مجموعة Trino الخاصة بك باستخدام HDInsight على AKS. هناك طريقتان:
يمكنك إضافة كتالوج Hive وربطه بقاعدة بيانات Hive metastore خارجية أثناء إنشاء مجموعة Trino.
يمكنك إضافة كتالوج Hive وإرفاق قاعدة بيانات Hive metastore خارجية إلى نظام المجموعة باستخدام تحديث قالب ARM.
يغطي المثال التالي إضافة كتالوج Hive وقاعدة بيانات metastore إلى نظام المجموعة باستخدام قالب ARM.
المتطلبات الأساسية
- مجموعة Trino تشغيلية مع HDInsight على AKS.
- إنشاء قالب ARM للمجموعة الخاصة بك.
- راجع نموذج قالب ARM لنظام المجموعة الكامل.
- الإلمام بتأليف قالب ARM ونشره.
إشعار
- حاليا، ندعم قاعدة بيانات Azure SQL باعتبارها metastore المضمنة.
- بسبب قيود Hive، حرف "-" (واصلة) في اسم قاعدة بيانات metastore غير مدعوم.
- يتم دعم اتصال قاعدة بيانات metastore واحد فقط، وسيتم تكوين جميع الكتالوجات المدرجة في
clusterProfile.trinoProfile.catalogOptions.hive
القسم لاستخدام معلمة واحدة ونفس معلمات قاعدة البيانات المحددة أولا.
إضافة قاعدة بيانات Hive metastore خارجية
هناك بعض الأقسام الهامة التي تحتاج إلى إضافتها إلى قالب ARM لنظام المجموعة لتكوين كتالوج Hive وقاعدة بيانات Hive metastore:
تكوين Metastore
تكوين قاعدة بيانات Hive metastore الخارجية في config.properties
الملف:
{
"fileName": "config.properties",
"values": {
"hive.metastore.hdi.metastoreDbConnectionURL": "jdbc:sqlserver://mysqlserver1.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"
}
}
الخاصية | الوصف | مثال |
---|---|---|
hive.metastore.hdi.metastoreDb الاتصال ionURL | سلسلة الاتصال JDBC إلى قاعدة البيانات. | jdbc:sqlserver://mysqlserver1.database.windows.net; database=myhmsdb1; encrypt=true; trustServerCertificate=true; create=false; loginTimeout=30 |
hive.metastore.hdi.metastoreDb الاتصال ionUserName | اسم مستخدم SQL للاتصال بقاعدة البيانات. | trinoadmin |
hive.metastore.hdi.metastoreDb الاتصال ionPasswordSecret | اسم المرجع السري الذي تم تكوينه في secretsProfile باستخدام كلمة المرور. | hms-db-pwd |
hive.metastore.hdi.metastoreWarehouseDir | ABFS URI إلى موقع في التخزين حيث يتم تخزين البيانات. | abfs://container1@myadlsgen2account1.dfs.core.windows.net/hive/warehouse |
مصادقة Metastore
تكوين المصادقة إلى قاعدة بيانات Hive metastore الخارجية التي تحدد أسرار Azure Key Vault.
إشعار
referenceName
يجب أن تتطابق مع القيمة المتوفرة في 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"
} ]
},
الخاصية | الوصف | مثال |
---|---|---|
secretsProfile.keyVaultResourceId | سلسلة معرف مورد Azure إلى Azure Key Vault حيث يتم تخزين أسرار Hive metastore. | /subscriptions/0000000-0000-0000-0000-000000000000/resourceGroups/trino-rg/providers/Microsoft.KeyVault/vaults/trinoakv |
secretsProfile.secrets[*].referenceName | اسم مرجع فريد للبيانات السرية لاستخدامها لاحقا في clusterProfile. | Secret1_ref |
secretsProfile.secrets[*].type | نوع الكائن في Azure Key Vault، يتم دعم "Secret" فقط. | سر |
secretsProfile.secrets[*].keyVaultObjectName | اسم الكائن السري في Azure Key Vault الذي يحتوي على قيمة سرية فعلية. | secret1 |
تكوين الكتالوج
لكي يستخدم كتالوج Trino Metastore الخارجي Hive، يجب تحديد hive.metastore=hdi
خاصية . لمزيد من المعلومات، راجع إضافة كتالوجات إلى المجموعة الموجودة:
{
"fileName": "hive1.properties",
"values": {
"connector.name": "hive",
"hive.metastore": "hdi"
}
}
مثال كامل
لتكوين Hive metastore خارجي إلى مجموعة Trino موجودة، أضف الأقسام المطلوبة في قالب ARM لنظام المجموعة الخاص بك بالإشارة إلى المثال التالي:
{
"$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://mysqlserver1.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"
}
}
]
}
]
}
]
}
}
}
]
}
انشر قالب ARM المحدث ليعكس التغييرات في نظام المجموعة. تعرف على كيفية نشر قالب ARM. بمجرد النشر بنجاح، يمكنك مشاهدة كتالوج "hive1" في مجموعة Trino.
يمكنك تشغيل بعض الاستعلامات البسيطة لتجربة كتالوج Apache Hive.
تحقق مما إذا تم إنشاء كتالوج Apache Hive بنجاح.
show catalogs;
الاستعلام عن جدول (في هذا المثال، "hive1" هو اسم كتالوج الخلية المحدد).
create schema hive1.schema1;
create table hive1.schema1.tpchorders as select * from tpch.tiny.orders;
select * from hive1.schema1.tpchorders limit 100;
التكوين البديل
بدلا من ذلك، يمكن تحديد trinoProfile.catalogOptions.hive
معلمات قاعدة بيانات Hive metastore الخارجية مع hive.metastore=hdi
خاصية الكتالوج:
الخاصية | الوصف | مثال |
---|---|---|
trinoProfile.catalogOptions.hive | تتطلب قائمة كتالوجات Hive أو iceberg أو delta مع معلمات قاعدة بيانات Hive metastore الخارجية معلمات لكل منها. لاستخدام قاعدة بيانات metastore الخارجية، يجب أن يكون الكتالوج موجودا في هذه القائمة. | |
trinoProfile.catalogOptions.hive[*].catalogName | اسم كتالوج Trino المكون في serviceConfigsProfiles ، والذي تم تكوينه لاستخدام قاعدة بيانات Hive metastore الخارجية. |
hive1 |
trinoProfile.catalogOptions.hive[*].metastoreDb الاتصال ionURL | سلسلة الاتصال JDBC إلى قاعدة البيانات. | jdbc:sqlserver://mysqlserver1.database.windows.net; database=myhmsdb1; encrypt=true; trustServerCertificate=true; create=false; loginTimeout=30 |
trinoProfile.catalogOptions.hive[*].metastoreDb الاتصال ionUserName | اسم مستخدم SQL للاتصال بقاعدة البيانات. | trinoadmin |
trinoProfile.catalogOptions.hive[*].metastoreDb الاتصال ionPasswordSecret | اسم المرجع السري الذي تم تكوينه في secretsProfile باستخدام كلمة المرور. | hms-db-pwd |
trinoProfile.catalogOptions.hive[*].metastoreWarehouseDir | ABFS URI إلى موقع في التخزين حيث يتم تخزين البيانات. | abfs://container1@myadlsgen2account1.dfs.core.windows.net/hive/warehouse |
مثال كامل
{
"$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://mysqlserver1.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"
}
]
}
}
}
}
}
]
}