shuffle阶段和combiner阶段有什么区别?

2023-12-22

我对 MapReduce 框架很困惑。我从不同的来源读到了这方面的内容,感到很困惑。顺便说一句,这是我对 MapReduce 作业的想法

1. Map()-->emit <key,value>  
2. Partitioner (OPTIONAL) --> divide
    intermediate output from mapper and assign them to different
    reducers
3. Shuffle phase used to make: <key,listofvalues>    
4. Combiner,    component used like a minireducer wich perform some
    operations on    datas and then pass those data to the reducer.
    Combiner is on local    not HDFS, saving space and time.    
5. Reducer, get the data from the    combiner, perform further
    operation(probably the same as the    combiner) then release the
    output.     
6.  We will have n outputs parts,    where n is the number
    of reducers

基本上是对的吗?我的意思是,我发现一些消息来源指出组合器是随机播放阶段,它基本上按键对每个记录进行分组......


组合器与洗牌阶段完全不同。你所描述的洗牌是错误的,这才是你困惑的根源。

洗牌只是从map复制key到reduce,与key生成无关。这是Reducer 的第一个阶段,其他两个阶段是排序和归约。

组合就像在本地执行一个减速器,用于每个映射器的输出。它基本上就像一个减速器(它也扩展了减速器类),这意味着,像减速器一样,它对映射器为同一键发出的本地值进行分组。

分区实际上,将映射输出键分配给特定的reduce 任务,但它不是可选的。使用您自己的实现覆盖默认的 HashPartitioner 是可选的。

我试图将这个答案保持在最低限度,但您可以在 Tom White 的《Hadoop:权威指南》一书中找到更多信息,正如 Azim 所建议的,以及一些相关的内容这个帖子 https://stackoverflow.com/a/22169760/2516301.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

shuffle阶段和combiner阶段有什么区别? 的相关文章

随机推荐

  • CSS 中的 Rem 单位大小

    我对 CSS 中的 rem 单位有疑问 在我当前的项目中 所有尺寸都是 rem 当我设置元素大小 如 div 时 显示的大小为 16 px x ems 但当 div 包含文本或标题时 显示的大小为 19 x ems Chrome FF 和
  • Spring Web 应用程序初始化了两次

    我发现我的 spring web 项目在 tomcat 上初始化了两次 下面是打印的消息 第一次 INFO Initializing Spring root WebApplicationContext INFO 2015 01 08 15
  • 图像按钮选择器不起作用

    我试图为 ImageView 设置选择器 但它是不工作 我的布局
  • 从 Gradle 构建脚本生成 JPA2 元模型

    我正在尝试为新项目设置 Gradle 构建脚本 该项目将使用 JPA 2 以及Querydsl http www querydsl com On the Querydsl 参考文档的下一页 http source mysema com st
  • 无法打开流:没有这样的文件或目录,是的!

    我在需要一些文件时遇到问题 PHP 告诉我这些文件不存在 但是当我扫描目录时它告诉我它确实存在 我已将文件简化为require功能 但仍然无法正常工作 这是我的设置 root test php test test2 php sub test
  • UIScrollView ContentSize.height默认为0.0000?

    我正在尝试使用 UIScrollView 创建动态表单 但我注意到当我使用NSLog我的scrollView的contentSize height 0 00000我将滚动视图构建为故事板上屏幕的宽度和高度 其中包含元素 那么为什么会返回0呢
  • iOS 中的 Flutter audio_service 依赖问题

    我正在添加audio service https pub dartlang org packages audio service用于在后台运行音频的包 在 android 中它可以工作 但作者尚未在 iOS 中实现 因此在 iOS 中运行应
  • 当继承相对行高时,它与元素的字体大小无关。为什么?我如何使其相对?

    我有一个全局重置font size and line height to inherit对于每个元素 font size inherit line height iherit For html 我明确定义它们 html font size
  • 与 NaN 不同,为什么浮点无穷大相等?

    为什么无穷大比较不遵循应用于 NaN 的逻辑 这段代码打印出来false三次 double a Double NaN double b Double NaN System out println a b false System out p
  • 如何在swift中实现关键字关联功能?

    例如 当我输入几个字母时 相应的单词会自动出现 然后我可以选择它们 但这样的功能如何实现呢 我应该使用哪种 UI 元素 我是否还应该将世界上所有国家都输入到cord数据中 以便得到相应的结果 您显示的图像似乎只是一个 UITableView
  • 使用 Keras 1.2.2 和 MXnet 后端重置 GPU 内存

    我正在使用 AWS p2 x8large 并尝试使用 k 折交叉验证来评估我的模型 第一次重复后 我的 GPU 内存已满 当我尝试再次训练时 我收到了 cuda 内存问题 我的问题是如何在循环内重置 GPU 内存 我使用了 K clear
  • 使用 PyCharm 的 Profiler 时出现“导入错误:无法导入名称 cbook”

    我正在尝试运行 PyCharm 分析器 但收到以下错误消息 Traceback most recent call last File home b3053674 ProgramFiles pycharm 2017 1 4 helpers p
  • finditem() 找不到菜单,并出现 NullPointerException

    我在更改选项菜单上的某些属性时陷入困境onCreateOptionsMenu 看起来 findItem 返回 null 即使我很确定对菜单项的引用是正确的 我的代码如下所示 Override public boolean onCreateO
  • 构建 Angular CLI 时出错

    我在尝试构建 Angular 2 项目时遇到问题 当我打电话时ng build 构建器正在将路由路径验证为模块 并表示它不存在 错误无法从 C Users bruno martins git disciples ui src app app
  • 为什么即使在我调用 Thread.currentThread().interrupt() 之后,thread.isInterrupted() 仍返回 false

    当我运行这个测试时 为什么sleepThread isInterrupted 总是返回 false 我必须执行Thread currentThread interrupt 当捕获一个时设置中断标志InterruptedException T
  • React - 表单提交后清除输入值

    我遇到了一个相当愚蠢的问题 我正在创建我的第一个 React 应用程序 并且遇到了一个小问题 在提交表单后我无法清除我的输入值 尝试用谷歌搜索这个问题 在这里找到了一些类似的线程 但我无法解决这个问题 我不想更改组件 应用程序的状态 只是将
  • 加载多个.dta 文件

    我有一个包含超过 500 个 dta 文件的文件夹 我想将其中一些文件加载 到单个 R 对象中 我的 dta 文件有一个由四个部分组成的通用名称 两个字母 四个数字 y dta 例如 名称可以是 de2015y dta 或 fr2008y
  • 急切执行:梯度计算

    我想知道为什么这个非常简单的梯度计算不能正常工作 它实际上是生成一个 None None 向量 显然 这不是期望的输出 import tensorflow as tf tf enable eager execution a tf const
  • 如何从应用程序内部检测 JVM 垃圾收集周期?

    我只是想知道是否有一种方法可以从正在 gc 的代码 JVM 中检测垃圾收集周期 时机不起作用 因此 事件发生在实际周期之前还是之后并不重要 在周期期间发生事件似乎不太可能 而且也可能很危险 具体取决于所使用的 GC 实现 我能找到的只是可以
  • shuffle阶段和combiner阶段有什么区别?

    我对 MapReduce 框架很困惑 我从不同的来源读到了这方面的内容 感到很困惑 顺便说一句 这是我对 MapReduce 作业的想法 1 Map gt emit