博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[MapReduce_4] MapTask 并发数的决定机制
阅读量:5875 次
发布时间:2019-06-19

本文共 967 字,大约阅读时间需要 3 分钟。


 

0. 说明

  介绍 && Map 个数 & Reduce 个数指定 && Map 切片计算

 

 


 

1. 介绍

  一个 job 的 Map 阶段并行度由客户端在提交 job 时决定

  客户端对 Map 阶段并行度的规划基本逻辑为:

  1. 将待处理的文件进行逻辑切片(根据切片大小,逻辑上划分多个 split ),然后每一个 split 分配一个 MapTask 并行处理实例

  2. 具体切片规划是由 FileInputFormat 实现类的 getSplits()方法 完成

 

 


 

2. Map 个数 & Reduce 个数指定

  Map个数指定:

  1. 根据文件个数指定
  2. 根据压缩文件可切割性

 

  Reduce个数指定:

job.setNumReduceTasks(3);

 

 


 3. Map 切片计算

  【3.1 通过文件类型判断是否可切片】

  判断文件类型(是否可切割),通过文件名后缀的反转来进行编解码器的判断

  1. 无压缩编解码器 // 可切割
  2. 可切割的压缩编解码器 // 可切割
  3. 不可切割的压缩编解码器 // 不可切割,切片大小即文件大小 

  SequenceFile

  可切割,无论用什么压缩方式,或压缩编解码器

 

  【3.2 切片计算】

  最大切片值(MaxValue):  Long.MAX_VALUE

  最小切片值(MinValue):  1

  块大小(BlockSize ):     32M(本地模式) 128M(分布式)

  切片计算

Math.max(MinValue , Math.min(MaxValue,BlockSize));

 

  通过设置最大切片值和最小切片值确定切片大小

// 设置最大切片大小FileInputFormat.setMaxInputSplitSize(job,100);// 设置最小切片大小FileInputFormat.setMinInputSplitSize(job,100);

 

 

  【3.3 总结逻辑切割】

  1、先进行数据切片,切片结果保留在 temp 下,job.split,里面存有切片数据偏移量索引

  2、每个 Map 通过此索引来计算属于自己的切片数据

  

 

 

 


 

转载于:https://www.cnblogs.com/share23/p/9779557.html

你可能感兴趣的文章
Xcode全局替换内容,一键Replace
查看>>
1000 加密算法
查看>>
exif_imagetype() 函数在linux下的php中不存在
查看>>
Ruby的case语句
查看>>
Linux的链接文件-ln命令
查看>>
maven的tomcat插件如何进行debug调试
查看>>
table表头固定
查看>>
截取字符串中两个字符串中的字符串
查看>>
spring xml properties split with comma for list
查看>>
判断点是否在三角形内
查看>>
Android实战简易教程-第二十三枪(基于Baas的用户注冊验证username是否反复功能!)...
查看>>
在odl中怎样实现rpc
查看>>
leetcode 110 Balanced Binary Tree
查看>>
python活用isdigit方法显示系统进程
查看>>
项目开发总结
查看>>
知行合一
查看>>
jmeter插件之jsonpath提取响应结果和做断言
查看>>
apt-get 命令加 autoclean clean autoremove 区别
查看>>
Docs-->.NET-->API reference-->System.Web.UI.WebControls-->Repeater
查看>>
发布支持多线程的PowerShell模块 —— MultiThreadTaskRunner
查看>>