柚子快報邀請碼778899分享:hadoop hdfs 大數(shù)據(jù)
柚子快報邀請碼778899分享:hadoop hdfs 大數(shù)據(jù)
目錄
一、什么是HDFS
二、HDFS架構(gòu)角色
三、HDFS工作流程
四、HDFS的優(yōu)缺點
一、什么是HDFS
1、定義
HDFS即Hadoop分布式文件系統(tǒng)(Hadoop Distributed Filesystem),以流式數(shù)據(jù)訪問模式來存儲超大文件,它和現(xiàn)有的分布式文件系統(tǒng)有很多共同點。但同時,它和其他的分布式文件系統(tǒng)的區(qū)別也是很明顯的。HDFS是一個高度容錯性的系統(tǒng),適合部署在廉價的機器上。HDFS能提供高吞吐量的數(shù)據(jù)訪問,非常適合大規(guī)模數(shù)據(jù)集上的應用。HDFS放寬了一部分POSIX約束,來實現(xiàn)流式讀取文件系統(tǒng)數(shù)據(jù)的目的。HDFS在最開始是作為Apache Nutch搜索引擎項目的基礎(chǔ)架構(gòu)而開發(fā)的。
2、特點
① 保存多個副本,且提供容錯機制,副本丟失或宕機自動恢復。默認存 3 份。
② 運行在廉價的機器上。
③ 適合大數(shù)據(jù)的處理。多大?多???HDFS 默認會將文件分割成 block,64M 為 1 個 block。然后將block按鍵值對存儲在HDFS上,并將鍵值對的映射存到內(nèi)存中(namenode)。 如果小文件太多,那內(nèi)存的負擔會很重。
二、HDFS架構(gòu)角色
個HDFS集群包含一個單獨的NameNode和多個DataNode。HDFS采用一種稱為rack-aware的策略。Rack1、Rack2....
NameNode:是 Master 節(jié)點,是管理者。管理數(shù)據(jù)塊映射;處理客戶端的讀寫請求;配置副本策略;管理 HDFS 的名稱空間;NameNode 保存的 metadata 包括文件 ownership 和 permission文件包含的 block 信息。Block 保存在那些 DataNode 節(jié)點上(數(shù)據(jù)并非保存在 NameNode 磁 盤上的,它是在 DataNode 啟動時上報給 NameNode 的,NameNode 接收到之后 將這些信息保存在內(nèi)存中)NameNode 的 metadata 信息在 NameNode 啟動后加載到內(nèi)存中,Metadata 存儲到磁盤上的文件名稱為 fsimage,Block 的位置信息不會保存在 fsimage 中,Edits 文件記錄了客戶端操作 fsimage 的日志,對文件的增刪改等。用戶對 fsimage 的操作不會直接更新到 fsimage 中去,而是記錄在 edits 中。
SecondaryNameNode:分擔 namenode 的工作量;是 NameNode 的冷備份;合并 fsimage 和 fsedits 然后再發(fā)給 namenode。
???? 合并fsimage和fsedits文件,然后發(fā)送并替換NameNode的fsimage文件, 同時自己留下一個副本。這個副本可供 NameNode 毀滅之后的部分文件恢復。
可以通過配置 fs.checkpoint.period 修改合并間隔時間,默認 1 小時
也可以通過配置 edits 日志文件的大小,fs.checkpoint.size 規(guī)定 edits 文 件的最大值,來讓 SecondaryNameNode 來知道什么時候該進行合并操作了。 默認是 64M
DataNode:Slave 節(jié)點,奴隸,干活的。負責存儲 client 發(fā)來的數(shù)據(jù)塊 block;執(zhí)行數(shù)據(jù) 塊的讀寫操作。
熱備份:b 是 a 的熱備份,如果 a 壞掉。那么 b 馬上運行代替 a 的工作。
冷備份:b 是 a 的冷備份,如果 a 壞掉。那么 b 不能馬上代替 a 工作。但是 b 上存儲 a 的 一些信息,減少 a 壞掉之后的損失。
fsimage:元數(shù)據(jù)鏡像文件(文件系統(tǒng)的目錄樹。)
edits:元數(shù)據(jù)的操作日志(針對文件系統(tǒng)做的修改操作記錄)
namenode 內(nèi)存中存儲的是=fsimage+edits。
SecondaryNameNode 負責定時默認 1 小時,從 namenode 上,獲取 fsimage 和 edits 來 進行合并,然后再發(fā)送給 namenode。減少 namenode 的工作量。
三、HDFS工作流程
備份數(shù)據(jù)的存放:備份數(shù)據(jù)的存放是HDFS可靠性和性能的關(guān)鍵。HDFS采用一種稱為rack-aware的策略來決定備份數(shù)據(jù)的存放。通過一個稱為Rack Awareness的過程,NameNode決定每個DataNode所屬rack id。缺省情況下,一個block塊會有三個備份,一個在NameNode指定的DataNode上,一個在指定DataNode非同一rack的DataNode上,一個在指定DataNode同一rack的DataNode上。這種策略綜合考慮了同一rack失效、以及不同rack之間數(shù)據(jù)復制性能問題。
示例寫入流程:
將 64M 的 block1 按 64k 的 package 劃分;然后將第一個 package 發(fā)送給 host2;host2 接收完后,將第一個 package 發(fā)送給 host1,同時 client 想 host2 發(fā)送第 二個 package;host1 接收完第一個 package 后,發(fā)送給 host3,同時接收 host2 發(fā)來的第二個 package。以此類推,如圖紅線實線所示,直到將 block1 發(fā)送完畢。host2,host1,host3向NameNode,host2向Client發(fā)送通知,說“消息發(fā)送完了”。 如圖粉紅顏色實線所示。client 收到 host2 發(fā)來的消息后,向 namenode 發(fā)送消息,說我寫完了。這樣就 真完成了。如圖黃色粗實線發(fā)送完 block1 后,再向 host7,host8,host4 發(fā)送 block2,如圖藍色實線所示。發(fā)送完 block2 后,host7,host8,host4 向 NameNode,host7 向 Client 發(fā)送通 知,如圖淺綠色實線所示。client 向 NameNode 發(fā)送消息,說我寫完了,如圖黃色粗實線。。。這樣就完 畢了。
分析,通過寫過程,我們可以了解到:
①寫 1T 文件,我們需要 3T 的存儲,3T 的網(wǎng)絡(luò)流量帶寬。
②在執(zhí)行讀或?qū)懙倪^程中,NameNode 和 DataNode 通過 HeartBeat 進行保存通信, 確定 DataNode 活著。如果發(fā)現(xiàn) DataNode 死掉了,就將死掉的 DataNode 上的數(shù)據(jù),放 到其他節(jié)點去。讀取時,要讀其他節(jié)點去。
③掛掉一個節(jié)點,沒關(guān)系,還有其他節(jié)點可以備份;甚至,掛掉某一個機架,也沒關(guān)系; 其他機架上,也有備份。
副本的選擇:為了降低整體的帶寬消耗和讀取延時,HDFS會盡量讀取最近的副本。如果在同一個rack上有一個副本,那么就讀該副本。如果一個HDFS集群跨越多個數(shù)據(jù)中心,那么將首先嘗試讀本地數(shù)據(jù)中心的副本。安全模式:系統(tǒng)啟動后先進入安全模式,此時系統(tǒng)中的內(nèi)容不允許修改和刪除,直到安全模式結(jié)束。安全模式主要是為了啟動檢查各個DataNode上數(shù)據(jù)塊的安全性
示例讀流程:
讀操作就簡單一些了,如圖所示,client 要從 datanode 上,讀取 FileA。而 FileA 由 block1 和 block2 組成。那么,讀操作流程為:
a. client 向 namenode 發(fā)送讀請求。
b. namenode 查看 Metadata 信息,返回 fileA 的 block 的位置。
block1:host2,host1,host3
block2:host7,host8,host4
c. block 的位置是有先后順序的,先讀 block1,再讀 block2。而且 block1 去 host2 上讀??; 然后 block2,去 host7 上讀??;這個例子中,client 位于機架外,那么如果 client 位于機架內(nèi)某個 DataNode 上,例如,client 是 host6。那么讀取的時候,遵循的規(guī)律是:優(yōu)先讀取本機架上的數(shù)據(jù)。
四、HDFS的優(yōu)缺點
1、HDFS 優(yōu)點
高容錯性
數(shù)據(jù)自動保存多個副本
副本丟失后,自動回復
適合批處理
移動的計算和操作
數(shù)據(jù)位置暴漏給計算框架
適合大數(shù)據(jù)處理
GB、TB、PB 甚至更大
百萬規(guī)模以上的文件數(shù)量
10K+節(jié)點
可構(gòu)建在廉價的機器上
通過副本提高可靠性
提供了容錯和恢復機制
低延遲數(shù)據(jù)訪問
毫秒級讀取
低延遲與高吞吐量
2、HDFS 缺點
小文件存取
占用 NameNode 內(nèi)存空間
尋址時間超過讀取時間
并發(fā)寫入、文件隨即修改
一個文件同時只能由一個寫入者
僅支持 append
柚子快報邀請碼778899分享:hadoop hdfs 大數(shù)據(jù)
相關(guān)鏈接
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。
轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。