【发布时间】:2016-01-08 06:04:10
【问题描述】:
如果我们需要使用多个reducer 来执行reduce 作业,我们的全局变量存储在哪里,考虑到一个reducer 不能为该作业的全局数据提供那么多内存。
它们是否存储在 HDFS 中并由每个 reducer 访问?
或者
我们需要明确说明。
【问题讨论】:
标签: java mapreduce global-variables
如果我们需要使用多个reducer 来执行reduce 作业,我们的全局变量存储在哪里,考虑到一个reducer 不能为该作业的全局数据提供那么多内存。
它们是否存储在 HDFS 中并由每个 reducer 访问?
或者
我们需要明确说明。
【问题讨论】:
标签: java mapreduce global-variables
否。它们不存储在 HDFS 中。我们不需要明确地做任何事情。
每个Reducer 在单独的JVM 中运行,Reducer 实例将在jvm heap memory 区域中维护自己的变量。所以每个 Reducer 都会有自己的全局或局部变量实例。对象的创建和存储与普通的java程序相同。 Mapper 或 Reducer 对象没有什么特别之处。
【讨论】:
O(n^(1-epsilon)) 所以代码在reduce运行时需要这么多内存来存储临时结果,这会给您带来内存问题。我对吗。我建议你先试一下,不管它是否失败,你得到了什么错误。