大資料原理筆記 MapReduce

2021-08-28 07:02:19 字數 1561 閱讀 5663

解決能夠滿足「分而治之」處理要求的場景。處理結果之間不能相互依賴。

map任務之間是不能通訊的,reduce之間也不會發生資訊交換。

處理過程:inputformat,負責資料的輸入,驗證資料格式及檔案切分(split),通過rr(record-reader)過程,根據切片後檔案的位置資訊,從hdfs中將檔案讀取出來以k-v的形式傳遞給map,map後的中間結果經過shuffle,對中間結果進行歸併,形成key-value list,傳遞給reduce,經過處理後形成k-v形式的處理結果,經過outputformat的驗證等操作,存放到hdfs上。

split:split是邏輯概念,記錄切分元資訊,如資料起始位置、資料長度、資料所在節點等,切分方式也由使用者決定。而block是物理儲存單位,兩者的切片結果並不保持一致,只是理想的狀態是split的大小與block塊大小 一致。split的數量決定了map任務的數量,map任務的數量過多(split過小)和過少(split過大)均不合適(管理資源占用、shuffle過程複雜等),需要根據實際情況進行調整,以達到最佳效能。reduce的任務數目取決於集群中的reduce任務槽(slot)的數目,通常設定reduce任務數比slot數目稍少一些。

shuffle:map過程在處理資料時,先將處理資料以k-v的形式儲存在快取中,當快取區域飽和後,進行溢寫操作,溢寫過程中,會對資料進行分割槽、排序和合併操作,將快取中的資料寫到磁碟上;之後由reduce將各自需要的分割槽資料取走進行歸併操作,再輸入到reduce操作,進行資料處理,最後輸出到hdfs。而資料歸併的過程即是shuffle過程,它包含map和reduce兩端的shuflle。

在map端的shuffle,經過四個步驟:輸入資料到map任務、寫入快取、溢寫(分割槽、排序、合併)、檔案歸併。每個map任務分配乙個快取,mr預設100m快取。可以設定溢寫比例,需要小於1,以確保在溢寫過程中新進的資料能夠進入快取,避免資料丟失。溢寫過程中,會預設按照雜湊函式進行分割槽儲存,而後按照key值進行排序操作(預設),排序後的資料可以進行合併(combine)操作,最後寫入磁碟。多個溢寫檔案歸併到大的檔案(已經過分區和排序)。combine操作可以設計預定值,當溢件大於預定值時執行combine操作,否則不執行。jobtracker此時一直監控map任務的執行過程,當map過程全部完成後,通知reduce,執行後續操作。

reduce端shuffle,reduce通過rpc向jobtracker詢問map任務狀態,map完成後,reduce認領資料到快取,多個資料先歸併(merge)再合併(combine),寫入磁碟。如果最終檔案大於資料塊,會生成多個歸併檔案,且檔案中鍵值對是排序的,如果資料量很小,則不需要溢寫到磁碟,直接在快取中歸併,並輸出到reduce。

mapreduce執行過程:

1、程式部署,部署到master上,選擇一部分worker執行map一部分執行reduce;

2、分配map任務和reduce任務;

4、將map結果寫入快取及本地磁碟(不是hdfs)

5、reducer遠端讀取資料,並執行reduce操作;

6、輸出reduce結果

mapreduce可以用於關係代數運算(選擇、並、交、差、連線等)、分組與聚合運算、矩陣-向量乘法和矩陣乘法。

大資料(Kafka) 原理

在kafka中向topic傳送訊息者稱為producer,從topic獲取資料者稱為consumer,consumer被定義到乙個consumer group中,整個kafka集群通過zookeeper進行協調 kafka集群由多個broker例項組成,訊息按照topic進行分類儲存,每個topic...

大資料的原理

目前圍繞hadoop體系的大資料架構包括 傳統大資料架構 資料分析的業務沒有發生任何變化,但是因為資料量 效能等問題導致系統無法正常使用,需要進行公升級改造,那麼此類架構便是為了解決這個問題。依然保留了etl的動作,將資料經過etl動作進入資料儲存。資料分析需求依舊以bi場景為主,但是因為資料量 效...

大資料原理 HDFS

hdfs解決海量的資料分布式儲存 優勢 廉價硬體 實現資料流讀寫 支援大資料集 支援簡單檔案模型 跨平台相容 侷限 實時性不高 無法儲存大量小檔案 只支援追加 抽象塊概念設計 64或128mb 個 支援大規模資料儲存 檔案切割 突破單機儲存界限 降低定址開銷 定址 元資料目錄 資料節點 取資料 適合...