小編給大家分享一下HDFS基本概念有哪些,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
源自于Google的GFS論文 發(fā)表于2003年10月 HDFS是GFS克隆版 ,HDFS的全稱是Hadoop Distributed File System易于擴(kuò)展的分布式文件系統(tǒng),運(yùn)行在大量普通廉價(jià)機(jī)器上,提供容錯機(jī)制,為大量用戶提供性能不錯的文件存取服務(wù)
整個Hadoop的體系結(jié)構(gòu)主要是通過HDFS來實(shí)現(xiàn)對分布式存儲的底層支持,并通過MR來實(shí)現(xiàn)對分布式并行任務(wù)處理的程序支持。
HDFS采用主從(Master/Slave)結(jié)構(gòu)模型,一個HDFS集群是由一個NameNode和若干個DataNode組成的(在最新的Hadoop2.2版本已經(jīng)實(shí)現(xiàn)多個NameNode的配置-這也是一些大公司通過修改hadoop源代碼實(shí)現(xiàn)的功能,在最新的版本中就已經(jīng)實(shí)現(xiàn)了)。NameNode作為主服務(wù)器,管理文件系統(tǒng)命名空間和客戶端對文件的訪問操作。DataNode管理存儲的數(shù)據(jù)。HDFS支持文件形式的數(shù)據(jù)。
從內(nèi)部來看,文件被分成若干個數(shù)據(jù)塊,這若干個數(shù)據(jù)塊存放在一組DataNode上。NameNode執(zhí)行文件系統(tǒng)的命名空間,如打開、關(guān)閉、重命名文件或目錄等,也負(fù)責(zé)數(shù)據(jù)塊到具體DataNode的映射。DataNode負(fù)責(zé)處理文件系統(tǒng)客戶端的文件讀寫,并在NameNode的統(tǒng)一調(diào)度下進(jìn)行數(shù)據(jù)庫的創(chuàng)建、刪除和復(fù)制工作。NameNode是所有HDFS元數(shù)據(jù)的管理者,用戶數(shù)據(jù)永遠(yuǎn)不會經(jīng)過NameNode。
自動快速檢測應(yīng)對硬件錯誤
流式訪問數(shù)據(jù)
移動計(jì)算比移動數(shù)據(jù)本身更劃算
簡單一致性模型
異構(gòu)平臺可移植
移動計(jì)算和移動數(shù)據(jù)
在學(xué)習(xí)大數(shù)據(jù)的時候接觸了移動數(shù)據(jù)和移動計(jì)算這兩種聯(lián)系緊密而又有很大不同的概念,
其中移動計(jì)算也叫做本地計(jì)算。在以前的數(shù)據(jù)處理中時使用的
移動數(shù)據(jù),其實(shí)就是將需要處理的數(shù)據(jù)傳輸?shù)酱娣挪煌幚頂?shù)據(jù)方式邏輯的各個節(jié)點(diǎn)上。這樣做的效率很低,特別
是大數(shù)據(jù)中的數(shù)據(jù)量是很大的,至少都是GB以上,更大的是TB、PB甚至更大,而且磁盤I/O、網(wǎng)絡(luò)I/O的效率是很
低的,這樣處理起來就需要很長的時間,遠(yuǎn)遠(yuǎn)不能滿足我們的要求。而移動計(jì)算就出現(xiàn)了。
移動計(jì)算,也叫做本地計(jì)算,是數(shù)據(jù)就存放在節(jié)點(diǎn)上不再變動,而是將處理邏輯程序傳輸?shù)礁鱾€數(shù)據(jù)節(jié)點(diǎn)上。由于
處理程序的大小肯定不會特別的大,這樣就可以實(shí)現(xiàn)很快將程序傳輸?shù)酱娣艛?shù)據(jù)的各個節(jié)點(diǎn)上去,然后本地執(zhí)行處
理數(shù)據(jù),效率高?,F(xiàn)在的大數(shù)據(jù)處理技術(shù)都是采用這種方式。
HDFS模型例子:
班級中有這么多筆記本其實(shí)就可以組成一個集群是吧,然后隔壁班需要將文件存儲到筆記本中,一個一個進(jìn)來隨便找
一個筆記本存儲,走了之后,過了一段時間,需要將文件取走,但是每一個人都不知道自己上傳到那個服務(wù)器上了,那么每
臺都需要找,,這樣一來操作的復(fù)雜度就高了,那么需要怎么改善這個問題?
犧牲一下,我的筆記本不存數(shù)據(jù)了,專門記錄存儲的的過程(NameNode),第一個人進(jìn)來先找我,說我要存儲文件,然后我
說去第一臺電腦存吧,然后就去第一臺電腦存儲了,它在存儲文件的時候,上傳文件需要等幾分鐘,然后第二個人進(jìn)來了,
也要存文件,然后我說你去第二臺電腦上存儲,那么我與存儲人之間的交互信息量大嗎?不大,是吧我的主要作用就是告
訴對方去哪存儲, 第一臺電腦在傳第二臺電腦也再傳,是不是同時在傳,那么這就相當(dāng)于負(fù)載了,那么他們在上傳的時候
是獨(dú)立的資源,而不會去搶占資源.
問題:什么時候記錄這個存儲記錄?
是在一開始對話的時候我就記錄,還是在當(dāng)他傳完數(shù)據(jù)后記錄?
一定是傳完數(shù)據(jù)后記錄,這是為了數(shù)據(jù)的一致性
上傳成功后,是上傳人員告訴我上傳成功還是電腦給發(fā)送信息上傳成功
一定是電腦發(fā)送信息上傳成功,因?yàn)橹挥须娔X去認(rèn)了上傳成功了有文件有記錄就OK
是不是很簡單,很輕松啊,要是早幾年聽是不是HDFS就是你開發(fā)的了
優(yōu)點(diǎn):
高可靠性:Hadoop按位存儲和處理數(shù)據(jù)的能力值得人們信賴;
高擴(kuò)展性:Hadoop是在可用的計(jì)算機(jī)集簇間分配數(shù)據(jù)并完成計(jì)算任務(wù)的,這些集簇可以方便地?cái)U(kuò)展到數(shù)以千計(jì)的節(jié)點(diǎn)中。
高效性:Hadoop能夠在節(jié)點(diǎn)之間動態(tài)地移動數(shù)據(jù),并保證各個節(jié)點(diǎn)的動態(tài)平衡,因此處理速度非常快。
高容錯性:Hadoop能夠自動保存數(shù)據(jù)的多個副本,并且能夠自動將失敗的任務(wù)重新分配。
缺點(diǎn):
不適合低延遲數(shù)據(jù)訪問。
無法高效存儲大量小文件。
不支持多用戶寫入及任意修改文件。
分而治之:將大文件、大批量文件,分布式存放在大量服務(wù)器上,以便于采取分而治之的方式對海量數(shù)據(jù)進(jìn)行運(yùn)算分析;
為各類分布式運(yùn)算框架(如:mapreduce,spark,tez,……)提供數(shù)據(jù)存儲服務(wù)
hdfs更具體描述
首先,它是一個文件系統(tǒng),用于存儲文件,通過統(tǒng)一的命名空間——目錄樹來定位文件
其次,它是分布式的,由很多服務(wù)器聯(lián)合起來實(shí)現(xiàn)其功能,集群中的服務(wù)器有各自的角色;
HDFS中的文件在物理上是分塊存儲(block),塊的大小可以通過配置參數(shù)( dfs.blocksize)來規(guī)定,默認(rèn)大小在hadoop2.x版本中是128M,老版本中是64M。
HDFS文件系統(tǒng)會給客戶端提供一個統(tǒng)一的抽象目錄樹,客戶端通過路徑來訪問文件,形如:hdfs://namenode:port/dir-a/dir-b/dir-c/file.data。
目錄結(jié)構(gòu)及文件分塊信息(元數(shù)據(jù))的管理由namenode節(jié)點(diǎn)承擔(dān)——namenode是HDFS集群主節(jié)點(diǎn),負(fù)責(zé)維護(hù)整個hdfs文件系統(tǒng)的目錄樹,以及每一個路徑(文件)所對應(yīng)的block塊信息(block的id,及所在的datanode服務(wù)器)。
文件的各個block的存儲管理由datanode節(jié)點(diǎn)承擔(dān)--- datanode是HDFS集群從節(jié)點(diǎn),每一個block都可以在多個datanode上存儲多個副本(副本數(shù)量也可以通過參數(shù)設(shè)置dfs.replication)。
基于內(nèi)存存儲 :不會和磁盤發(fā)生交換只存在內(nèi)存中
這樣做的主要目的是為了快,但是內(nèi)存存儲的一個通病就是掉電易失
一旦斷電內(nèi)存中存儲的數(shù)據(jù)就什么都沒有了,所以就需要持久化了(有點(diǎn)打臉了因?yàn)槭切枰酱疟P中的存儲)
NameNode持久化
NameNode的metadate信息在啟動后會加載到內(nèi)存
存儲到磁盤中有兩種方法:
第一種:在某個時間點(diǎn)以類似于”拍快照”的形式將數(shù)據(jù)信息存儲到磁盤中
metadata存儲到磁盤文件名為”fsimage”,Block的位置信息不會保存到fsimage
若是回復(fù),需要等待DataNode重新匯報(bào)信息Block每副本位置(由DataNode上報(bào))
第二種:以日志的方式生成文件edit log記錄對metadata的操作日志
NameNode主要功能:
接受客戶端的讀寫服務(wù),收集DataNode匯報(bào)的Block列表信息
NameNode保存metadata信息包括
文件所屬權(quán)和權(quán)限,文件大小,時間(Block列表:Block偏移量),位置信息
DataNode是Block真正存儲的地方。DataNode的本地磁盤以文件形式存儲著Block信息。同時還存儲著Block的元數(shù)據(jù)信息文件。
元數(shù)據(jù)主要存儲MD5值 用來進(jìn)行驗(yàn)證
HDFS在啟動時,DataNode會向NameNode匯報(bào)block的信息。
DataNode通過向NameNode發(fā)送心跳保持與其聯(lián)系(3秒一次),如果NameNode 10分鐘沒有收到DataNode的心跳,則認(rèn)為其已經(jīng)lost,并復(fù)制其上的block到其它DataNode。
初看名字,你可能會以為SecondaryNameNode是NameNode的備份,實(shí)際上,SecondaryNameNode的主要作用并不是這個,當(dāng)然它也可以用來做備份。
要了解SecondaryNameNode的作用,就不得不說一下HDFS的啟動過程。
上面我們已經(jīng)提到了兩個文件fsimage和edits。fsimage是當(dāng)前HDFS系統(tǒng)的快照。edits記錄了對HDFS的各種操作日志。
假設(shè):有一個集群跑了10年一點(diǎn)問題都沒有,fsimage是十年前的一個點(diǎn),為了不影響性能,只記錄了一次,而edits一直在記錄日子,吧唧,服務(wù)器宕機(jī)了,重啟恢復(fù),
HDFS在啟動的時候,根據(jù)fsimage和edit log日志可以得到系統(tǒng)當(dāng)前最新的狀態(tài),并產(chǎn)生一個新的fsimage文件。這樣的啟動時很耗時間的。尤其是當(dāng)edit log文件非常大的時候,合并會占用很多額外的時間。
以上是“HDFS基本概念有哪些”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道!
分享標(biāo)題:HDFS基本概念有哪些-創(chuàng)新互聯(lián)
地址分享:http://chinadenli.net/article34/gogpe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名、ChatGPT、品牌網(wǎng)站建設(shè)、電子商務(wù)、域名注冊、外貿(mào)建站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容