ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

MapReduce切片机制

2021-06-16 10:35:15  阅读:203  来源: 互联网

标签:文件 文件大小 最大值 MapReduce 切片 3.4 设置 机制


 

切片机制

FileInputFormat中默认的切片机制

 

切片的大小=块的大小=128M(如果程序运行在本地则是32M)

切片的标准是看文件大的小是达到块大小的1.1倍(140.8M),如果达到则按128M进行切片,如果没达到,则其本身就是一个切片。切完第一片剩下的数据在进行比较,如果达到块大小的1.1被,依然按照128M切片,不够则本身为一个切片,以此类推。

CombineTextInputFormat切片机制

关于大量小文件的优化策略:

默认情况下FileInputformat对任务的切片机制是按文件规划切片,不管文件多小,都会是一个单独的切片,都会交给一个maptask,这样如果有大量小文件,就会产生大量的maptask,处理效率极其低下。

CombineTextInputFormat切片机制

先设置一个文件切片的最大值

job.setInputFormatClass(CombineTextInputFormat.class);//设置 CombineTextInputFormat切片机制

CombineTextInputFormat.setMaxInputSplitSize(job, 4194304); //设置为4M

1虚拟存储过程:(不会切片)

将输入目录下所有文件大小,依次和设置的setMaxInputSplitSize值比较,如果不大于设置的最大值,逻辑上划分一个块。如果输入文件大于设置的最大值且大于两倍,那么以最大值切割一块。当剩余数据大小超过设置的最大值且不大于最大值2倍,此时将文件均分成2个虚拟存储块(防止出现太小切片)

 

例如:设置的最大值为4,一个文件的大小如果小于4,则本身就为一块,如果大于4的2倍(8),则按照设置的最大值4M存储,如果文件大于4小于8,则存储为两个相等大小文件

 

文件大小 < 4 不动

8 > 文件大小 > 4 平分成两份

文件>8 按设置的最大值(4)存储

2切片过程:

(a)判断虚拟存储的文件大小是否大于setMaxInputSplitSize值,大于等于则单独形成一个

切片。

(b)如果不大于则跟下一个虚拟存储文件进行合并,共同形成一个切片。

(c)测试举例:有4个小文件大小分别为1.7M、5.1M、3.4M以及6.8M这四个小文件,则虚拟存

储之后形成6个文件块,大小分别为:

1.7M,(2.55M、2.55M),3.4M以及(3.4M、3.4M)

最终会形成3个切片,大小分别为:

(1.7+2.55)M,(2.55+3.4)M,(3.4+3.4)M

标签:文件,文件大小,最大值,MapReduce,切片,3.4,设置,机制
来源: https://www.cnblogs.com/SimpleHe/p/14888332.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有