Hadoop 少量map/reduce任务执行慢问题

最近在做报表统计,跑hadoop任务。

之前也跑过map/reduce但是数据量不大,遇到某些map/reduce执行时间特别长的问题。

执行时间长有几种可能性:

1. 单个map/reduce任务处理的任务大。

    需要注意每个任务的数据处理量大小不至于偏差太大。可以切割部分大文件。

2. map数量过多, reduce拉取各方数据慢

    这种情况,可以在中间加一轮map过程A。

    即map -> mapA - > reduce,来减少reduce拉取数据的源头的个数

3. 遇到了执行慢节点

    hadoop 可以执行推测执行。对于某些耗时长的任务,如果集群有多余的slot可以启动额外的任务执行。

    如果对于同一个map(或者reduce),有任何一个相同map执行完成。则其他任务会被kill, 该map(或者reduce)执行完成。

    这种情况完全避免了,慢节点问题。

  推测执行参数: mapred.map.tasks.speculative.execution 和 mapred.reduce.tasks.speculative.execution 默认开启。

   

map/reduce官方默认参数: https://hadoop.apache.org/docs/r1.0.4/mapred-default.html

时间: 2024-11-05 21:52:05

Hadoop 少量map/reduce任务执行慢问题的相关文章

基于Hadoop的Map reduce编程(一)

翻译的一篇国外的关于hadoop mapreduce的文章,文章比较长,先翻译第一部分吧 翻译者:pconlin900 博客:http://pconline900.javaeye.com Hadoop是apache的一个开源的map-reduce框架,MapReduce是一个并行计算模型,用来处理海量数据.模型思想来源于google的Jeffrey Dean 和 Sanjay Ghemawat,包括map() reduce()两个主要的功能. 这是一个很简单的类似于Hadoop的MapReduc

Hadoop + Hive + Map +reduce 集群安装部署

环境准备: CentOS 5.5 x64&http://www.aliyun.com/zixun/aggregation/37954.html">nbsp; (3台) 10.129.8.52  (master) ======>> NameNode, SecondaryNameNode,JobTracker 10.129.8.76    (slave01) ======>> DataNode, TaskTracker 10.129.8.33    (slave

hadoop 设置map和reduce的个数

问题描述 hadoop 设置map和reduce的个数 本人搭建了hadoop的开发环境,一个namenode, 两个datanode,写了一个wordcount的程序,能成功执行,那么问题来了,怎么查看map,和reduce的个数,又怎么人为的控制map个reduce的个数. 解决方案 context.getCounter() job.setNumReduceTasks(?) 解决方案二: 如果只有1个map-reduce,那map的个数是由文件大小来确定的,64MB一个分片,能划分多少个分片

Hadoop Map/Reduce教程

目的 这篇教程从用户的角度出发,全面地介绍了Hadoop Map/Reduce框架的各个方面. 先决条件 请先确认Hadoop被正确安装.配置和正常运行中.更多信息见: Hadoop快速入门对初次使用者. Hadoop集群搭建对大规模分布式集群. 概述 Hadoop Map/Reduce是一个使用简易的软件框架,基于它写出来的应用程序能够运行在由上千个商用机器组成的大型集群上,并以一种可靠容错的方式并行处理上T级别的数据集. 一个Map/Reduce 作业(job) 通常会把输入的数据集切分为若

Map/Reduce Task JVM堆的大小设置优化

前一阵子发现用户提交的hive query和hadoop job会导致集群的load非常高,经查看配置,发现很多用户擅自将mapred.child.java.opts设置的非常大,比如-Xmx4096m(我们默认设置是-Xmx1024m),  导致了tasktracker上内存资源耗尽,进而开始不断swap磁盘上数据,load飙升 TaskTracker在spawn一个map/reduce task jvm的时候,会根据用户JobConf里面的值设定jvm的参数,然后写入一个taskjvm.sh

分布式基础学习【二】 —— 分布式计算系统(Map/Reduce)

二. 分布式计算(Map/Reduce) 分布式式计算,同样是一个宽泛的概念,在这里,它狭义的指代,按Google Map/Reduce 框架所设计的分布式框架.在Hadoop中,分布式文件系统,很大程度上,是为各种分布式计 算需求所服务的.我们说分布式文件系统就是加了分布式的文件系统,类似的定义推广到分 布式计算上,我们可以将其视为增加了分布式支持的计算函数.从计算的角度上看, Map/Reduce框架接受各种格式的键值对文件作为输入,读取计算后,最终生成自定义格式的 输出文件.而从分布式的角

MapReduce核心map reduce shuffle (spill sort partition merge)详解

  Shuffle过程是MapReduce的核心,也被称为奇迹发生的地方.要想理解MapReduce, Shuffle是必须要了解的.Shuffle的正常意思是洗牌或弄乱,可能大家更熟悉的是Java API里Collections.shuffle(List)方法,它会随机地打乱参数list里的元素顺序.如果你不知道MapReduce里 Shuffle是什么,那么请看这张图:         这张是官方对Shuffle过程的描述.但我可以肯定的 是,单从这张图你基本不可能明白Shuffle的过程,

Ruby中的类Google Map/Reduce框架Skynet介绍_ruby专题

Skynet是一个很响亮的名字,因为它是阿诺施瓦辛格主演的经典系列电影<终结者>里面的统治人类的超级计算机网络.不过本文的Skynet没这么恐怖,它是一个ruby版本的Google Map/Reduce框架的名字而已. Google的Map/Reduce框架实在太有名气了,他可以把一个任务切分为很多份,交给n台计算机并行执行,返回的结果再并行的归并,最后得到运算的结果.据说Google一个搜索结果会Map到7000台服务器并行执行,这么多么可怕的分布式运算能力阿!有了Map/Reduce,程序

Lucene-Hadoop, GFS中Map/Reduce的简单实现

Hadoop是一个用于构建分布式应用程序的框架.Hadoop框架给应用程序透明的提供了一组稳定和可靠的接口.这项技术的实现得易于映射/ 归约编程范式.在这个范式里,一个应用程序被分割成为许多的小的任务块.每一个这样的任务块被集群中的任意一个节点的计算机执行或重新执行.此外,这种范 式还提供了一种分布式的文件系统,这种文件系统用来存储数据于集群中相互间具有高带宽的计算机上.映射/归约和分布式文件系统都被设计成为容错的结构.也 就是说,当集群中某个节点发生了故障整个文件系统或者映射/归约操作仍然能够