当前位置: 首页 > 知识库问答 >
问题:

当我们不在马普减中使用组合器时?

盖翰池
2023-03-14

每个Hadoop开发者都知道合并器是优化mapreduce的关键,但它是可选的。它可以最小化带宽并提高mapreduce作业性能。在这里,我的问题是,hadoop在默认情况下提供了许多功能,如数据局部性问题,但没有将组合器作为默认值。为什么?这意味着在所有情况下合并器都是不可取的?当我们不使用合成器时。如果我将它设为默认值,会有什么问题呢?

共有2个答案

胡鸿志
2023-03-14

如果在作业中设置组合器,Hadoop将根据数据决定是否运行组合器。

但是如果您不设置组合器,Hadoop将不会运行组合器。

当合路器运行时,它将减小输出的大小。因此,少量数据将在网络中传输。

对于组合器和减速器之间的差异,请检查以下链接:

http://blog.optimal.io/3-differences-between-a-mapreduce-combiner-and-reducer/

桑坚
2023-03-14

组合器可以在 reduce 函数既是可交换的又是结合的的情况下使用。这是因为值在以任意顺序随机播放之前在本地组合。

可交换 - 我们针对值处理操作的顺序在某种程度上对结果没有影响:

1 2 3=1 3 2

Associative-我们处理针对值的操作的顺序在某种程度上对结果没有影响:

(1 2) 3 = 1 (2 3)

因此,最好使用组合器,例如 sum() 操作,但有些操作不起作用。因此,程序员总是有责任决定组合器是否可用于特定算法。

 类似资料:
  • 在上面的程序中,如果我编写combiner类,它将如何工作,据我所知combiner是映射器级别的聚合器,然而在本例中我们有两个映射器逻辑。 组合器逻辑是否会应用于两个映射器逻辑 有没有什么方法可以将组合器逻辑应用到任何一个映射器逻辑

  • 我有一个简单的地图减少工作,我正在建立反向索引。 我的映射器工作正常(我检查过了),并输出了word和docID:TFIDF值的密钥对: 映射器(仅显示输出): 化简器的唯一工作是组合这些值。这是我的实现: 然而,它没有组合任何东西,输出看起来基本上与来自映射器的相同。输出中有一些行具有相同的键,尽管reducer应该将它们组合起来——基本上,使用reducer时,输出文件中的所有键都应该是唯一的

  • 我在HadoopJavaAPI(1.0.3)中编写了一个Map Reduce作业。该作业包括对数据中特定字段(X)的所有值求和,并创建其他字段的加权分布。 输入: 由于我的数据中的任何一行都发出一对,并且我需要使用单个减法器来求和所有值,因此我想将相同的Reduce类设置为组合器。 总计 X 求和: 地图输出: 减少输出: 奇怪的是,合并器/缩减器会多次收到相同的密钥: 我很确定这一点,因为我正在

  • 我想转换哈希映射 代码如下。但是当初始Hashmap中存在相同长度的键时,它会触发抛出Exception的合并函数(我打算这样做,因为在我的情况下不会有相同的字符串)。我想知道为什么会触发合并函数,因为toMap()的JavaDoc说“如果映射的键包含重复项(根据Object#equals(Object)),则将值映射函数应用于每个相等的元素,并使用提供的合并函数合并结果。”我认为在我的代码中,“

  • 问题内容: 注意:Windows和Docker都是新手 我一直在使用的教程说,如果我们使用的是Linux,它们就在下面,但是我似乎无法在Windows计算机上找到它。 谢谢! 问题答案: 输入docker-machine与 在那里,您应该找到您的容器。

  • 当我试图在我的MR工作中使用合并器时,我得到了下面的异常 Java . lang . nullpointerexception < br > at org . Apache . Hadoop . mapred . ifile$writer . append(ifile . Java:193)< br > at org . Apache . Hadoop . mapred . task$combin