Hadoop - Hadoop中CombineFileInputFormat 理解

本文深入探讨了CombineFileInputFormat的工作原理,这是一种用于Hadoop的数据输入格式,旨在解决由大量小文件引起的性能问题。通过将小文件合并为单一的InputSplit,可减少Map任务的数量,提高处理效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

CombineFileInputFormat作用:将多个小文件打包成一个InputSplit提供给一个Map处理,避免因为大量小文件问题,启动大量任务。CombineFileInputFormat是一种新的inputformat,用于将多个文件合并成一个单独的split,另外,它会考虑数据的存储位置
 

CombineFileInputFormat 原理

第一次:将同DN上的所有block生成Split

1.循环nodeToBlocks,获得每个DN上有哪些block

2.循环这些block列表

3.将block从blockToNodes中移除,避免同一个block被包含在多个split中

4.将该block添加到一个有效block的列表中,这个列表主要是保留哪些block已经从blockToNodes中被移除了,方便后面恢复到blockToNodes中

5.向临时变量curSplitSize增加block的大小

6.判断curSplitSize是否已经超过了设置的maxSize

a) 如果超过,执行并添加split信息,并重置curSplitSize和validBlocks

b) 没有超过,继续循环block列表,跳到第2步

7.当前DN上的block列表循环完成,判断剩余的block是否允许被split(剩下的block大小之和是否大于每个DN的最小split大小)

a) 如果允许,执行并添加split信息

b) 如果不被允许,将这些剩余的block归还blockToNodes

8.重置

9.跳到步骤1

第二次:对不再同一个DN上但是在同一个Rack上的block进行合并(只是之前还剩下的block)

最后,对于既不在同DN也不在同rack的block进行合并(经过前两步还剩下的block)

 

总结:

合并,经过了3个步骤。同DN --> 同rack不同DN -->  不同rack

将可以合并的block写到同一个split中

 

consult:

https://blog.youkuaiyun.com/wawmg/article/details/17095125 

https://blog.youkuaiyun.com/u011750989/article/details/11890373 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值