mapper和reducer的划分

mapper的数量等于输入文件被划分成的分块数,这取决于输入文件的大小以及文件块的大小。一个map操作只处理一个输入分片。运行作业的客户端通过调用getSplits()计算分片,然后将它们发送到jobtracker,jobtracker使用其存储位置信息来调度map任务从而在tasktracker上处理这些分片数据。一般默认分片大小就是块的大小,分片的大小由以下公式计算:
max(minimumSize,min(maximumSize,blockSize))
在默认情况下:minimumSize < blockSize < maximumSize
可以通过调整maximumSize和minimumSize来控制分片大小。

reducer的最优个数与集群中可用的reducer任务槽数有关,总槽数由集群中节点数与每个节点的任务槽数相乘得到。一个常用的方法是设置reducer的个数比总槽数稍微少一点,给reducer任务留点余地(容忍一些错误发生而不需要延长作业的运行时间),如果reduce任务很大,比较明智的做法是使用更多的reducer,使任务粒度更小,从而使任务失败不至于显著影响作业执行时间。

但是map和reduce的数量也不能过多,数量过多虽然可以提高任务并行度,但是太多的map和reduce也会导致整个hadoop框架因为过度的系统资源开销而使任务失败。所以用户在提交map/reduce作业时应该在一个合理的范围内,这样既可以增强系统负载匀衡,也可以降低任务失败的开销。

reduce在运行时往往需要从相关map端复制数据到reduce节点来处理,因此相比于map任务。reduce节点资源是相对比较缺少的,同时相对运行较慢,正确的reduce任务的个数应该是0.95或者1.75 *(节点数 ×mapred.tasktracker.tasks.maximum参数值)。如果任务数是节点个数的0.95倍,那么所有的reduce任务能够在 map任务的输出传输结束后同时开始运行。如果任务数是节点个数的1.75倍,那么高速的节点会在完成他们第一批reduce任务计算之后开始计算第二批 reduce任务,这样的情况更有利于负载均衡。同时需要注意增加reduce的数量虽然会增加系统的资源开销,但是可以改善负载匀衡,降低任务失败带来的负面影响。

mapreduce的输入输出格式

一个被指定为输入路径的目录,其内容不会被递归处理,事实上,这个目录只包含文件,如果包含子目录,也会被解释为文件,从而产生错误,处理的方法是:使用一个文件glob或一个过滤器根据命名模式限定选择目录下的文件;另一种方法是将mapred.input.dir.recursive设置为true从而强制对输入目录进行递归的读取。
FileInputFormat会使用一个默认的过滤器来排除隐藏文件,如果设置了过滤器,它会在默认过滤器的基础上进行过滤,即自定义过滤器只能看到非隐藏文件。

WholeFileInputFormat

将整个文件读为一条记录

NLineInputFormat

可以设置每个mapper收到的输入行数,一般来说,对少量输入行执行map任务是比较低效的(任务初始化的额外开销造成的)

MultipleInputs

输入多个数据源行格式不同的数据文件,可以指定不同的Mapper处理对应的文件

MultipleOutput

可以根据键值将数据写到多个文件

