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