由hdfs、mapreduce、yarn三部分分開訴說。只用簡單的話來介紹基本原理,涉及不深,如有錯誤請多多指點。
hadoop是基於google的集群系統理論來進行的開源實現:
google的集群系統:gfs、mapreduce、bigtable
hadoop的集群系統:hdfs、mapreduce、hbase
hadoop設計的初衷是為了解決nutch的海量資料儲存和處理的需求,可以解決大資料場景下的資料儲存和處理的問題。一開始hdfs和mapreduce是作為nutch的兩個元件來使用,後來發現這兩個元件不只是可以用在nutch搜尋,所以就單獨取出來組成了hadoop。
需要注意的是hadoop處理的離線資料,即在資料已知以及不要求實時性的場景下使用。
gb、tb級別的資料
資料增長不快
主要為結構化的資料
統計和報表
tb、pb級別的資料
持續的高速增長
半結構化、非結構化的資料
資料探勘和**性分析
海量資料的獲取、儲存、聚合、管理這些資料以及對資料進行深度分析的新技術和新能力。
hadoop名字的起源: doug cutting如此解釋hadoop的得名:「這個名字是我孩子給一頭吃飽了的棕黃色大象命名的。我的命名標準就是簡短,容易發音和拼寫,沒有太多的意義,並且不會被用於別處。小孩子是這方面的高手。google就是由小孩命名的。」hdfs:用於分布式檔案的儲存
mapreduce:用於資料的計算
yarn:進行任務排程。是hadoop2.0出現的
什麼是hdfs?
hdfs全稱是hadoop分布式檔案儲存系統,通過將大規模資料檔案切分為block資料塊,並多複本的儲存在集群的多個datanode節點中,來保證大資料儲存的高可靠高效能。
有哪些優缺點?
優點是:1.支援超大檔案;2.可以快速檢測和應對機器故障(通過故障檢測和心跳機制);3.有很高資料吞吐量(通過流式資料訪問和簡化一致性模型);4.高容錯性(通過多個副本);5.可以構建在廉價的機器上。
缺點是:1.不適合低延遲的訪問需求(hdfs注重於高資料吞吐量);2.大量小檔案會影響namenode的效能(namenode記憶體的大小決定了hdfs可儲存的檔案數量);3.不適合多使用者寫入和修改檔案(hdfs只支援一次寫入多次讀取,只能追加不能修改);
讀資料流程
1.客戶端向namenode提交讀資料申請;2.namenode通過查詢元資料返回檔案的block列表和datanode位址;3.客戶端會挑選最近的datanode讀取block,讀取完成後關當前閉datanode連線並尋找下乙個block所在的datanode;4.每讀完乙個block都會進行checknum驗證,如果出現錯誤會從下乙個擁有該block副本的datanode讀取;5.全部讀取完成後datanode通知namenode關閉連線。
寫資料流程
1.客戶端向namenode提交寫資料申請;2.namenode會檢查該檔案是否存在,返回是否可以上傳;3.當客戶端寫入檔案時,會向namenode申請blocks,獲取合適的datanode列表;4.以管道的形式將開發者切分好的檔案寫入datanode中,該datanode同時向副本datanode寫入資料;5.檔案儲存成功後會返回乙個應答資訊給客戶端完成資料寫入。
大量小檔案處理什麼是mapreduce?
mapreduce是一種分布式計算模型,用於解決海量資料的計算問題。它主要由map和reduce兩個階段組成,使用者只需要實現map()和reduce()兩個函式即可實現分布式計算。
map階段:1.讀取檔案內容,解析為key-value對,每乙個鍵值對會呼叫一次map函式;2.通過編寫邏輯對輸入的鍵值對進行處理轉換成新的鍵值對輸出;3.輸出的鍵值對會進行分割槽,相同分割槽的資料會根據key的順序放在同乙個集合中。
reduce階段:1.reduce會主動獲取map任務的輸出,按照不同的分割槽複製到不同的reduce。2.通過編寫邏輯對多個map任務的輸出進行處理,轉換為新的鍵值對輸出;3.最後將結果儲存在檔案中。
shuffle機制
shuffle機制的mapreduce框架最為核心的部分,主要是指將map輸出結果交給reduce的過程。可以分為map端和redeuce端。
在map端,map的輸出結果會先寫入環形緩衝區,快取中的資料會進行分割槽、排序和合併,當快取達到溢寫比後會寫出為磁碟檔案,在map任務結束之前會將多個溢寫檔案合併為乙個大檔案,通知對應的reduce任務進行處理。
在reduce端,從不同的map處獲取任務資料後放入緩衝區進行歸併和合併操作,最後交給reduce函式處理
處理資料傾斜問題
資料傾斜的產生是由於資料的key分化嚴重不均,形成一部分資料很多,一部分資料很少的局面,導致存在reduce節點執行過慢從而增加整體執行時間的情況。
1.可以將一次的mapreduce操作分為兩次,第一次map處理時將key隨機分到不同的reduce中先進行一次處理,再將相同key分配到reduce中進行第二次處理。
2.將可能出現大量資料的key分為多組進行reduce操作,再進行第二次mr操作。
3.增加reduce的記憶體,增加reduce的個數
實現二次排序
mr調優策略
1.減少資料的傳輸量
2.盡量使用記憶體
3.減少磁碟i/o的次數
4.增大任務並行數
5.除此之外還有根據自己集群及網路的實際情況來調優
yarn在集群中有什麼作用?
yarn是hadoop的集群資源管理系統。主要由資源管理器resource manager和節點管理器node manager組成。
yarn的組成
執行過程
通俗易懂之Ajax
在網頁載入的時候,載入的都是靜態的資源,你寫的每一句話,每乙個結構都是固定的,比如在哪個區域顯示哪張,頁面渲染之後都無法在改變,想要改變就只有改 然後在重新整理頁面。而ajax可以讓我們在 執行的時候,去請求其他地方的資源或者介面,然後把請求來的資料,根據我們寫好的方法渲染到頁面上,多次進行ajax...
網路基礎好文(通俗易懂系列)
通俗易懂,鏈結 1.cpu是什麼 cpu跑的快 cpu 記憶體 硬碟 速度 cpu沒記性 硬碟 記憶體 cpu 容量 記憶 cpu的小弟 暫存器和程式計數器 cpu工作 讀取記憶體和快取裡的程式 暫存器以迅雷般的速度運輸資料,程式計數器會記錄每一條指令,然後一條一條發給cpu執行。cpu的唯一的記憶...
通俗易懂之Ajax 二
我們常用的請求方式有get請求和post請求,其中get請求一般是用來獲取資料的,post請求一般是上傳資料的。function get url,callback 上面的if 也可以簡寫成邏輯運算子的短路操作 callback callback xhr.responsetext function p...