MapReduce切片机制,java架构师课程网盘

MapReduce切片机制,java架构师课程网盘,第1张

MapReduce切片机制,java架构师课程网盘

切片的规则我们需要通过阅读源代码来了解。首先我们来看下hadoop中默认的两个参数配置

1.默认参数

官网地址:http://hadoop.apache.org/docs/stable/hadoop-mapreduce-client/hadoop-mapreduce-client-core/mapred-default.xml

mapreduce.job.split.metainfo.maxsize 10000000

mapreduce.input.fileinputformat.split.minsize 0

2. 源码查看

![在这里插入图片描述](https://img-blog.csdnimg.cn/20190404174812689.png?x-oss-process=image/wate

《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》

【docs.qq.com/doc/DSmxTbFJ1cmN1R2dB】 完整内容开源分享

rmark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9kcGItYm9ib2thb3lhLXNtLmJsb2cuY3Nkbi5uZXQ=,size_16,color_FFFFFF,t_70)

注意:SPLIT_SLOP = 1.1,即当划分后剩余文件大小除splitSize大于1.1时,循环继续,小于1.1时退出循环,将剩下的文件大小归到一个切片上去。

// 128MB

long blockSize = file.getBlockSize();

// 128MB

long splitSize = computeSplitSize(blockSize, minSize, maxSize);

// 文件的大小 260MB

long bytesRemaining = length;

// 第一次 260/128=2.x > 1.1

// 第二次 132/128=1.03 <1.1 不执行循环

while (((double) bytesRemaining)/splitSize > SPLIT_SLOP) {

// 获取块的索引

int blkIndex = getBlockIndex(blkLocations, length-bytesRemaining);

// 将块的信息保存到splits集合中

splits.add(makeSplit(path, length-bytesRemaining, splitSize,

blkLocations[blkIndex].getHosts(),

blkLocations[blkIndex].getCachedHosts()));

// 260-128=132MB

bytesRemaining -= splitSize;

}

// 将剩余的132MB添加到splits集合中

if (bytesRemaining != 0) {

int blkIndex = getBlockIndex(blkLocations, length-bytesRemaining);

splits.add(makeSplit(path, length-bytesRemaining, bytesRemaining,

blkLocations[blkIndex].getHosts(),

blkLocations[blkIndex].getCachedHosts()));

}

3.切片总结

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5676822.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存