1. 程式人生 > >大數據生態圈中相關原理(1)

大數據生態圈中相關原理(1)

兩種 大數據 進行 排序 表示 數據塊 溢出 任務 傳輸數據

MapReduce 原理

客戶端任務到jobTracker, jobTracker分發任務到map和reduce。

map從datasplit 中獲取數據區,根據客戶端的相關業務邏輯生成(K,V)對,數據先緩存到環形緩沖區,直到達到設定上限(默認為80%),然後會寫入到磁盤上。寫入磁盤之前,會進行分區排序。

reduce 會根據各自分區copy自己所需要的數據,先進行合並,排序,然後執行reduce的邏輯,接著會將結果輸出的HDFS上part-...-00000

shuffle相關原理,以及參數相關優化

shuffle 在hadoop中表示從map到reduce之間的網絡傳輸數據操作

首先map將得到的(k,v)鍵值對存儲到一個環形緩存區,該緩沖區在達到80%時,會將數據寫到磁盤上(spill to disk),寫入到磁盤上之前會對先執行分組(partitoner)和排序(fast sort)。

這邊有幾個參數可以調整修改以提高性能,緩沖區大小設置(如果能夠估算出map輸出的大小可以直接設置防止緩沖區溢出),緩沖區門限設置,partitioner分區設置(分區方式最好能夠防止數據傾斜現象)

上面說到,數據存到磁盤上面,reduce分別從map端溢出的文件,copy自己分區所需要的數據,如果數據超過10個(默認)會進行combine操作(類似reduce的操作,為了降低輸入reduce的數據量),同樣,這邊還會進行一個合並和排序,然後輸入reduce。

優化參數包括,默認最大合並文件數可以設定的大一些等等,如果有combiner可以將最小combine的數量設定為3,如果數據量很大的話可以使用壓縮編碼,編碼方式可以不用默認的zip編碼采用lzo方式

HDFS相關原理

主要包括兩種角色,namenode,secondarynamenode,datanode

namenode主要負責數據,記錄數據的上傳下載修改,保存數據塊的位置信息。

secondarynamenode,主要負責日誌的合並

datanode實際上的數據存儲位置,會通過heartbeat和namenode進行,並匯報block信息

補充: 之前的有一個項目彈幕采集,在接收端使用樸素貝葉斯算法,通過分詞器可以分析彈幕中的情緒。

大數據生態圈中相關原理(1)