1. 程式人生 > >map的collect和spill過程解析

map的collect和spill過程解析

Map的輸出緩衝是一個迴圈緩衝,collect和spill是在kvstart、kvend和kvindex三個指標的引導下進行的。初始時kvstart=kvend=kvindex=0 1、MapTask的collect過程  collect是一個向緩衝區放東西的過程。此時,kvstart和kvend不動,每放一條記錄,kvindex都會向後移動一位。 2、spillThread的spill過程    spill是一個從緩衝區取東西的一個過程,當發生spill時,首先讓kvend指向kvindex,即kvend=kvindex,然後kvstart向前移動,每移動一位就取出一條記錄寫回磁碟,當spill結束時,kvstart和kvend相遇,即kvstart=kvend,為下次collect又做好準備。