1.計數器
在MR作業中內建計數器,統計任務狀態,使用者可以自定義計數器以實現統計目的,這塊比較簡單,不是什麼原理性的東西,直接略過
2.排序
排序是MR中比較核心的問題,MR中資料是透過排序來進行組織的。排序的效率直接影響著整個作業的執行效率
i)部分排序
在Map任務執行完畢之後,寫入到磁碟檔案之前,對輸出資料進行預排序。這樣的排序是按照鍵進行字典排序而成,將鍵相同的資料組織到一起。
預排序完成之後,將資料寫入本地磁碟,而後透過Partitioner將資料對映傳遞到對應reducer,預設是一個HashPartitioner進行分割槽。對鍵進行hash處理,將值對reducer數目取模,從而確定reducer。
資料傳遞到reducer之後,reducer對每個分割槽內資料進行合併排序,依然是按鍵字典排序,當然也可以透過繼承RowCompartor類並且顯示設定comparatorClass指定排序方式,這樣一來每個reducer輸入分割槽的資料都是有序的,但是就整體所有資料而言,並不是有序的,所以稱之為部分排序。
2.完全排序
要想實現所有資料均可以實現有序,那麼需要對Partitioner進行設定為TotalOrderPartitioner,對所有資料進行分組,比如說將資料分為{a,b,c,d,e,f}六個分組,那麼a組所有鍵必須小於b組,而b組所有鍵必須小於c組,以此類推,這就意味著是按照鍵的範圍對資料進行分組。
1.計數器
在MR作業中內建計數器,統計任務狀態,使用者可以自定義計數器以實現統計目的,這塊比較簡單,不是什麼原理性的東西,直接略過
2.排序
排序是MR中比較核心的問題,MR中資料是透過排序來進行組織的。排序的效率直接影響著整個作業的執行效率
i)部分排序
在Map任務執行完畢之後,寫入到磁碟檔案之前,對輸出資料進行預排序。這樣的排序是按照鍵進行字典排序而成,將鍵相同的資料組織到一起。
預排序完成之後,將資料寫入本地磁碟,而後透過Partitioner將資料對映傳遞到對應reducer,預設是一個HashPartitioner進行分割槽。對鍵進行hash處理,將值對reducer數目取模,從而確定reducer。
資料傳遞到reducer之後,reducer對每個分割槽內資料進行合併排序,依然是按鍵字典排序,當然也可以透過繼承RowCompartor類並且顯示設定comparatorClass指定排序方式,這樣一來每個reducer輸入分割槽的資料都是有序的,但是就整體所有資料而言,並不是有序的,所以稱之為部分排序。
2.完全排序
要想實現所有資料均可以實現有序,那麼需要對Partitioner進行設定為TotalOrderPartitioner,對所有資料進行分組,比如說將資料分為{a,b,c,d,e,f}六個分組,那麼a組所有鍵必須小於b組,而b組所有鍵必須小於c組,以此類推,這就意味著是按照鍵的範圍對資料進行分組。