zoukankan      html  css  js  c++  java
  • MapReduce优化设置

    Map阶段的优化

    主要是确定合适的Map数。那么首先要了解Map数的计算公式:
    num_Map_tasks = max[${Mapred.min.split.size}, min(${dfs.block.size}, ${Mapred.max.split.size})] 
      • Mapred.min.split.size指的是数据的最小分割单元大小。
      • Mapred.max.split.size指的是数据的最大分割单元大小。
      • dfs.block.size指的是HDFS设置的数据块大小。

    Reduce阶段优化(实际的reduce计算)
         
            hive 中的reduce预估
             num_Reduce_tasks = min[${Hive.exec.Reducers.max}, (${input.size} / ${ Hive.exec.Reducers.bytes.per.Reducer})] 
     
    reduce在运行时往往需要从相关map端复制数据到reduce节点来处理,因此相比于map任务。reduce节点资源是相对比较缺少的,同时相对运行较慢,正确的reduce任务的个数应该是0.95或者1.75 *(节点数 ×mapred.tasktracker.tasks.maximum参数值)。如果任务数是节点个数的0.95倍,那么所有的reduce任务能够在 map任务的输出传输结束后同时开始运行。如果任务数是节点个数的1.75倍,那么高速的节点会在完成他们第一批reduce任务计算之后开始计算第二批 reduce任务,这样的情况更有利于负载均衡。同时需要注意增加reduce的数量虽然会增加系统的资源开销,但是可以改善负载匀衡,降低任务失败带来的负面影响。同样,Reduce任务也能够与 map任务一样,通过设定JobConf 的conf.setNumReduceTasks(int num)方法来增加任务个数。
     

    jvm重用

     
         正常情况下,MapReduce启动的JVM在完成一个task之后就退出了,但是如果任务花费时间很短,又要多次启动JVM的情况下(比如对很         
            大数据量进行计数操作),JVM的启动时间就会变成一个比较大的overhead。在这种情况下,可以使用jvm重用的参数:
                   Mapred.Job.reuse.jvm.num.tasks
     
     
  • 相关阅读:
    删除链表的倒数第N个节点
    SVN快速入门(TSVN)
    C# HttpWebRequest提交数据方式浅析
    简单的3个SQL视图搞定所有SqlServer数据库字典
    简单统计SQLSERVER用户数据表大小(包括记录总数和空间占用情况)
    详细讲解Android对自己的应用代码进行混淆加密防止反编译
    PHP之网络编程
    PHP之ThinkPHP模板标签操作
    PHP之ThinkPHP数据操作CURD
    关于数组的取极值和排序
  • 原文地址:https://www.cnblogs.com/hankedang/p/5649505.html
Copyright © 2011-2022 走看看