本文對MapReduce使用限制項進行說明,不遵循使用限制可能導致業務受到影響。

MaxCompute MapReduce限制項匯總,如下表所示。
邊界名 邊界值 分類 配置項名稱 默認值 是否可配置 說明
Instance內存占用 [256 MB,12 GB] 內存限制 odps.stage.mapper(reducer).memodps.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模式下:
  • 默認Map Instance個數為2,不能超過100。
  • 默認Reduce Instance個數為1,不能超過100。
  • 默認一路輸入下載記錄數100,不能超過10000。
重復讀取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新類型。