如何将 Hive 元存储与 Apache Spark™ 群集配合使用

重要

AKS 上的 Azure HDInsight 已于 2025 年 1 月 31 日停用。 了解此公告的详细信息

需要将工作负荷迁移到 Microsoft Fabric 或等效的 Azure 产品,以避免工作负荷突然终止。

重要

此功能目前以预览版提供。 Microsoft Azure 预览版补充使用条款 包括适用于 beta 版、预览版或尚未正式发布的一般可用性 Azure 功能的更多法律条款。 有关此特定预览版的信息,请参阅 Azure HDInsight 在 AKS 上的预览信息 。 有关问题或功能建议,请在 AskHDInsight 上提交请求,并提供详细信息,并关注我们以获取 Azure HDInsight 社区的更多更新。

跨多个服务共享数据和元存储至关重要。 HIVE 元存储中的常用元存储之一。 AKS 上的 HDInsight 允许用户连接到外部元存储。 此步骤使 HDInsight 用户能够无缝连接到生态系统中的其他服务。

AKS 上的 Azure HDInsight 支持自定义元存储,建议将其用于生产群集。 涉及的关键步骤包括

  1. 创建 Azure SQL 数据库
  2. 创建用于存储凭据的密钥保管库
  3. 在 AKS 群集上使用 Apache Spark™ 创建 HDInsight 时配置 Metastore
  4. 对外部元存储进行作(显示数据库并执行选择限制 1)。

创建群集时,HDInsight 服务需要连接到外部元存储并验证凭据。

创建 Azure SQL 数据库

  1. 在为 HDInsight 群集设置自定义 Hive 元存储之前创建或拥有现有的 Azure SQL 数据库。

    注意

    目前,我们仅支持用于 HIVE 元存储的 Azure SQL 数据库。 由于 Hive 限制,不支持元存储数据库名称中的“-”(连字符)字符。

创建用于存储凭据的密钥保管库

  1. 创建 Azure Key Vault。

    Key Vault 的目的是用于存储在创建 SQL 数据库时设置的 SQL Server 管理员密码。 AKS 平台上的 HDInsight 不会直接处理凭据。 因此,需要在 Azure Key Vault 中存储重要凭据。 了解创建 Azure Key Vault的步骤。

  2. 创建 Azure Key Vault 后,请分配以下角色

    对象 角色 言论
    用户分配的托管身份(与 HDInsight 群集使用的 UAMI 相同) Key Vault 机密用户 了解如何 向 UAMI 分配角色
    用户(谁在 Azure Key Vault 中创建机密) 密钥保管库管理员 了解如何 向用户分配角色

    注意

    如果没有此角色,用户将无法创建机密。

  3. 创建机密

    此步骤允许将 SQL Server 管理员密码保留为 Azure Key Vault 中的机密。 在添加机密时,在“值”字段中添加密码(与 SQL DB 中为管理员提供的密码相同)。

    显示如何创建密钥保管库的屏幕截图。

    显示如何创建密钥的屏幕截图。

    备注

    请务必记下机密名称,因为创建群集期间需要用到此名称。

在创建 HDInsight Spark 群集时配置 Metastore

  1. 导航到 AKS 群集池中的 HDInsight 以创建群集。

    显示如何创建新群集的屏幕截图。

  2. 启用切换按钮以添加外部 hive 元存储并填写以下详细信息。

    显示基本选项卡的 屏幕截图。

  3. 其余详细信息将按照 AKS 上的 HDInsight 中的Apache Spark 群集的群集创建规则进行填写。

  4. 单击“”查看并创建”。

    显示审阅和创建选项卡的屏幕截图。

    注意

    • 元存储的生命周期不绑定到群集生命周期,因此可以创建和删除群集,而不会丢失元数据。 即使在删除并重新创建 HDInsight 群集后,Hive 架构等元数据也会保留。
    • 使用自定义元存储可将多个群集和群集类型附加到该元存储。

操作外部元存储

  1. 创建表

    >> spark.sql("CREATE TABLE sampleTable (number Int, word String)")

    显示如何创建表的屏幕截图。

  2. 在表上添加数据

    >> spark.sql("INSERT INTO sampleTable VALUES (123, \"HDIonAKS\")");\

    显示 insert 语句的 屏幕截图。

  3. 阅读表格

    >> spark.sql("select * from sampleTable").show()

    显示如何读取表的屏幕截图。

参考