全部產品
Search
文件中心

MaxCompute:擴充MapReduce

更新時間:Feb 28, 2024

相比於傳統的MapReudce,MaxCompute提供的擴充MapReduce模型(簡稱MR2)改變了底層的調度和IO模型,可避免作業時冗餘的IO操作。

與MaxCompute相比,MR2在Map、Reduce等函數編寫方式上基本一致,較大的不同點發生在執行作業時,樣本請參見Pipeline樣本

MR2模型產生背景

傳統的MapReduce模型要求在經過每一輪MapReduce操作後,得到的資料結果必須儲存到Distributed File System中(例如,HDFS或MaxCompute資料表)。MapReduce模型通常由多個MapReduce工作群組成,每個作業執行完成後都需要將資料寫入磁碟,然而後續的Map任務很可能只需要讀取一遍這些資料,為之後的Shuffle階段做準備,這種情況就產生了冗餘的磁碟IO操作。

MaxCompute的計算調度邏輯可以支援更複雜的編程模型, 針對上述情況,可以在Reduce後直接執行下一次的Reduce操作,而不需要中間插入一個Map操作。因此,MaxCompute提供了擴充的MapReduce模型,即可以支援Map後串連任意多個Reduce操作,例如Map>Reduce>Reduce。

與Hadoop Chain Mapper/Reducer對比

Hadoop Chain Mapper/Reducer也支援類似的序列化Map或Reduce操作,但和MaxCompute的擴充MapReduce(MR2)模型有本質的區別。

Chain Mapper/Reducer基於傳統的MapReduce模型,僅可以在原有的Mapper或Reducer後增加一個或多個Mapper操作(不允許增加Reducer)。這樣的優點是,您可以複用之前的Mapper商務邏輯,把一個Map或Reduce拆成多個Mapper階段,同時本質上並沒有改變底層的調度和I/O模型。