本文对MapReduce使用限制项进行说明,不遵循使用限制可能导致业务受到影响。
MaxCompute MapReduce限制项汇总,如下表所示。
边界名 | 边界值 | 分类 | 配置项名称 | 默认值 | 是否可配置 | 说明 |
---|---|---|---|---|---|---|
Instance内存占用 | [256 MB,12 GB] | 内存限制 | odps.stage.mapper(reducer).mem 和odps.stage.mapper(reducer).jvm.mem |
2048 MB+1024 MB | 是 | 单个Map Instance或Reduce Instance占用Memory,有框架Memory(默认2048 MB)和JVM的Heap Memory(默认1024 MB)两部分。 |
Resource数量 | 256个 | 数量限制 | - | 无 | 否 | 单个Job引用的Resource数量不超过256个,Table、Archive按照一个单位计算。 |
输入路数和输出路数 | 1024个和256个 | 数量限制 | - | 无 | 否 | 单个Job的输入路数不能超过1024(同一个表的一个分区算一路输入,总的不同表个数不能超过64个),单个Job的输出路数不能超过256。 |
Counter数量 | 64个 | 数量限制 | - | 无 | 否 | 单个Job中自定义Counter的数量不能超过64,Counter的Group Name和Counter Name中不能带有井号(#),两者长度和不能超过100。 |
Map Instance | [1,100000] | 数量限制 | odps.stage.mapper.num | 无 | 是 | 单个Job的Map Instance个数由框架根据Split Size计算得出,如果没有输入表,可以通过odps.stage.mapper.num直接设置,最终个数范围[1,100000]。 |
Reduce Instance | [0,2000] | 数量限制 | odps.stage.reducer.num | 无 | 是 | 单个Job默认Reduce Instance个数为Map Instance个数的1/4,用户设置作为最终的Reduce Instance个数,范围[0,2000]。可能出现这样的情形:Reduce处理的数据量会比Map大很多倍,导致Reduce阶段比较慢,而Reduce只能最多2000。 |
重试次数 | 3 | 数量限制 | - | 无 | 否 | 单个Map Instance或Reduce Instance失败重试次数为3,一些不可重试的异常会直接导致作业失败。 |
Local Debug模式 | Instance个数不超100 | 数量限制 | - | 无 | 否 |
Local Debug模式下:
|
重复读取Resource次数 | 64次 | 数量限制 | - | 无 | 否 | 单个Map Instance或Reduce Instance重复读一个Resource次数限制<=64次。 |
Resource字节数 | 2 GB | 长度限制 | - | 无 | 否 | 单个Job引用的Resource总计字节数大小不超过2 GB。 |
Split Size | 大于等于1 | 长度限制 | odps.stage.mapper.split.size | 256 MB | 是 | 框架会参考设置的Split Size值来划分Map,决定Map的个数。 |
STRING列内容长度 | 8 MB | 长度限制 | - | 无 | 否 | MaxCompute表STRING列内容长度不允许超出限制。 |
Worker运行超时时间 | [1,3600] | 时间限制 | odps.function.timeout | 600 | 是 | Map或者Reduce Worker在无数据读写且没有通过context.progress() 主动发送心跳的情况下的超时时间,默认值是600s。
|
MapReduce引用Table资源支持的字段类型 | BIGINT、DOUBLE、STRING、DATETIME、BOOLEAN | 数据类型限制 | - | 无 | 否 | MapReduce任务引用表资源时,若表字段有其他类型字段执行报错。 |
MapReduce是否支持读取OSS数据 | - | 功能限制 | - | 无 | 否 | MapReduce不支持读取OSS数据。 |
MapReduce是否支持MaxCompute 2.0新类型 | - | 功能限制 | - | 无 | 否 | MapReduce不支持MaxCompute 2.0新类型。 |