hadoop - 是否可以使用单个 reducer 执行任何 mapreduce 任务?

标签 hadoop mapreduce reduce bigdata

如果输出太大以至于无法放入 reducer RAM 怎么办? 例如排序任务。在这种情况下,输出与输入一样大。如果您使用单个 reducer ,那么所有数据都无法放入 RAM。那么排序是如何进行的呢?

最佳答案

我想我已经找到答案了。 是的,可以在单个 reducer 中执行任何 map 任务,即使数据大于 reduce 的内存。在 shuffle 阶段,reducer 将数据从 mapper 复制到 reducer 的内存中,并对其进行排序直到溢出。一旦溢出内存,部分数据将存储在 reducers 本地磁盘中,并开始获取新值。一旦再次溢出,它将新数据与先前存储的文件合并。合并后的文件保持排序方式(可能使用外部合并排序)。混洗完成后,中间键值对以排序方式存储。然后对该数据执行reduce任务。由于数据已排序,因此很容易通过在内存中一次获取一大块数据来在内存中进行聚合。

关于hadoop - 是否可以使用单个 reducer 执行任何 mapreduce 任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35857668/

相关文章:

hadoop - pig :如何检索两个连续元组之间的差异。 (整数类型)

hadoop - 使用 hadoop 收集异构数据

hadoop - 如果创建一个包含 300 个列族的 hbase 表就可以了?

hadoop - 您能告诉我在hadoop中可以找到mapreduce程序Wordmedian的输出吗?它存储在HDFS的目录中吗?

javascript - 在javascript中同时映射和减少数组

javascript - 使用 reduce 构建数组对象比较两个数组

hadoop - 如何编写用于计算节点度和计数的pig脚本

hadoop - 为什么分割点在 Hadoop 总顺序分区器上乱序?

java - 在Java中应用MapReduce

hadoop - MapReduce:将 Reducer 的结果分组为固定大小的 block