hadoop shuffle

Posted phoenix tree

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hadoop shuffle相关的知识,希望对你有一定的参考价值。

1 hadoop shuffle的地位

hadoop  shuffle是map reduce算法的核心,是它连接了多个map和多个reduce,它将map的输出交给reduce作为输入。

2 hadoop shuffle工作在哪里

shuffle工作在map端

3 hadoop shuffle做了什么

它首先对所有的map的输出进行分区,对分区进行编号,来自不同map的具有相同编号的分区交给同一个reduce来处理。

它必须保证一点,来自所有map的相同的key的记录必须要被划分到同一个分区。原因很简单,reduce函数的输入就是一个key,对应该key的所有的values。

可见,是hadoop shuffle保证了mapreduce的编程模型。map只需要把输入分成新的key value即可,而reduce处理的对象是所有的map的输出中同一个key的所有values。

4 hadoop shuffle是怎样实现的

  public int getPartition(K2 key, V2 value,
                          int numReduceTasks) {
    return (key.hashCode() & Integer.MAX_VALUE) % numReduceTasks;
  }

对key进行hash保证了,相同的key具有相同的hash值,然后对reduce task数目取模,那么相同的key肯定是有相同的分区id的。这样,所有的map的具有相同key的键值对记录都会被划分到同一个分区中,进而交给同一个reducer。

5 shuffle过程存在的问题

因为map位于不同的机器,所以reducer所在的机器必须要同它们通信才能把所有输入自己的分区数据远程拷贝到本机器上。

这样性能瓶颈就是网络数据的传输。

 




以上是关于hadoop shuffle的主要内容,如果未能解决你的问题,请参考以下文章

spark shuffle内在原理说明

hadoop2.删除对hadoop3.有影响吗

Hadoop开发 Hadoop视频教程 段海涛老师Hadoop完全攻克Hadoop视频教程 Hadoop开发

hadoop 配置文件放到哪里

hadoop2 环境的搭建(自动HA)

Hadoop高手之路3-Hadoop集群搭建