1. 程式人生 > >Combiner執行時機

Combiner執行時機

combiner其實就是Reducer型別:

Class<? extends Reducer<K,V,K,V>> cls =

        (Class<? extends Reducer<K,V,K,V>>) job.getCombinerClass();

                    

Combiner的執行時機:

MapTask:

              ①每次溢寫前,如果指定了Combiner,會執行

              ②將多個溢寫片段,進行合併為一個最終的檔案時,也會運行Combiner,前提是片段數>=3

ReduceTask:

              ③reduceTask在執行時,需要啟動shuffle程序拷貝MapTask產生的資料!

                     資料在copy後,進入shuffle工作的記憶體,在記憶體中進行merge和sort!

                     資料過多,內部不夠,將部分資料溢寫在磁碟!

                     如果有溢寫的過程,那麼combiner會再次執行!

①一定會執行,②,③需要條件!