【问题标题】:Hive Query Failing ( AMI - 3.11.0 , Hive- 0.13.1)Hive 查询失败 (AMI - 3.11.0 , Hive- 0.13.1)
【发布时间】:2017-08-17 10:44:22
【问题描述】:

此任务的诊断消息:容器 [pid=3347,containerID=container_1490354262227_0013_01_000104] 运行超出物理内存限制。当前使用情况:已使用 1.0 GB 的 1 GB 物理内存;使用了 1.5 GB 的 5 GB 虚拟内存。杀死容器。转储Contains -1490354262227_0013_01_000104 /latest/bin/java -Djava.net.preferIPv4Stack=true -Dhadoop.metrics.log.level=WARN -Xmx864m -Djava.io.tmpdir=/mnt3/var/lib/hadoop/tmp/nm-local-dir/ usercache / hadoop的/应用程序缓存/ application_1490354262227_0013 / container_1490354262227_0013_01_000104 / TMP -Dlog4j.configuration = container-log4j.properties -Dyarn.app.container.log.dir = / MNT /无功/日志/ hadoop的/ userlogs / application_1490354262227_0013 / container_1490354262227_0013_01_000104 -Dyarn.app .container.log.filesize=0 -Dhadoop.root.logger=INFO,CLA org.apache.hadoop.mapred.YarnChild 10.35.178.86 49938 attempt_1490354262227_0013_m_000004_3 104 |- 3347 2563 3347 3347 (bash) 80 178 1 /bin/bash18620 -c /usr/java/latest/bin/java -Djava.net.preferIPv4Stack=true -Dhadoop.metrics.log.level=WARN -Xmx864m -Djava.io.tmpdir=/mnt3/var/lib/hadoop/tmp/nm-local-dir/usercache/hadoop/appcache/application_1490354262227_0013/container_1490354262227_0013_01_000104/tmp -Dlog4j.configuration=container-log4j.properties -Dyarn. app.container.log.dir=/mnt/var/log/hadoop/userlogs/application_1490354262227_0013/container_1490354262227_0013_01_000104 -Dyarn.app.container.log.filesize=0 -Dhadoop.root.logger=INFO,CLA org.apache.hadoop。 mapred.YarnChild 10.35.178.86 49938 attempt_1490354262227_0013_m_000004_3 104 1>的/ mnt /无功/日志/ hadoop的/ userlogs / application_1490354262227_0013 / container_1490354262227_0013_01_000104 /标准输出2>的/ mnt /无功/日志/ hadoop的/ userlogs / application_1490354262227_0013 / container_1490354262227_0013_01_000104 / stderr的

【问题讨论】:

  • 先尝试优化您的查询。
  • @leftjoin 怎么优化,能不能具体一点
  • 可以优化查询,这样它会消耗更少的内存。请提供查询和配置参数。
  • @leftjoin 请在给定链接pastebin.com/wuNEFgnJ中找到查询
  • reducer 或 mapper 是否失败?

标签: java amazon-web-services hive aws-sdk hiveql


【解决方案1】:

容器 [pid=3347,containerID=container_1490354262227_0013_01_000104] 运行超出物理内存限制。当前使用情况:已使用 1.0 GB 的 1 GB 物理内存;使用了 1.5 GB 的 5 GB 虚拟内存。

您的进程似乎需要更多内存并且超出了定义的限制。

你需要增加容器大小

SET hive.tez.container.size=4096MB
SET hive.auto.convert.join.noconditionaltask.size=1370MB

阅读更多关于here的信息。

【讨论】:

  • 我正在使用执行引擎mr
【解决方案2】:

如果它在减速器上失败:

  1. 将按分区键分发到查询中。它将分发 reducer 之间的数据,因此 reducer 将创建更少的数据 分区并消耗更少的内存。

insert overwrite table items_s3_table PARTITION(w_id) select pk, cId, fcsku、cType、处置、cReferenceId、snapshotId、数量、w_id
从 items_dynamodb_table 按 w_id 分发;

  1. 尝试减少每个 reducer 的字节数。减小此参数将增加并行度(reducer 的数量),并可能减少每个 reducer 的内存消耗。 hive.exec.reducers.bytes.per.reducer=67108864;
  2. 如果没有帮助,请调整内存设置。

对于映射器:

mapreduce.map.memory.mb=4096; 
mapreduce.map.java.opts=-Xmx3000m;

对于减速器:

mapreduce.reduce.memory.mb=4096; 
mapreduce.reduce.java.opts=-Xmx3000m;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-18
    • 2017-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-22
    • 1970-01-01
    相关资源
    最近更新 更多