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