首先是 mapreduce經過splitinput 輸入分片 決定map的個數在用record記錄 key value。然後分為以下三個流程:
map:
輸入 key(long型別偏移量) value(text一行字串)
輸出 key value
shuffle:
合併(merge)map輸出時先輸出到環形記憶體,當記憶體使用率達到60%時開始溢位寫入到檔案,溢位檔案都是小檔案,所以就要合併他們,在這個構成中就會排序,根據key值比較排序
排序(sort)如果你自定義了key的資料型別要求你的類一定是writeablecompartor的子類,不想繼承writeablecompartor,至少實現writeable,這時你就必須在job上設定排序比較器job.setsortcmpartorclass(mycompartor.class);而mycompartor.class必須繼承rawcompartor的類或子類
分割槽(partition)會根據map輸出的結果分成幾個檔案為reduce準備,有幾個reducetask就分成幾個檔案,在job上設定分割槽器job.setpartitionerclass(mypartition.class)myrtition.class要繼承partitioner這個類
分組(group)分割槽時會呼叫分組器,把同一分割槽中的相同key的資料對應的value製作成乙個iterable,並且會在sort。在job上設定分組器。job.setgroupcompartorclass(mygroup.class)mygroup.class必須繼承rawcompartor的類跟子類
上面的結果儲存到本地檔案中,而不是hdfs上
上面只要有完成結果,reduce就開始複製上面的結果,通過http方式
reduce
輸入key時map輸出時的key value是分組器分的iterable
輸出 key value
輸出結果儲存在hdfs上而不是本地檔案中
TCP IP面試題(持續更新)
no.1 tcp ip基礎 這些知識點都可以參考 no.2 常見面試題 tcp與udp的區別 tcp協議是有連線的,有連線的意思是開始傳輸實際資料之前tcp的客戶端和伺服器端必須通過三次握手建立連線,會話結束之後通過四次揮手結束連線。而udp是無連線的 tcp協議保證資料按序傳送,按序到達,提供超時...
幾個面試題 持續更新
1.簡單列舉了解的程式語言及語言間區別。python簡單,python開發效率快,python 簡潔,跨平台,學習成本比較低 2.列舉python2和3的區別 後期要找一些模組和專案的區別 py3 print 編碼方式 unicode 類 新式類 range 可迭代物件 input 獲取的內容全都是...
kafka面試題 持續更新
kafka 中的資料只能儲存七天,隨之而來的問題就是某個偏移量對應的資料被清除,我們通過偏移量去查詢資料而發生的報錯 資料已經被 kafka 給清除掉了 也就是說我們讀取的偏移量小於 kafka 中資料儲存的最早的偏移量,說明資料已經被 kafka 給乾掉了 解決方式 將拿到的偏移量和 kafka ...