开发者社区> 问答> 正文

MaxCompute(ODPS) mapreduce性能优化

MaxCoumpte Mapreduce的哪些参数可用于优化

展开
收起
zy.y 2018-06-15 10:34:13 13898 0
1 条回答
写回答
取消 提交回答
  • Map设置
    set odps.sql.mapper.cpu=100
    作用:
    设定处理map task每个instance的cpu数目,默认为100。[50,,800]之间调整

    set odps.sql.mapper.memory=1024
    作用:
    设定map task每个instance的memory大小,单位M,默认1024M。[256,12288]之间调整

    set odps.sql.mapper.merge.limit.size=64
    作用:
    设定控制文件被合并的最大阈值,单位M,默认64M。用户可以通过控制这个变量,从而达到对map端输入的控制。[0,Integer.MAX_VALUE]之间调整

    set odps.sql.mapper.split.size=256
    作用:
    设定一个map的最大数据输入量,单位M,默认256M。用户可以通过控制这个变量,从而达到对map端输入的控制。[1,Integer.MAX_VALUE]之间调整

    Join设置
    set odps.sql.joiner.instances=-1
    作用: 设定Join task的instance数量,默认为-1。[0,2000]之间调整

    set odps.sql.joiner.cpu=100
    作用: 设定Join task每个instance的cpu数目,默认为100。[50,800]之间调整

    set odps.sql.joiner.memory=1024
    作用:设定Join task每个instance的memory大小,单位为M,默认为1024M。[256
    ,12288]之间调整

    Reduce设置
    set odps.sql.reducer.instances=-1
    作用: 设定reduce task的instance数量,默认为-1。[0,2000]之间调整

    set odps.sql.reducer.cpu=100
    作用: 设定处理reduce task每个instance的cpu数目,默认为100。[50,800]之间调整

    set odps.sql.reducer.memory=1024
    作用: 设定reduce task每个instance的memory大小,单位M,默认1024M。[256,12288]之间调整

    Udf设置
    set odps.sql.udf.jvm.memory=1024
    作用: 设定UDF jvm heap使用的最大内存,单位M,默认1024M。[256,12288]之间调整

    set odps.sql.udf.timeout=600
    作用:设置UDF超时时间,默认为600秒,单位秒。[0,3600]之间调整

    set odps.sql.udf.python.memory=256
    作用:设定UDF python 使用的最大内存,单位M,默认256M。[64,3072]之间调整

    set odps.pypy.enabled=true/false
    作用:python性能优化,设置true后,odps sql都会使用odps-pypy执行python udf/udtf。false 为回到老引擎

    set odps.sql.udf.optimize.reuse=true/false
    作用:
    开启后,相同的UDF函数表达式,只计算一次,可以提高性能,默认为true。

    set odps.sql.udf.strict.mode=false/true
    作用:
    true为金融模式和false为淘宝模式,控制有些函数在遇到脏数据时是返回NULL还是抛异常,true是抛出异常,false是返回null。

    正则优化
    odps.sql.udf.regexp.optimize=true/false
    作用:基于google re2的正则表达式引擎,对正则表达式相关函数进行了优化,true为开启

    Mapjoin设置
    set odps.sql.mapjoin.memory.max=512
    作用:设置mapjoin时小表的最大内存,默认512,单位M,[128,2048]之间调整

    动态分区设置
    set odps.sql.reshuffle.dynamicpt=true/false
    作用:
    (1)false:不会产生倾斜
    (2)true:合并小文件。
    默认为true

    数据倾斜设置
    set odps.sql.groupby.skewindata=true/false
    作用:开启group by优化

    set odps.sql.skewjoin=true/false
    作用:开启join优化,必须设置odps.sql.skewinfo 才有效

    set odps.sql.skewinfo
    作用:设置join优化具体信息,格式
    set odps.sql.skewinfo=skewed_src:(skewed_key)[("skewed_value")]
    例子:
    针对单个字段单个倾斜数值
    set odps.sql.skewinfo=src_skewjoin1:(key)[("0")]

    explain select a.key c1, a.value c2, b.key c3, b.value c4 from src a join src_skewjoin1 b on a.key = b.key;
    针对单个字段多个倾斜数值
    set odps.sql.skewinfo=src_skewjoin1:(key)[("0")("1")]

    explain select a.key c1, a.value c2, b.key c3, b.value c4 from src a join src_skewjoin1 b on a.key = b.key;


    Map设置
    set odps.sql.mapper.cpu=100
    作用:
    设定处理map task每个instance的cpu数目,默认为100。[50,,800]之间调整

    set odps.sql.mapper.memory=1024
    作用:
    设定map task每个instance的memory大小,单位M,默认1024M。[256,12288]之间调整

    set odps.sql.mapper.merge.limit.size=64
    作用:
    设定控制文件被合并的最大阈值,单位M,默认64M。用户可以通过控制这个变量,从而达到对map端输入的控制。[0,Integer.MAX_VALUE]之间调整

    set odps.sql.mapper.split.size=256
    作用:
    设定一个map的最大数据输入量,单位M,默认256M。用户可以通过控制这个变量,从而达到对map端输入的控制。[1,Integer.MAX_VALUE]之间调整

    Join设置
    set odps.sql.joiner.instances=-1
    作用: 设定Join task的instance数量,默认为-1。[0,2000]之间调整

    set odps.sql.joiner.cpu=100
    作用: 设定Join task每个instance的cpu数目,默认为100。[50,800]之间调整

    set odps.sql.joiner.memory=1024
    作用:设定Join task每个instance的memory大小,单位为M,默认为1024M。[256
    ,12288]之间调整

    Reduce设置
    set odps.sql.reducer.instances=-1
    作用: 设定reduce task的instance数量,默认为-1。[0,2000]之间调整

    set odps.sql.reducer.cpu=100
    作用: 设定处理reduce task每个instance的cpu数目,默认为100。[50,800]之间调整

    set odps.sql.reducer.memory=1024
    作用: 设定reduce task每个instance的memory大小,单位M,默认1024M。[256,12288]之间调整

    Udf设置
    set odps.sql.udf.jvm.memory=1024
    作用: 设定UDF jvm heap使用的最大内存,单位M,默认1024M。[256,12288]之间调整

    set odps.sql.udf.timeout=600
    作用:设置UDF超时时间,默认为600秒,单位秒。[0,3600]之间调整

    set odps.sql.udf.python.memory=256
    作用:设定UDF python 使用的最大内存,单位M,默认256M。[64,3072]之间调整

    set odps.pypy.enabled=true/false
    作用:python性能优化,设置true后,odps sql都会使用odps-pypy执行python udf/udtf。false 为回到老引擎

    set odps.sql.udf.optimize.reuse=true/false
    作用:
    开启后,相同的UDF函数表达式,只计算一次,可以提高性能,默认为true。

    set odps.sql.udf.strict.mode=false/true
    作用:
    true为金融模式和false为淘宝模式,控制有些函数在遇到脏数据时是返回NULL还是抛异常,true是抛出异常,false是返回null。

    正则优化
    odps.sql.udf.regexp.optimize=true/false
    作用:基于google re2的正则表达式引擎,对正则表达式相关函数进行了优化,true为开启

    Mapjoin设置
    set odps.sql.mapjoin.memory.max=512
    作用:设置mapjoin时小表的最大内存,默认512,单位M,[128,2048]之间调整

    动态分区设置
    set odps.sql.reshuffle.dynamicpt=true/false
    作用:
    (1)false:不会产生倾斜
    (2)true:合并小文件。
    默认为true

    数据倾斜设置
    set odps.sql.groupby.skewindata=true/false
    作用:开启group by优化

    set odps.sql.skewjoin=true/false
    作用:开启join优化,必须设置odps.sql.skewinfo 才有效

    set odps.sql.skewinfo
    作用:设置join优化具体信息,格式
    set odps.sql.skewinfo=skewed_src:(skewed_key)[("skewed_value")]
    例子:
    针对单个字段单个倾斜数值
    set odps.sql.skewinfo=src_skewjoin1:(key)[("0")]

    explain select a.key c1, a.value c2, b.key c3, b.value c4 from src a join src_skewjoin1 b on a.key = b.key;
    针对单个字段多个倾斜数值
    set odps.sql.skewinfo=src_skewjoin1:(key)[("0")("1")]

    explain select a.key c1, a.value c2, b.key c3, b.value c4 from src a join src_skewjoin1 b on a.key = b.key;

    2019-07-17 22:45:12
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
阿里云EMR2.0 平台:让大数据更简单 立即下载
阿里云EMR 2.0:重新定义新一代开源大数据平台 立即下载
2022年开源大数据热力报告 立即下载