当我运行中等类型的 EMR 实例时,我在其中一个步骤中发现 EMR 实例终止了。我在 AWS 中使用了 5 个中型实例。它的容量是 3.75 GB RAM。我将属性 mapred.child.java.opts 的堆大小设置为 3000 MB。我已经使用 JobConf 将其设置为给定的参数,例如 conf.set("mapred.child.java.opts", "-Xmx3000m")。我为 Amazon EMR 程序运行了三个步骤。在最后一步,我遇到了这个问题,java.lang.Throwable: Child Error。工作失败的原因是什么。此外,子节点中的映射器所需的最佳堆大小是多少。
问问题
671 次
1 回答
0
除非你正在做一些特别的事情——3000M 这个数字太高了。你能检查每台机器有多少地图任务hadoop正在运行吗?如果它运行的不止一个 - 它会轻松地摧毁 3.75GB 内存(无论如何,有些内存必须是免费的)。
我们提供 hadoop 即服务(Qubole)。默认情况下(以及在我之前的演出中) - 我们使用 1024M 作为默认值。您将希望将 io.sort.mb 设置为远低于该值(例如 400-500MB)。只有当用户正在做一些特别的事情(比如一个大的地图侧连接)——才有理由把它提高。如果必须增加 - 我们将不得不减少每台机器的最大并发映射任务数(如果它超过一个)。
于 2013-04-25T12:22:47.453 回答