gpt4 book ai didi

java - 如何告诉 hadoop 有多少内存分配给单个映射器作业?

转载 作者:可可西里 更新时间:2023-11-01 16:27:25 25 4
gpt4 key购买 nike

我已经创建了一个 Elastic MapReduce 作业,我正在尝试优化它的性能。

此时我正在尝试增加每个实例的映射器数量。我通过 mapred.tasktracker.map.tasks.maximum=X

elastic-mapreduce --create --alive --num-instance 3 \
--bootstrap-action s3://elasticmapreduce/bootstrap-actions/configure-hadoop \
--args -s,mapred.tasktracker.map.tasks.maximum=5

每次我尝试将每个小实例的 X 设置为 2 以上时,初始化都会失败,由此我得出结论,hadoop 为每个映射任务分配了 800m 的内存。对我来说,这似乎太过分了。我希望它是 400 米的顶部。

我如何告诉 hadoop 为每个 map 任务使用更少的内存?

最佳答案

检查 mapred.child.java.opts属性(property)。它默认为 -Xmx200m,这意味着每个 map/reduce 任务有 200MB 的堆。

看起来像EC2 small有 1.7 GB 内存。这是 TaskTracker 节点上 Hadoop 进程默认设置的内存。感谢"Hadoop : The Definitive Guide"

数据节点 1,000 MB
任务跟踪器 1,000 MB
Tasktracker 子图任务 400 MB (2 * 200 MB)
Tasktracker 子图任务 400 MB (2 * 200 MB)

总计 2,800MB。

除此之外,还有操作系统内存。选择更好的配置或更改默认设置。仅供引用,这里是 recommendation关于不同节点的硬件配置。

关于java - 如何告诉 hadoop 有多少内存分配给单个映射器作业?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7558030/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com