是否有 Hive on Hue (CDH 5.9.3) 的配置设置限制可以使用的容器数量?

Is there a configuration setting for Hive on Hue (CDH 5.9.3) that limits the number of containers that can be used?

这是我们组中的一个普遍问题,我们的 Hive 查询经常扩展以消耗我们 CDH 集群上的大部分可用 YARN 执行程序和内存。虽然潜在的问题在于我们表中的分区数量和连接的复杂性,但我们不能随意重建这些表。我们可以通过配置spark.dynamicAllocation.maxExecutors和spark.executor.memory来控制Spark中的资源消耗。我们可以在 Hue 上使用类似的东西吗,这样 Hue 将 'play well' 与集群上的其他作业一起使用?

Hue 是 UI,无法控制 Hive 使用的资源数量。这是由 YARN 通过调度策略控制的。对于CDH集群,一般使用公平调度器。

http://hadoop.apache.org/docs/stable/hadoop-yarn/hadoop-yarn-site/FairScheduler.html

您应该查看以下内容,了解有关如何进行设置的一些背景信息。

是的,您可以更好地管理从 Hue 启动的 Hive 查询中使用的 Hadoop 集群计算资源的数量。

为此,您需要首先配置 YARN 调度程序队列;对于 Cloudera 的 CDH 发行版,这些称为动态资源池

您可以在 CDH Documentation

中了解有关此主题的更多信息

一旦您为 Hue 启动的半交互式 Hive 查询配置了一个池,您可以通过为 mapred.job.queue.name键。

假设我们的队列名为 interactive.hive_queue。我们将在 HiveQL 查询语句之前添加此 SET 语句:

SET mapred.job.queue.name=interactive.hive_queue;

您可能需要更新您的 Hue 配置 hue.ini 以允许您的 Hue 用户传递此配置值

参考:HiveQL Language Manual

您还应该能够为 Hue 创建一个已保存的 Hive 配置,以便始终将此 YARN 队列用于您的 Hue 启动的 Hive 查询。

参考:hiveserver2.py

(假设您正在为 Hive 查询使用 mapreduce (mr2) 执行引擎)

如果您想更改所有 Hive 查询的队列,可以通过更改 Hive Server2 配置来完成此操作 hive-site.xml。此更改如下所示:

<property>
   <name>mapreduce.job.queuename</name>
   <value>interactive.hive_queue</value>
</property>