0

我经常在蜂巢中收到错误消息container running beyond physical memory limits. Current usage: 4.7 GB of 4GB physical memory used; 12.1 GB of 8.4 GB virtual memory used. Killing container

我使用 jdbc 连接在 scala 中执行此操作。

我的默认执行引擎是 tez。如果将 hive 执行引擎更改为 mr 它工作正常。

如果我在 hive cli 中执行相同的查询,在 tez 上它可以正常工作。

正如在各种论坛中所说,我尝试更改容器大小,但没有帮助。

SET hive.tez.container.size=20000
SET hive.tez.java.opts=-Xmx10240m -XX:NewRatio=8

似乎上述设置并没有有效地增加容器大小。

它也占用了整个集群。

我的问题是:

  1. 有什么方法可以限制为 hive 查询生成的容器数量,以便集群不会因为大查询而停止?
  2. 我们怎样才能增加容器的大小?
  3. 除了增加容器大小之外,还有什么办法吗?

    hive version: 1.2.1

    hdp: 2.3.2

4

2 回答 2

1

这是由于 YARN 对容器内任务内存使用的限制造成的。

yarn.nodemanager.pmem-check-enabled  true   Whether physical memory limits will be enforced for containers.
yarn.nodemanager.vmem-check-enabled  true   Whether virtual memory limits will be enforced for containers.

您可以在您的纱线配置文件夹中禁用纱线站点中的 pmem 和 vmem 检查。

谢谢

于 2016-11-16T18:12:19.200 回答
0
hive> set mapreduce.map.memory.mb = 9000;
hive> set mapreduce.map.java.opts =- Xmx7200m;
hive> set mapreduce.reduce.memory.mb = 9000;
hive> set mapreduce.reduce.java.opts =- Xmx7200m;
于 2018-03-04T15:46:22.260 回答