استخدام قاعدة بيانات 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.

المتطلبات الأساسية

إشعار

  • حاليا، ندعم قاعدة بيانات 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"
                                }
                            ]
                        }
                    }
                }
            }
        }
    ]
}