總結mr應用的執行流程
hadoop 2.x
容錯機制
mr主要思想:分久必合
mapreduce是由兩個階段組成:
map端
reduce端
mr核心思想:「相同」的key為一組,呼叫一次reduce方法,方法內迭代這一組資料進行計算
假設需要處理的檔案存在hdfs中(以block的形式)檔案以split切片的形式輸入進map函式進行處理
split預設和block同樣大小,是一種邏輯上的儲存結構。實際在劃分時,一條資料可能被切分在兩個block中,split會將這條資料在下乙個block中的部分抽取出來補充完整,所以實際的split大小可能略大或略小於block。乙個split對應乙個map。
map一條一條的讀取資料(以(偏移量,值)kv對的形式)
偏移量,即索引號,從0開始,若第一條資料所佔位元組數n,則下一行的偏移量即key從n+1開始,以此類推
map將處理後的結果輸出到memory的buffer中(自定義的key,處理後的value),並在輸出時為每一條記錄打上標籤,即分割槽號
目的:為了讓這條資料知道將來被哪乙個reduce處理
分割槽是由分割槽器進行的,預設的分割槽器是hashpartitioner
分割槽的策略:根據key的hashcode與reduce的個數取模,根據取模結果分組
資料一條一條的寫入buffer,一旦寫入到80m,就會將資料溢寫到磁碟上
到80m時,記憶體會將這80m封鎖,對記憶體中的資料進行combiner(小聚合),並根據分割槽號、key進行排序,寫到磁碟上的是乙個檔案內分好區,區內有序的小檔案。
封鎖記憶體時由剩餘的20m記憶體繼續接收map的輸出
每一次溢寫會產生乙個小檔案
map task全部計算完畢後,會將磁碟上的小檔案合併為乙個大檔案
合併的時候會進行combiner,並採用歸併排序的演算法,將眾多小檔案合成乙個內部分割槽且分區內有序的大檔案
reduce task從map端讀取對應分割槽的資料,寫入到記憶體中,記憶體寫滿就溢寫到磁碟上
寫策略與map端相同,預設情況下記憶體為660m,封鎖後可用記憶體為40m 。溢寫前也會進行排序,當把所有的資料取過來後,會將溢寫產生的小檔案歸併排序並合併。
每一組資料(key相同)呼叫一次reduce函式計算產生結果在hadoop 1.x版本,mapreduce自帶資源管理器jobtracker,同時擔任任務排程器
jobtracker:負載過重,單點故障
資源管理與計算排程強耦合,其他計算框架需要重複實現資源管理
不同框架對資源不能全域性管理,會出現資源搶奪問題
大資料學習筆記(05)
大資料學習筆記 05 nginx配置 master processes 只有乙個 worker processes 1 工作程序數,預設為1,可以改為auto,即啟動與cpu核數相同的worker程序 tengine worker connections 單個worker processes最大的併...
大資料筆記
分類 利用資料學習模型或得到規則,用於 或者判定乙個輸入所屬的類,或者計算屬於某一類的概率 給定乙個輸入,所產生的輸出是乙個布林值。回歸 y g x w g 模型 w 引數 關鍵 確定損失函式,以及最小化損失函式的過程 梯度下降 隨機梯度下降 批量 梯度下降 給出損失函式f wx 目的是優化w使f ...
大資料學習筆記 1 1 了解大資料
三 bigtable 大表 nosql資料庫 hbase 首先引入兩個個大資料應用場景 從以上兩個例子可以引出大資料的兩個核心問題 資料的儲存 分布式的檔案系統 hdfs hadoop distributed file system 資料的計算 資料的計算 不是演算法 分布式的計算 mapreduc...