在 HDInsight 4.0 中创建群集期间更改 Hive 托管表的默认路径
Posted
技术标签:
【中文标题】在 HDInsight 4.0 中创建群集期间更改 Hive 托管表的默认路径【英文标题】:Changing default path of Hive Managed tables during cluster creation in HDInsight 4.0 【发布时间】:2019-11-08 10:20:27 【问题描述】:我有一个 HDInsight (Hadoop) 4.0 集群。 Hive 托管表的默认路径是 hive/warehouse/managed,它位于集群的默认存储帐户中。我希望默认配置单元托管路径指向我已附加到同一群集的其他存储帐户。这样做的原因是,我可能多次删除并重新创建集群,并且每次我都必须删除默认存储帐户的默认容器,否则集群创建将失败——或者每次都指定一个新容器。它创造了一个棘手的情况,在集群的早期实例化期间创建的托管表一直指向旧的默认容器。我知道如果我们在托管表创建期间明确指定 LOCATION
可以防止这种情况发生,但我只是不想让任何东西驻留在默认容器中,即使 LOCATION
被省略。我正在尝试将数据与集群隔离元数据,这是默认容器的用途。我希望在集群创建期间完成此操作(而不是通过 Ambari 创建集群后)。我们如何做到这一点?我在 Azure 的集群创建 UI 中没有看到任何这样的选项。
【问题讨论】:
【参考方案1】:很遗憾,您无法通过使用 Azure 门户创建 HDInsight 集群来更改托管表的默认路径。
HDInsight集群创建前:如果要在集群创建前进行修改,可以使用“Bootstrap scripts”。
引导脚本允许您以编程方式在 Azure HDInsight 中安装和配置组件。
在创建 HDInsight 群集时设置配置文件设置有三种方法:
使用 Azure PowerShell 使用 .NET SDK 使用 Azure 资源管理器模板更多详情请参考“Customize HDInsight clusters using Bootstrap scripts”。
创建 HDInsight 群集后:
您可以将其他集群添加到 Azure 门户的自定义元存储以及 Ambari 配置(Hive -->高级)。
或
Hive 托管表的默认位置是 Hive 仓库。 hive 仓库的位置由 hive-site.xml 文件中的 hive.metastore.warehouse 属性设置:
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/hive/warehouse</value>
<description>location of default database for the warehouse</description>
</property>
希望这会有所帮助。
【讨论】:
这只会允许改变路径,如果你仔细看我的帖子你会明白我需要这样做的原因——我只是不想要不同的路径,我宁愿需要不同的路径在不同的存储(链接)上 - 因为当我重新创建(删除和创建)集群时,我删除了默认容器,否则集群创建失败。否则,每次我创建集群的新实例时,我都必须维护在上次实例化期间创建的旧默认容器。所以我想将元存储路径与默认存储隔离开来。你的回答没有解决这个问题。 据我所知,您不允许将 Hive 仓库从默认存储更改为附加存储。 这是一个问题,必须有一些解决方案 - 否则每次重新创建集群时,您都必须手动将所有托管表数据迁移到新存储,如果尺寸很大。如果您只对托管表特别感兴趣,那么外部表可能不是解决方案——这是一个有效的用例,如果您对 Hive 3 中的 ACID 表感兴趣,则仅 Hive 3 中的托管表支持 ACID。跨度>以上是关于在 HDInsight 4.0 中创建群集期间更改 Hive 托管表的默认路径的主要内容,如果未能解决你的问题,请参考以下文章
在通过Visual Studio部署资源时,在New-AzureRmResourceGroupDeployment期间Azure ExpiredAuthenticationToken
OutOfMemory 异常 - HDInsight LLAP 群集中的 Hive 多联接查询
Azure HDInsight Jupyter笔记本无法正常工作