MapReduce模型是SchedulerX自主研發的輕量級分布式跑批模型。通過MapJobProcessor或MapReduceJobProcessor介面將接入的Worker組成分散式運算引擎進行巨量資料跑批。相對於傳統的巨量資料跑批(例如Hadoop、Spark等),MapReduce無需將資料匯入巨量資料平台,且無額外儲存及計算成本,即可實現秒層級海量資料處理,具有成本低、速度快、編程簡單等特性。
注意事項
單個子任務的大小不能超過64 KB。
ProcessResult的result傳回值不能超過1000 Byte。
如果使用reduce,所有子任務結果會緩衝在Master節點,該情況對Master節點記憶體壓力較大,建議子任務個數和result傳回值不要太大。如果沒有reduce需求,使用MapJobProcessor介面即可。
SchedulerX不保證子任務絕對執行一次。在特殊條件下會failover,可能導致子任務重複執行,需要業務方自行實現等冪。
介面
繼承類MapJobProcessor
介面 | 解釋 | 是否必選 |
| 每個子任務執行業務的入口,需從context中擷取taskName,您需自行判斷子任務名稱。邏輯處理完成後,返回ProcessResult。 | 是 |
| 執行map方法可以將一批子任務分布至多台機器上執行,可以多次執行map方法。如果taskList為空白,返回失敗。執行完成後,返回ProcessResult。 | 是 |
| 前端kill任務會觸發該方法,需自行實現如何中斷業務。 | 否 |
繼承類MapReduceJobProcessor
介面 | 解釋 | 是否必選 |
| 每個子任務執行業務的入口,需從context裡擷取taskName,您需自行判斷子任務名稱。邏輯處理完成後,返回ProcessResult。 | 是 |
| 執行map方法可以將一批子任務分布至多台機器上執行,可以多次執行map方法。如果taskList是空,返回失敗。執行完成後,返回ProcessResult。 | 是 |
| 所有Worker節點的子任務執行完成後,會回調reduce方法。reduce由Master節點執行,一般用於資料彙總或通知下遊,也可以用於工作流程的上下遊資料傳遞。 reduce方法能處理所有子任務的結果。
| 是 |
| 前端kill任務會觸發該方法,需自行實現如何中斷業務。 | 否 |
| 當存在子任務失敗情況下,是否執行reduce方法。預設配置為:子任務失敗時,仍然執行reduce方法。 | 否 |
操作步驟
登入MSE SchedulerX控制台,在左側導覽列,單擊任務管理。
在任務管理頁面,單擊建立任務。
在建立任務面板,執行模式下拉式清單選擇MapReduce,在進階配置地區配置相關資訊。
配置項
說明
分發策略
說明需用戶端版本>=1.10.3。
輪詢策略(預設):每個Worker平均分配等量子任務,適用於每個子任務處理耗時基本一致的情境。
負載最優策略:由主節點自動感知Worker節點的負載情況,適用於子任務和Worker機器處理耗時有較大差異的情境。
子任務單機並發數
即單機執行線程數,預設為5。如需加快執行速度,可以調大該值。如果下遊或者資料庫無法承接,可適當調小。
子任務失敗重試次數
子任務失敗會自動重試,預設為0。
子任務失敗稍候再試
子任務失敗稍候再試,單位:秒,預設為0。
子任務failover策略
說明需用戶端版本>=1.8.12。
當執行節點宕機下線後,是否將子任務重新分發給其他機器執行。開啟該配置後,發生failover時,子任務可能會重複執行,需自行做好等冪。
主節點參與執行
說明需用戶端版本>=1.8.12。
主節點是否參與子任務執行。線上可運行Worker數量必須不低於2台,在子任務數量特別大時,推薦關閉該參數。
子任務分發方式
推模型:每台機器平均分配子任務。
拉模型:每台機器主動拉取子任務,沒有木桶效應,支援動態擴容拉取子任務。拉取過程中,所有子任務會緩衝在Master節點,對記憶體有壓力,建議子任務數不超過10,000。
其他配置項,請參見任務管理進階配置參數說明。