zoukankan      html  css  js  c++  java
  • Hadoop 中shuffle为什么要排序?

    排序
    对于数学运算来说,加减乘除是基本的运算符。而对于计算机计算处理数据来说,排序、查找等就是它的基本运算符。

    列一些排序的应用:

    查找某个元素在数组中的位置。可以将数组排序,之后二分查找
    找出两个数组都包含的元素。可以将两个数组排序,然后循环对比
    ……
    在数据处理时,基于有序数据的处理会比无序数据快很多。but,排序是需要时间和空间的。

    所以涌现了很多优秀的排序算法,降低排序的代价。

    Hadoop shuffle为什么要排序?
    MapReduce在shuffle阶段会有两个地方发生排序:

    map端溢写磁盘前会根据key排序
    reduce端拉取分区数据后进行排序
    reduce端排序
    Reduce端需要对数据进行分组,将key相同的放在一起规约。为达到目的,有两种算法:hashmap和sort,前者太耗内存,而排序可以通过外排对任意数据量分组,只要磁盘数据量够大就行。

    map端排序
    map端排序是为了减轻reduce端排序的压力。


    关于这个问题,更多的讨论可查看:Hadoop的MapReduce阶段为什么要进行排序?
    ————————————————
    版权声明:本文为CSDN博主「upupfeng」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/ifenggege/article/details/108024992

  • 相关阅读:
    运算符优先级问题
    文件操作工具,需者自取
    Text文档编码识别方法
    删除重复文件的程序
    修道士和野人问题
    猜数字游戏
    存储器层级图
    IL指令汇总
    输入1~8,每个数字不重复
    厦门大学线下编程比赛第一题:求和
  • 原文地址:https://www.cnblogs.com/zhipeng-wang/p/14480404.html
Copyright © 2011-2022 走看看