学习mapreduce过程中, map第一个阶段是从hdfs 中获取文件的并进行切片,我自己在好奇map的启动的数量和文件的大小有什么关系,进过学习得知map的数量和文件切片的数量有关系,那文件的大小和切片的数量的有什么关系 ,下面我就进入Hadoop的源代码进行研究一下 文件的大小和切片的数量有什么关系。

文件获取和切片和一个InputFormat 这个抽象类有关系 ,这个抽象类 只有两个抽象的方法 分别是

第一个方法是用来过去切片,第二方法使用获取文件。获取切片与第一个方法有关,我们进入研究这个方法 那我们看一下这个类的实现类是怎样来实现这个方法的

子类的实现方法太长 我们就看和我们相关的东西 来探究文件的大小和切片数量有什么关系

这一部分是用来处理文件大小和切片的关系,blocksize 是就是128M  那个SPLIT_SLOP 那个值是1.1 length 的长度是用来表示文件的长度,那从上面不难看出,如果有一个一个文件的大小与块大小进行求余运算的如果小于12.8的话 那多出来那部分不会重新分配一个切片,会和最后一个切片组成一个切片 也就是说,如果一个129M的文件的话他就会是一个切片而不是两个,我在某些书中看到这个这样的说法 就是如果一个文件的大小与块大小进行相除除不尽的话,就需要多分出一个切片这种说法是不正确的,这要看文件的大小来看,取余小于12.8M的话,那就不会分出一个切片。我想写这个代码的人也是有考虑的如果文件的大小仅仅比一个块多一点而运行一个map 这样是非常浪费资源的,所以会将最后一个切片的大小会进行改变。

mapreduce 中 map数量与文件大小的关系的更多相关文章

  1. 【Hadoop】三句话告诉你 mapreduce 中MAP进程的数量怎么控制?

    1.果断先上结论 1.如果想增加map个数,则设置mapred.map.tasks 为一个较大的值. 2.如果想减小map个数,则设置mapred.min.split.size 为一个较大的值. 3. ...

  2. MapReduce中map并行度优化及源码分析

    mapTask并行度的决定机制 一个job的map阶段并行度由客户端在提交job时决定,而客户端对map阶段并行度的规划的基本逻辑为:将待处理数据执行逻辑切片(即按照一个特定切片大小,将待处理数据划分 ...

  3. 如何确定Hadoop中map和reduce的个数--map和reduce数量之间的关系是什么?

    一般情况下,在输入源是文件的时候,一个task的map数量由splitSize来决定的,那么splitSize是由以下几个来决定的 goalSize = totalSize / mapred.map. ...

  4. mapreduce中控制mapper的数量

    很多文档中描述,Mapper的数量在默认情况下不可直接控制干预,因为Mapper的数量由输入的大小和个数决定.在默认情况下,最终input占据了多少block,就应该启动多少个Mapper.如果输入的 ...

  5. hadoop中map和reduce的数量设置

    hadoop中map和reduce的数量设置,有以下几种方式来设置 一.mapred-default.xml 这个文件包含主要的你的站点定制的Hadoop.尽管文件名以mapred开头,通过它可以控制 ...

  6. hadoop中map和reduce的数量设置问题

    转载http://my.oschina.net/Chanthon/blog/150500 map和reduce是hadoop的核心功能,hadoop正是通过多个map和reduce的并行运行来实现任务 ...

  7. java中map接口hashMap以及Enty之间的用法和关系

    java中map接口hashMap以及Enty之间的转换 首先说的是map接口: Map提供了一种映射关系,其中的元素是以键值对(key-value)的形式存储的,能够实现根据key快速查找value ...

  8. Hadoop中maptask数量的决定因素

    刚开始接触hadoop平台的时候 部分初学者对于mapreduce中的maptask的数量是怎么确定的 可能有点迷惑,如果看了jobclient里面的maptask初始化的那段源码,那么就比较清楚了, ...

  9. Hadoop学习笔记—12.MapReduce中的常见算法

    一.MapReduce中有哪些常见算法 (1)经典之王:单词计数 这个是MapReduce的经典案例,经典的不能再经典了! (2)数据去重 "数据去重"主要是为了掌握和利用并行化思 ...

随机推荐

  1. Hbase-2.0.0_01_安装部署

    该文章是基于 Hadoop2.7.6_01_部署 进行的 1. 主机规划 主机名称 IP信息 内网IP 操作系统 安装软件 备注:运行程序 mini01 10.0.0.11 172.16.1.11 C ...

  2. January 07th, 2018 Week 01st Sunday

    To remember is to disengage from the present. 铭记过去就是放弃当下. To remember the past doesn't mean we would ...

  3. [转]mysql和redis的区别

    转自https://www.cnblogs.com/zxh1297/p/9394108.html 1.mysql和redis的数据库类型 mysql是关系型数据库,主要用于存放持久化数据,将数据存储在 ...

  4. node_01_自定义模块(先创建package.json)

    package.json必须是json格式 你必须确保所有的字符串,包括属性名,都是使用双引号而不是单引号 { "name": "163", "ver ...

  5. D - Milking Time 动态规划

    Bessie is such a hard-working cow. In fact, she is so focused on maximizing her productivity that sh ...

  6. Djando 的 cmd命令

    1.黑窗口命令 安装Django ​ pip install django==1.11.16 -i https://pypi.doubanio.com/simple/ 创建项目 ​ django-ad ...

  7. mysql3

    一数据类型二约束条件一数据类型: 1 数字(默认都是有符号,宽度指的是显示宽度,与存储无关(只是int)) tinyint int bigint:个数,年龄,id,qq号,手机号 float:价格,身 ...

  8. redis php扩展及基本命令

    linux 安装php mysql redis memchache 等工具 用 OneinStack 安装步骤 注意 如果有单独数据盘,建议您先挂载数据盘,建议将网站内容.数据库放在数据盘中.如何挂载 ...

  9. [ASP.NET]ScriptManager控件使用

    目录 概述 局部刷新 错误处理 类型系统扩展 注册定制脚本 注册 Web 服务 在客户端脚本中使用认证和个性化服务 ScriptManagerProxy 类 添加 ScriptManager 控件 客 ...

  10. 移动App测试实战—专项测试

       我们在进行了手工的功能测试之后,也开发了一些自动化测试用例,并且做了性能测试之后,测试工作看似比较完整了.但是当我们的App在大量的用户那里被安装和使用的时候,还是会有很多我们之前没有预料的问题 ...