`

Hadoop MapReduce Job性能调优——修改Map和Reduce个数

 
阅读更多

 

  • map task的数量即mapred.map.tasks的参数值,用户不能直接设置这个参数。Input Split的大小,决定了一个Job拥有多少个map。默认input split的大小是64M(与dfs.block.size的默认值相同)。然而,如果输入的数据量巨大,那么默认的64M的block会有几万甚至几十万的Map Task,集群的网络传输会很大,最严重的是给Job Tracker的调度、队列、内存都会带来很大压力。mapred.min.split.size这个配置项决定了每个 Input Split的最小值,用户可以修改这个参数,从而改变map task的数量。
  • 一个恰当的map并行度是大约每个节点10-100map,且最好每个map的执行时间至少一分钟。
  •  reduce task的数量由mapred.reduce.tasks这个参数设定,默认值是1。
  • 合适的reduce task数量是0.95或者0.75*( nodes * mapred.tasktracker.reduce.tasks.maximum), mapred.tasktracker.tasks.reduce.maximum的数量一般设置为各节点cpu core数量,即能同时计算的slot数量。对于0.95,当map结束时,所有的reduce能够立即启动;对于1.75,较快的节点结束第一轮reduce后,可以开始第二轮的reduce任务,从而提高负载均衡。


  • 对一 个job的map数和reduce数的设定对一个job的运行是非常重要的,并且非常简单。以下是一些设 置这几个值的经验总结:

    • 如果job的每个map或者 reduce task的运行时间都只有30-40秒钟,那么就减少该job的map或者reduce数,每一个task(map|reduce)的setup和加入到 调度器中进行调度,这个中间的过程可能都要花费几秒钟,所以如果每个task都非常快就跑完了,就会在task的开始和结束的时候浪费太多的时间。JVM 的reuse方式也可以解决 这个问题。
    • 如 果某个input的文件 非常的大,比如 1TB,可以考虑将hdfs上的每个block size设大,比如设成256MB或者512MB,这样map和reduce的数据 可以减小。而且用户还可以通过命令 hadoop distcp -Ddfs.block.size=$[256*1024*1024] /path/to/inputdata /path/to/inputdata-with-largeblocks的方式来将已经存在咋hdfs上的数据进行大块化。然后删除掉原先的文件。
    • 只 要每个task都运行至少30-40秒钟,就可以考虑将mapper数扩大,比如集群的map slots为100个,那么就不要将一个job的mapper设成101,这样前100个map能够并行完成,而最后一个map要在前100个 mapper结束后才开始,因此在reduce开始运行前,map阶段的时间几乎就要翻倍。
    • 尽量不要运行太多的reduce task。对大多数job来说,最好rduce的个数最多和集群中的reduce持平,或者比集群的 reduce slots小。这个对于小集群而言,尤其重要。


        深度分析如何在Hadoop中控制Map的数量

0
0
分享到:
评论
2 楼 Molisa 2014-03-21  
Molisa 写道
mapred.min.split.size指的是block数,不是字节数大小

我的说话有问题,是字节数据,最终会根据

max(minimumSize, min(maximumSize, blockSize))
and by default:
minimumSize < blockSize < maximumSize

计算出一个split size的大小,通常是一个block size的大小,比如64M或者128M
1 楼 Molisa 2014-03-21  
mapred.min.split.size指的是block数,不是字节数大小

相关推荐

    Optimizing Hadoop for MapReduce(PACKT,2014)

    MapReduce is the distribution system that the Hadoop MapReduce engine uses to distribute work around a cluster by working parallel on smaller data sets. It is useful in a wide range of applications, ...

    提高hadoop的mapreduce job效率笔记

    修改mapper和reducer数量,如何使用combiner,什么时候该选择哪个writeable等。资料里很详细说明了。

    hadoop 1.2.1 api 最新chm 伪中文版

    Map/Reduce框架由一个单独的master JobTracker 和每个集群节点一个slave TaskTracker共同组成。master负责调度构成一个作业的所有任务,这些任务分布在不同的slave上,master监控它们的执行,重新执行已经失败的任务...

    大数据云计算技术 优酷网Hadoop及Mapreduce入门教程(共35页).pptx

    Hadoop Map-reduce Job Scheduler Resources Hadoop, Why? 数据太多了,需要能存储、快速分析Pb级数据集的系统 单机的存储、IO、内存、CPU有限,需要可扩展的集群 使用门槛低,数据分析是个庞杂的问题,MPI太复杂 ...

    Hadoop从入门到上手企业开发

    049 MapReduce编程模型讲解及运行PI程序和JobWebUI监控Job运行 050 如何按照【八股文】方式编写MapReduce 051 复习MapReduce编写模型和【八股文】方式编写MapReduce 052 完成MyWordCount程序编写 053 打包运行...

    hadoop 2.7.6 eclipse插件

    18/05/25 19:51:49 INFO mapreduce.Job: map 0% reduce 0% 18/05/25 19:52:20 INFO mapreduce.Job: map 100% reduce 0% 18/05/25 19:52:29 INFO mapreduce.Job: map 100% reduce 100% 18/05/25 19:52:31 INFO ...

    hadoop0.23.9离线api

    org.apache.hadoop.mapreduce.lib.reduce org.apache.hadoop.mapreduce.security org.apache.hadoop.mapreduce.server.jobtracker org.apache.hadoop.mapreduce.server.tasktracker org.apache.hadoop.mapreduce...

    基于Hadoop的数据分析.doc

    如下图 " "所示: " " " "(4)设置hadoop的安装路径:依次点击window,preferences,Hadoop Map/Reduce " ",设置hadoop安装路径为/usr/local/hadoop " " " "(5)在桌面新建三个文件,如图所示: " " " " " " " "新建...

    hadoop_the_definitive_guide_3nd_edition.pdf

    Map and Reduce Java MapReduce Scaling Out Data Flow Combiner Functions Running a Distributed MapReduce Job Hadoop Streaming Ruby Python import import import import import import org.apache.hadoop.fs...

    hadoop 权威指南(第三版)英文版

    hadoop权威指南第三版(英文版)。 Foreword . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii Preface . . . . . . ....

    Apress - Pro Hadoop

    这两个函数由程序员提供给系统,下层设施把Map和Reduce操作分布在集群上运行,并把结果存储在GFS上。  3、BigTable。一个大型的分布式数据库,这个数据库不是关系式的数据库。像它的名字一样,就是一个巨大的表格...

    Flink笔记.md

    谈及Hadoop大家自然不会对 MapReduce感到陌生,它将计算分为两个阶段,分别为 Map 和 Reduce。MapReduce计算框架虽然借鉴了函数式编程和矢量编程的思想完成了分布式计算。但不得不承认MapReduce在矢量编程结构过于...

    拥抱大数据——初识Hadoop,轻松应对海量数据存储与分析所带来的挑战

    4.1 Map+Reduce 4.2 MapReduce架构 4.3 MapReduce数据处理 4.3.1 job与task 4.3.2 MapReduce数据处理 五、YARN(资源管理系统) 5.1 YARN架构 六、手把手搭建Hadoop环境(Linux上) 6.1 安装jdk 6.2 安装hadoop 6.3

    Spark一个高效的分布式计算系统

    Spark是UC Berkeley AMP lab所开源的类Hadoop ...但不同于MapReduce的是Job中间输出和结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的map reduce的算法。

    hadoop_the_definitive_guide_3nd_edition

    Hadoop definitive 第三版, 目录如下 1. Meet Hadoop . . . 1 Data! 1 Data Storage and Analysis 3 Comparison with Other Systems 4 RDBMS 4 Grid Computing 6 Volunteer Computing 8 A Brief History of Hadoop 9...

    Hadoop权威指南(第2版).

    用户只要继承MapReduceBase,提供分别实现Map和Reduce的两个类,并注册Job即可自动分布式运行。 目前Release版本是0.20.203.0。还不成熟,但是已经集群规模已经可以达到4000个节点,是由Yahoo!实验室中构建的。下面...

    hadoop5hadoop5

    MapReduce Library将Input分成M份。这里的Input Splitter也可以是多台机器并行Split。 Master将M份Job分给Idle状态的M个worker来处理; 对于输入中的每一个, value&gt; pair 进行Map操作,将中间结果Buffer在Memory里...

    hadoop_4hadoop_4

    MapReduce Library将Input分成M份。这里的Input Splitter也可以是多台机器并行Split。 Master将M份Job分给Idle状态的M个worker来处理; 对于输入中的每一个, value&gt; pair 进行Map操作,将中间结果Buffer在Memory里...

    YarnExamples:Hadoop 2 (YARN API) 中带有 Map Reduce 示例的存储库

    Hadoop 2 (YARN API) 中带有 Map Reduce 示例的存储库 目前的例子: 如何执行示例? 我假设你克隆了这个存储库,你用 netbeans 编译并构建了一个 jar 文件,并且你已经安装了 Hadoop 2.X。 如果之前没问题,则应...

Global site tag (gtag.js) - Google Analytics