MapReduce的输入输出的更多相关文章

  1. MapReduce输入输出的处理流程及combiner

    MapReduce 的输入输出 MapReduce 框架运转在<key,value> 键值对上,也就是说,框架把作业的输入看成是一组<key,value>键值对,同样也产生一组 ...

  2. Hadoop学习笔记—4.初识MapReduce

    一.神马是高大上的MapReduce MapReduce是Google的一项重要技术,它首先是一个编程模型,用以进行大数据量的计算.对于大数据量的计算,通常采用的处理手法就是并行计算.但对许多开发者来 ...

  3. Hadoop阅读笔记(二)——利用MapReduce求平均数和去重

    前言:圣诞节来了,我怎么能虚度光阴呢?!依稀记得,那一年,大家互赠贺卡,短短几行字,字字融化在心里:那一年,大家在水果市场,寻找那些最能代表自己心意的苹果香蕉梨,摸着冰冷的水果外皮,内心早已滚烫.这一 ...

  4. 【hadoop】——MapReduce解压缩实现

    转载请注明出处:http://www.cnblogs.com/zhengrunjian/p/4527269.html 1作为输入 当压缩文件做为mapreduce的输入时,mapreduce将自动通过 ...

  5. hadoop-初学者写map-reduce程序中容易出现的问题 3

    1.写hadoop的map-reduce程序之前所必须知道的基础知识: 1)hadoop map-reduce的自带的数据类型: Hadoop提供了如下内容的数据类型,这些数据类型都实现了Writab ...

  6. 每天收获一点点------Hadoop之初始MapReduce

    一.神马是高大上的MapReduce MapReduce是Google的一项重要技术,它首先是一个编程模型,用以进行大数据量的计算.对于大数据量的计算,通常采用的处理手法就是并行计算.但对许多开发者来 ...

  7. 初识MapReduce

    MapReduce是Google的一项重要技术,它首先是一个编程模型,用以进行大数据量的计算.对于大数据量的计算,通常采用的处理手法就是并行计算.但对许多开发者来说,自己完完全全实现一个并行计算程序难 ...

  8. [转]MapReduce浅析

    本文转自http://edisonchou.cnblogs.com/ 一.什么是MapReduce MapReduce是Google的一项重要技术,它首先是一个编程模型,用以进行大数据量的计算.对于大 ...

  9. 大数据学习笔记之Hadoop(三):MapReduce&YARN

    文章目录 一 MapReduce概念 1.1 为什么要MapReduce 1.2 MapReduce核心思想 1.3 MapReduce进程 1.4 MapReduce编程规范(八股文) 1.5 Ma ...

随机推荐

  1. checkbox将选中的数据提交到后台

    在项目中有些地方需要批量添加的数据,在这里使用到checkbox比较方便一些. 例如:我需要将多个包添加到同一个地区的 主要的前端代码: 这个是用来放checkbox的. <div id=&qu ...

  2. Security » Authorization » 基于自定义策略的授权

    Custom Policy-Based Authorization¶ 基于自定义策略的授权 98 of 108 people found this helpful Underneath the cov ...

  3. jquery.uploadify 动态传递参数

    最近 项目中使用到 uplaodify 来实现上传文件的功能.在传输动态参数的时候,遇到了问题! 使用官网提供的 settings 方法 官方例子function changeBtnText() {  ...

  4. python语言的优点和缺点

    python作为一门高级编程语言,它的诞生虽然很偶然,但是它得到程序员的喜爱却是必然之路. 龟叔给Python的定位是"优雅"."明确"."简单&qu ...

  5. 找做IT的男朋友会不会没有隐私

    找做IT的男朋友会不会没有隐私你不觉得自己在网上不断的“秀”啊,“晒”啊的行为才是根本所在吗?你应该怕自己的这种行为才对吧-—————————————————————————————————————— ...

  6. 局域网单机部署双tomcat内外网不能访问防火墙问题查出来

    tomcat部署的项目内网访问不了 win7  64 位 控制面板 - 安全 -防火墙-入站规则- 新建规则 选中“端口”按钮,点选“下一步”: 选择“TCP”按钮,在“特定本地端口”输入tomcat ...

  7. 爬虫:pycurl模块的使用说明

    pycurl参考文档:http://pycurl.io/docs/latest/index.html   是英文文档,看起来也不是特么吃力跟着做问题不大. #coding=utf-8 import p ...

  8. JavaScript的this用法

    1. 全局代码中的this this在全局上下文中,它的值是全局对象本身(Global Object),在浏览器中就是Window  Object,如下图示. 看下面几个例子: //Global sc ...

  9. Python开发入门与实战5-django模型

    5.Django模型 在当今的Web 应用中,主观逻辑经常牵涉到与数据库的交互,数据库驱动网站.在后台连接数据库服务器,从中取出一些数据,然后在 Web 页面用各种各样的格式展示这些数据.这个网站也可 ...

  10. Android 自动生成表格

    Layout.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:a ...