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

标签 java hadoop mapreduce amazon elastic-map-reduce

我已经创建了一个 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/

相关文章:

python - 用于Python(PySpark)的Spark的自定义Hadoop配置?

.net - RavenDB - MapReduce 复杂聚合

java - 需要使 Javamail 更安全以进行 gmail 身份验证

hadoop - 从HBase读取最新插入/更新的100条记录

java - 如何从相应的 xsd'S 获取自己的 xml 编辑器的信息?

hadoop - 我没有收到来自 Twitter 的推文

hadoop - Hadoop什么时候开始shuffle

hadoop - 找不到映射器类

JavaFX 文本字段事件处理程序

java - Tomcat问题启动服务器