memory - 为什么 EMR 实例没有像映射器那样多的缩减器?

标签 memory hadoop amazon-web-services elastic-map-reduce reducers

默认情况下,在 EMR 作业期间,实例配置为具有比映射器更少的缩减器。但是 reducer 没有任何额外的内存,所以看起来它们应该能够拥有相同的数量。 (例如,超大型高 cpu 实例有 7 个映射器,但只有 2 个缩减器,但映射器和缩减器都配置了 512 MB 可用内存)。

有谁知道这是为什么,有什么方法可以指定使用与映射器一样多的缩减器吗?

编辑:我的数量有误,是 512 MB

最佳答案

映射器从它们的输入流(映射器的标准输入)中提取数据,并且它们发出的内容要紧凑得多。该出站流(映射器的 STDOUT)随后也按键排序。因此,reducer 传入的数据更小、经过排序。

这几乎就是为什么任何 Hadoop MapReduce 集群(不仅仅是 EMR)的默认配置是映射器多于缩减器的原因,与 jobtracker 可用的内核数量成正比。

您可以通过 jobconf 参数控制映射器和缩减器的数量。配置变量是 mapred.map.tasks 和 mapred.reduce.tasks。

关于memory - 为什么 EMR 实例没有像映射器那样多的缩减器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10178071/

相关文章:

python - 大数组在 numpy 中创建 MemoryError

memory - 是否可以在 valgrind 中列出泄漏内存的位置?

node.js - Node.js 中 RSS 内存增加而堆稳定

amazon-web-services - 如何将RDS快照恢复到cloudformation中?

linux - 内核线程如何只为它们自己请求页面?

hadoop单节点设置

hadoop - 如果hadoop集群配置为利用kerberos身份验证,那么是否需要配置MapReduce作业来处理它?

r - 无法运行程序 "Rscript"

amazon-web-services - AWS KMS 与其他云服务的互操作性

bash - 使用 Amazon MapReduce/Hadoop 进行图像处理