本文對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新類型。 |