日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Hadoop:HDFS的概念理解和体系架构-成都加米谷大数据分享

發(fā)布時(shí)間:2025/3/15 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Hadoop:HDFS的概念理解和体系架构-成都加米谷大数据分享 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

?

HDFS是什么?

HDFS 全稱 Hadoop Distributed File System ,簡稱HDFS,是一個(gè)分布式文件系統(tǒng)。它是谷歌的GFS提出之后出現(xiàn)的另外一種文件系統(tǒng)。它有一定高度的容錯(cuò)性,而且提供了高吞吐量的數(shù)據(jù)訪問,非常適合大規(guī)模數(shù)據(jù)集上的應(yīng)用。HDFS 提供了一個(gè)高度容錯(cuò)性和高吞吐量的海量數(shù)據(jù)存儲(chǔ)解決方案。

優(yōu)點(diǎn)

1、存儲(chǔ)超大文件

2、標(biāo)準(zhǔn)流式訪問:“一次寫入,多次讀取”

3、運(yùn)行在廉價(jià)的商用機(jī)器集群上

不足

1、不能滿足低延遲的數(shù)據(jù)訪問

2、無法高效存儲(chǔ)大量小文件

3、暫時(shí)不支持多用戶寫入及隨意修改文件

HDFS概念理解

hdfs架構(gòu)圖如下:

1、文件塊(圖中1、2、3、4帶顏色的小正方形)

文件分成塊存儲(chǔ)(默認(rèn)64M,如今版本是128是M),多臺(tái)計(jì)算機(jī)存儲(chǔ)。DateNode中存儲(chǔ)以數(shù)字編號的方塊(見上圖)用于備份,每個(gè)塊都會(huì)復(fù)制到幾臺(tái)機(jī)器上(默認(rèn)3臺(tái)),如果一個(gè)塊不可用,可從其它地方讀取副本。副本是3,表示一共3處有該塊。如果配置文件中副本設(shè)置為 4 ,但是結(jié)果只有2臺(tái)datanode,最后副本還是2

1000個(gè)1M的小文件會(huì)占用1024個(gè)塊和1024個(gè) inode,但是他只是占用1個(gè)塊中的1M,不會(huì)占用整個(gè)空間,不過由于inode存儲(chǔ)在NameNode的內(nèi)存里,如果NameNode內(nèi)存不足以存儲(chǔ)inode,那么就不能再存儲(chǔ)文件了、所以說HDFS并不適合存儲(chǔ)小文件,有時(shí)候還要將小文件合并為大文件。

顯示塊信息命令:

hdfs fsck / -files –blocks //列出根目錄下各個(gè)文件由哪些塊存儲(chǔ)。

//它只是從NameNode獲取信息,不與DateNode交互。

hdfs fsck / -files –blocks //列出根目錄下各個(gè)文件由哪些塊存儲(chǔ)。

//它只是從NameNode獲取信息,不與DateNode交互。

2、?NameNode和DataNode

NameNode(名字節(jié)點(diǎn)): 管理文件系統(tǒng)命名空間;維護(hù)文件系統(tǒng)樹內(nèi)所有文件和目錄,記錄每個(gè)文件在哪個(gè)DateNode的位置和副本信息,協(xié)調(diào)客戶端對文件的訪問。 以兩種文件格式存在:

fsimage_*:元數(shù)據(jù)鏡像文件,即系統(tǒng)的目錄樹,包括文件目錄和inodes元信息(文件名,文件大小,創(chuàng)建時(shí)間,備份級別,訪問權(quán)限,block的size,所有block的構(gòu)成),每個(gè)inode是hdfs的一個(gè)代表文件或者目錄的元數(shù)據(jù)。這個(gè)鏡像文件相當(dāng)于hdfs的元數(shù)據(jù)額數(shù)據(jù)庫文件。

edits_*:編輯日志文件,也就是事務(wù)日志文件,也就是針對文件系統(tǒng)做的修改操作記錄,記錄元數(shù)據(jù)的變化,相當(dāng)于操作日志文件。一個(gè)文件的創(chuàng)建,追加,移動(dòng)等。 NameNode內(nèi)存中存儲(chǔ)的是=fsimage+edits 檢查點(diǎn):NameNode啟動(dòng)時(shí),從磁盤中讀取上面兩種文件,然后把edits_*里面記錄的事務(wù)全部刷新到 fsimage_*中,這樣就截去了舊的edits_*事務(wù)日志,這個(gè)過程叫checkpoint。

上面文件在~/hadoop-2.6/dfs/name/current目錄下(在hdfs-site.xml) ,除此之外,還有VERSION(版本信息,包含文件系統(tǒng)唯一標(biāo)識(shí)符)和seen_txid(事務(wù)管理,里面保存一個(gè)整數(shù),表示edits_*的尾數(shù))兩個(gè)文件。

DataNode(數(shù)據(jù)節(jié)點(diǎn)):存儲(chǔ),檢索數(shù)據(jù)塊。定期向NameNode發(fā)送所存儲(chǔ)的塊的列表。存儲(chǔ)的塊大小是64M,并且盡量把數(shù)據(jù)塊分布不同的DateNode節(jié)點(diǎn)上。

上圖某文件被分成4塊,在多個(gè)DataNode中存儲(chǔ),而且每塊都復(fù)制兩個(gè)備份,存儲(chǔ)在其它DataNode中。這些數(shù)據(jù)的存儲(chǔ)目錄/home/hduser/hadoop-2.6/dfs/data(dfs-site.xml中指定)。例如下面文件:/home/hduser/hadoop-2.6/dfs/data/current/BP-1111-ip-2222/current/finalized/subbdir0/sudir0,該目錄下的文件包括blk_{id}和blk_{id}.meta,前者是二進(jìn)制格式的數(shù)據(jù)塊,后者是數(shù)據(jù)塊的元信息(版本信息,類型信息 )

