1.由程式的inputformat呼叫recordreader的read()方法讀取外部的資料,返回k,v鍵值對.
2.讀取的k,v鍵值對傳送給map()方法,作為其入參來執行使用者定義的map邏輯.
3.context.write方法被呼叫時,map()方法的輸出結果會被寫入到環形緩衝區內.
4.環形緩衝區其實就是乙個陣列,預設大小100m,大小可以調節,後端不斷接受資料的同時,前端資料不斷被溢位.
5.spiller元件會從環形緩衝區內溢位檔案,這個過程還會進行分割槽和排序,如果有combiner也會執行combine.spiller的不斷工作,會不斷溢位許多小檔案,這些小檔案仍然在maptask所在的機器上.
6.小檔案執行merge(合併),形成分割槽且區內有序的大檔案(歸併排序,會再次呼叫combiner).
7.reduce會根據自己的分割槽,去maptask中拉取屬於自己的資料.
1.reduce端通過網路向maptask獲取資料.
2.分組,並傳送給reduce(k,iterator)方法.
3.呼叫context.write()方法,會讓outputformat方法呼叫recordwriter的write()方法將結果寫入到資料倉儲中.
coturn整個流程
1 通過4個協議互動 allocate 帶上使用者名稱和密碼在coturn註冊上該使用者資訊,建立客戶端傳送護具的udp埠。createpermission 在coturn上建立需要透傳的ip port資訊。send indication 客戶端發資料到coturn,coturn在記憶體中查詢是否有...
MapReduce執行流程
mapreduce的大體流程是這樣的,如圖所示 由可以看到mapreduce執行下來主要包含這樣幾個步驟 1.首先對輸入資料來源進行切片 2.master排程worker執行map任務 3.worker讀取輸入源片段 4.worker執行map任務,將任務輸出儲存在本地 5.master排程work...
MapReduce整體流程
由於map是並行地對輸入的檔案集進行操作,所以它的第一步 filesplit 就是把檔案集分割成一些子集.如果乙個單個的檔案大到它已影響到查詢效率時,它會被分割成一些小的分割體。要指出的是分割這個一步是不知道輸入檔案的內部邏輯結構的,比如,以行為邏輯分割的文字檔案會被以任意的位元組界限分割,所以這個...