关于MapReduce中的切片机制

5 篇文章 0 订阅
4 篇文章 0 订阅

MapReduce的每一个Spilt都回提交给一个Job 最后都有一个Client
关于Spilt
将待处理数据执行逻辑切片(即按照一个特定切片大小,将待处理数据划分成逻辑上的多个split),然后每一个split分配一个mapTask并行实例处理
这段逻辑及形成的切片规划描述文件,由FileInputFormat实现类的getSplits()方法完成,切片定义在InputFormat类中的getSplit()方法
在这个方法里面 会获得很多参数(我们的文件参数)形成一个job.xml文件。
自己观察跟踪源码后的理解 能力有限
1.在这里有一个需要提一下的关于如何切片的:
比如文件大小是260M
如果一个切片的大小的块是128M,按照我们之前学的是先将260M 分出一个128M,也就是还剩下132M。此时 剩下的132M 里面会在去分128M 和最后一个4M 作为一个独立的Spilt。也就是分了三个块,第一个是128M,第二个是128M,第三个4M
2.但是通过跟踪源码 却不是这样的:
第一次获得块的大小128M,通过一个While(文件的大小/128>1.1)?为真就切一个块为128M的。如果不为真就将剩下的放在一起,作为一个独立的Spilt。
比如文件大小260M,每一个块大小分为128M。过程:(260/128=2.03>1.1?) 此时切128M 剩下132M(132/128=1.03>1.1?)此时不大于 所以 将132M 放在一个切片。也就是实际是将260M 分成了两个Spilt 一个是128M 一个是132M

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
MapReduce的工作机制主要分为三个阶段:Map、Shuffle和Reduce。 1. Map阶段:在Map阶段,MapReduce将输入数据分成多个小数据,并将它们分配给多个Map任务进行并行处理。Map任务将输入数据转换为键值对,并对每个键值对执行一次map函数。map函数将输入数据转换为一系列键值对,并将这些键值对传递给Reduce任务。 2. Shuffle阶段:在Shuffle阶段,MapReduce将Map任务的输出根据键进行排序,并将具有相同键的值分组在一起。这个过程是通过网络传输和排序完成的。在这个阶段,MapReduce会对每个Reduce任务进行分区,将相同分区的键值对转移到同一个Reduce任务,以便进行下一步的reduce操作。 3. Reduce阶段:在Reduce阶段,MapReduce将每个键值对组传递给Reduce任务,并对具有相同键的值执行reduce函数。reduce函数将相同键的值合并为一个结果,并将结果写回到文件系统。 整个MapReduce的工作机制可以描述为:输入数据->Map任务->Shuffle阶段->Reduce任务->输出结果。 MapReduce的工作机制有以下几个特点: 1. 并行处理:MapReduce可以将输入数据分成多个小数据,并将它们分配给多个Map任务进行并行处理。这样可以大大提高数据处理的速度和效率。 2. 分布式存储:MapReduce采用分布式文件系统(如HDFS)来存储数据,可以将数据存储在多个节点上,从而提高数据的可靠性和可用性。 3. 自动容错:MapReduce可以自动检测并处理节点故障,从而保证了系统的容错能力。 4. 高扩展性:MapReduce可以很容易地扩展到数千个计算节点,以处理大量数据,同时保持高性能和高可靠性。 综上所述,MapReduce通过Map任务、Shuffle阶段和Reduce任务三个步骤,实现了对大规模数据集的分布式处理和分析,具有并行处理、分布式存储、自动容错和高扩展性等特点。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值