DataNode負(fù)責(zé)處理文件系統(tǒng)客戶端的文件讀寫請求,并在NameNode的統(tǒng)一調(diào)度下進(jìn)行數(shù)據(jù)的創(chuàng)建,刪除和復(fù)制工作。如果NameNode數(shù)據(jù)損壞,HDFS所有文件都不能訪問,為了保證高可用性,Hadoop對NameNode進(jìn)行了補(bǔ)充,即Sencondary NameNode。

3、?Secondary NameNode結(jié)點(diǎn)

系統(tǒng)同步運(yùn)行一個(gè)Secondary NameNode,也稱二級NameNode,周期的備份NameNode,它可以用來恢復(fù)NameNode。由于有一定的滯后,所以會(huì)帶來數(shù)據(jù)的損失。為了防止宕機(jī),一般我們會(huì)把它放在另外一臺(tái)計(jì)算機(jī)。使用hdfs-site.xml中dfs.namenode.secondary.http-address屬性可以通過瀏覽器查看Secondary NameNode的運(yùn)行狀態(tài)。 默認(rèn)是1小時(shí),從NameNode獲取fsimage和edits進(jìn)行合并,然后再發(fā)送給namenode,減少namenode的工作量。

HDFS體系架構(gòu)

HDFS采用master/slave架構(gòu)。一個(gè)HDFS集群是由一個(gè)Namenode和一定數(shù)目的Datanodes組成。Namenode是一個(gè)中心服務(wù)器,負(fù)責(zé)管理文件系統(tǒng)的名字空間(namespace)以及客戶端對文件的訪問。集群中的Datanode一般是一個(gè)節(jié)點(diǎn)一個(gè),負(fù)責(zé)管理它所在節(jié)點(diǎn)上的存儲(chǔ)。HDFS暴露了文件系統(tǒng)的名字空間,用戶能夠以文件的形式在上面存儲(chǔ)數(shù)據(jù)。從內(nèi)部看,一個(gè)文件其實(shí)被分成一個(gè)或多個(gè)數(shù)據(jù)塊,這些塊存儲(chǔ)在一組Datanode上。Namenode執(zhí)行文件系統(tǒng)的名字空間操作,比如打開、關(guān)閉、重命名文件或目錄。它也負(fù)責(zé)確定數(shù)據(jù)塊到具體Datanode節(jié)點(diǎn)的映射。Datanode負(fù)責(zé)處理文件系統(tǒng)客戶端的讀寫請求。在Namenode的統(tǒng)一調(diào)度下進(jìn)行數(shù)據(jù)塊的創(chuàng)建、刪除和復(fù)制。 一次寫,多次讀取:一個(gè)文件一旦創(chuàng)建,寫入,關(guān)閉之后就不需要修改了。

讀寫流程如下: 讀流程:客戶端向NameNode請求訪問某個(gè)文件,NameNode返回該文件位置在哪個(gè)DataNode上,然后客戶端從DataNode上讀取數(shù)據(jù)。 寫流程:客戶端向NameNode發(fā)出寫文件寫請求,NameNode告訴客戶端向哪個(gè)DataNode寫文件,然后客戶端將文件寫入該DataNode節(jié)點(diǎn),隨后該 DataNode將該文件自動(dòng)復(fù)制到其它DataNode節(jié)點(diǎn)上,默認(rèn)三份備份。

HDFS常見節(jié)點(diǎn)管理:1 節(jié)點(diǎn)添加 可擴(kuò)展性是一個(gè)重要特征,往HDFS集群中添加一個(gè)節(jié)點(diǎn)步驟如下:

1) 對新節(jié)點(diǎn)進(jìn)行系統(tǒng)配置(hostname,hosts,jdk,防火墻等)

2) 對新節(jié)點(diǎn)進(jìn)行hadoop的安裝和配置,和其它DataNode一樣。

3) 在NameNode中修改~/hadoop-2.6/etc/hadoop/Slaves文件,加入新節(jié)點(diǎn)名稱。

4) 啟動(dòng)(start-all.sh,或者start-dfs.sh,start-yarn.sh)

1) 對新節(jié)點(diǎn)進(jìn)行系統(tǒng)配置(hostname,hosts,jdk,防火墻等)

2) 對新節(jié)點(diǎn)進(jìn)行hadoop的安裝和配置,和其它DataNode一樣。

3) 在NameNode中修改~/hadoop-2.6/etc/hadoop/Slaves文件,加入新節(jié)點(diǎn)名稱。

4) 啟動(dòng)(start-all.sh,或者start-dfs.sh,start-yarn.sh)

2 負(fù)載均衡 HDFS的數(shù)據(jù)在各個(gè)DataNode中的分布可能不均勻,尤其是DataNode出現(xiàn)故障或者新增節(jié)點(diǎn)時(shí),采用下面命令可以重新平衡DataNode的數(shù)據(jù)塊分布: $start-balancer.sh

3 安全機(jī)制 由于NameNode統(tǒng)一調(diào)度,沒有它文件系統(tǒng)無法使用,采用下面兩種機(jī)制確保其安全:

1) 把NameNode存儲(chǔ)的元數(shù)據(jù)轉(zhuǎn)移到其它文件系統(tǒng)上。

2) 使用Secondary NameNode同步備份。

1) 把NameNode存儲(chǔ)的元數(shù)據(jù)轉(zhuǎn)移到其它文件系統(tǒng)上。

2) 使用Secondary NameNode同步備份。

總結(jié)

以上是生活随笔為你收集整理的Hadoop:HDFS的概念理解和体系架构-成都加米谷大数据分享的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。