MapReduce 过程详解

本文详细介绍了MapReduce的Map端和Reduce端的工作过程。在Map端,数据经过split、map任务处理,生成键值对,然后通过Partitioner分区,再进行溢写和排序。Reduce端则通过Copy和Merge过程获取和整合数据,最终输入到reducer进行处理。MapReduce通过Shuffle阶段实现了数据的分布式处理和传输。
摘要由CSDN通过智能技术生成

MapReduce 过程详解

一.Map端:

在这里插入图片描述
Map节点运行map task任务生成map的输出结果
1.Shuffer的工作内容

  • 从运算效率的出发点,map的输出结果有限存储在map节点的内存中.每个map task都有一个内存缓冲区,存储着map的输出结果,当缓冲快满时,需要将缓冲区的数据以一个临时文件的形式存储到磁盘中,当整个map task结束后,在对磁盘中的这个临时文件做合并,生成最终的输出文件, 最后等待reduce task来拉取数据.当然当map task的结果不大,能够完全存储在内存缓冲区,且未达到内存缓冲区的阀值,那么就不会有写临时文件到磁盘的操作,也不会有后面的合并
    详细过程如下:
  • map task 执行任务,输入数据的来源: HDFS的block 在mapreduce的概念中,map task读取的是split分片, split与block的关系: 一对一(默认)
    说明一下block和split
     * Block(物理划分)
    文件上传到HDFS.就要划分成数据块,这里的划分属于物理划分,块的大小可配置(默认:第一代为64MB’,第二代为128MB)可以通过dfs.block.size配置, 为保证数据的安全,block采用冗余 机制:默认为3份,可通过dfs.replication配置。注意:当更改块大小的配置后,新上传的文件的块大小为新配置的值,以前上传的文件的块大小为以前的配置值。
     * Split(逻辑划分)
     Hadoop中的split划分属于逻辑上的划分,目的是为了让map task更好的获取数据,split是通过Hadoop中的InputFormat接口中的getSplit()方法得到的.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值