hadoop-mr-切片

本文详细介绍了Hadoop MapReduce中的数据切片机制,强调了数据切片与数据块的区别,解释了切片大小通常与数据块保持一致的原因。接着深入源码,解析了FileInputFormat的切片流程以及CombineTextInputFormat如何合并小文件以减少MapTask的数量,提高资源利用率。最后,探讨了如何在实际应用中使用CombineTextInputFormat。
摘要由CSDN通过智能技术生成

数据切片机制

在这里插入图片描述

----首先说一下数据切片和数据块的区别:数据切片是在逻辑上对数据进行分片,并不改变数据的存储方式。一个mr任务的map阶段的并行度是由客户端提交job时的切片数决定的。一个切片一个maptask处理,而数据库是在物理上把数据分成一片一片的。

----再说一下他们的大小,数据块的大小是128MB,这个是由磁盘传输效率所控制的。而数据切片的数据大小一般和数据块的大小是一样的。这是因为有这么一个yarn优先原则:yarn会尽量在数据块的本地启动map task,若切片大小和数据块大小不一致,或许数据处理速度会提升,但是会产生网络传输,得不偿失。所以数据切片默认和数据库的大小一致。

----总结:
--------分块:指的是文件在HDFS上的存储,将要存储的数据分成一块又一块,然后放在HDFS上存储;
--------切片:指的是MapReduce阶段的FileInputFormat阶段对于数据块的切片,默认的切片大小是块大小。

切片源码解析

----FileInputFormat切片流程大概是这样的:首先找到你数据存储的目录,然后遍历这个目录下的所有文件,对文件做处理:先获取文件大小,再计算切片大小,然后按照切片大小对文件进行for循环切分(里面调用了makesplit 这么一个方法),每次切分时,都要判断切完

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值