zoukankan      html  css  js  c++  java
  • 3.控制hive map reduce个数

    参考:
    https://blog.csdn.net/wuliusir/article/details/45010129
    https://blog.csdn.net/zhong_han_jun/article/details/50814246

    1.split的计算方式:

    splitsize = max(splitsize,min(blocksize,filesize/NUMmaps))
    NUMmaps即为默认的map数,默认为1,也就是说最大的splitsize为文件的大小。

    2.不同的hive.input.format时map个数

    hive 的split size在使用不同的input format时依赖的参数不同。

    • hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat
      此时由以下三个参数控制
    mapred.max.split.size  #控制最大split
    mapred.min.split.size.per.node #控制最小split,优先级低
    mapred.min.split.size.per.rack #控制最小split,优先级高
    • hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat
      此时由
    mapred.min.split.size
    mapred.map.tasks #可以忽略,默认为1

    在做split时,不如一个split的数据也会放到一个map执行,如果splitsize 128m,文件150m,则会有两个map,一个128m,另外一个22m,这样两个map执行的时间就不一样了

    注意
    把mapred.min.split.sizemapred.min.split.size.per.node 从128M增加到256M,可能并不会降低map数,这时需要增大数值,一边增加一边测试

    3.reduce个数

    reduce可以通过设置set mapred.reduce.tasks=100来指定个数,或者指定reduce计算的数据,set hive.exec.reducers.bytes.per.reducer=1073741824

    以下是个样例:

    set mapred.max.split.size=1024000000;
    set mapred.min.split.size.per.node=512000000;
    set mapred.min.split.size.per.rack=512000000;
    set mapreduce.task.io.sort.mb=200;
    set hive.exec.parallel.thread.number=1  ;
    set mapred.reduce.tasks = 314;
    set mapreduce.map.memory.mb=1024;
    set mapreduce.task.io.sort.factor=50;




  • 相关阅读:
    5、垂直拆分---分库--mycat
    4、读写分离---双主双从(mycat)
    3、读写分离---一主一从(mycat)
    2、安装启动(Mycat)
    1、入门(Mycat)
    Nginx 相关参数记录(2)
    Nginx 相关参数记录(1)
    Linux
    一大波学习内容!
    开源镜像站
  • 原文地址:https://www.cnblogs.com/skyrim/p/10314197.html
Copyright © 2011-2022 走看看