???? HDFS是Hadoop家族成員之一什黑,Hadoop還包括hive 盛嘿,hbase 削锰,zombie,mapreduce等妹卿。
首先介紹一下hdfs:
??????????????????????????? 全稱是?? Hadoop distributed file system, 中文稱? “分布式文件系統(tǒng)”
????????????????????????????其特點:高容錯性熄求,保證了數據不易丟失渣玲,維護數據的完整性。
??????????????????????????? 適用對象:適用于大規(guī)模數據集弟晚。
?????????????????????????? hdfs被設計成適合批量處理的忘衍,而不是交互式,重點在數據的吞吐量卿城。
?????????????????????????? hdfs是主從結構枚钓,即一個主節(jié)點(namenode)和多個從節(jié)點(datanode).
既然是分布式文件系統(tǒng),當然是為了存儲文件而生瑟押,文件是由數據組成的秘噪,也可以理解成元數據+文件類容。
namenode:
?????????????? 1.用來存儲文件的元數據(即文件的文件名勉耀,文件大小指煎,建立文件的日期,路徑等文件屬性)
???????????????2便斥,元數據保存在內存中至壤。
???????????????3,保存文件block枢纠,datanode之間的映射關系像街。
datanode:
??????????????? 1.存儲文件類容
??????????????? 2.文件保存在硬盤中
???????????????3. 維護了block id 到datanode本地文件的映射關系。
HDFS運行機制:
1.一個名字節(jié)點和多個數據節(jié)點晋渺。
2.數據復制(數據復制镰绎,保證數據完整性,不易丟失)木西。
3.存放位置畴栖,即不能部署在一個機架上,至少要兩個機架八千。
故障檢測:
1.心跳包檢測(檢測是否宕機)吗讶。
2燎猛,塊報告(安全模式下檢測)。
3.數據完整性檢測(檢驗比較)照皆。
HDFS數據存儲單元(block):
1.數據的存儲單元是block
2.默認是64MB
3.大小不到64MB重绷,可單獨存儲一個block。
文件存儲方法:
1.按照大小被切分成若干個block存儲在不同的節(jié)點上膜毁。
2.默認情況下昭卓,每個block都有三個副本。
注意事項:block大小和副本數通過client編譯上傳文件設置瘟滨,文件上傳成功后候醒,副本數可以變更,大小是不可以變更的室奏。
HDFS寫數據流程:
客戶端要向hdfs寫數據火焰,首先要跟namenode通信,以確認可以寫文件并獲得接受文件block的datanode胧沫,然后昌简,客戶端按順尋將文件著個block傳遞給相應的datanode,并由接收到的block的datanode負責向其他的data復制block的副本绒怨。如圖所示
HDFS讀數據流程:
????? 客戶端將要讀取的數據的路徑發(fā)送給namenode,namenode獲取文件的元信息主要是block的存放位置信息纯赎,返回給客戶端,根據返回的信息找到相應的datanode逐個獲取文件的block并在客戶端本地進行數據分析合并從而獲得整個文件南蹂。如圖所示
讀文件流程
體會:
???????????? 寫文件流程就是說犬金;把大規(guī)模數據導入到搭建的分布式文件系統(tǒng)中去,首先要請求人家六剥,不請求是不禮貌的晚顷,請求完后,人家在檢測一下疗疟,這里檢查是元數據该默,萬一,你的數據出錯呢策彤,完事后栓袖,人家會給你個消息,告訴你導入的文件放在哪里店诗,不能隨便放置裹刮,要根據block的地址來存放這些文件,因為存放文件類容的datanode有很多庞瘸,所以datanode之間也要建立聯(lián)系捧弃,到這里已經規(guī)定了,block的數量和大小恕洲,這些工作準備好后就可以把文件寫到分布式系統(tǒng)中去了塔橡。
?????????? 讀文件流程就是:把已經寫好的文件取出來梅割,首先你要知道存放文件的路徑霜第,而路徑存放在namenode中葛家,然后,namenode把路徑信息返回給client泌类,而后client根據返回的路徑信息去找到datanode中的文件類容癞谒,并在客戶端加以分析獲得整個文件。
HDFS設計思想:
總的來說刃榨,hdfs 就是一個存儲大量數據文件的文件系統(tǒng)弹砚,hdfs包含這三個主要成員(client,namenode,datanode),client 負責發(fā)送請求枢希,接收反饋的信息桌吃,namenode負責存放元數據,datanode負責存放文件類容苞轿。前者存放在內存中茅诱,后者存放在硬盤里。
???
存放模式
?????????? 可以舉個栗子來說明搬卒,在沒有這個技術之前瑟俭,數據都是存放在一臺機子上,當有大量的數據要讀寫時要花費漫長的時間契邀,比如有100TB的數據摆寄,放在一臺機子上要讀半天的時間,但是有這個技術之后坯门,數據可以存放在很多機子上微饥,比如存放在1000臺機子上,平均下來古戴,每臺機子才存放0.1TB的數據欠橘,在讀數據的時候讓1000臺機子同時工作,這樣可以大大節(jié)省時間允瞧,可能一個半小時就OK了简软。如果嫌這個栗子不好吃,在說個好吃的述暂,假如痹升,在大海里有一頭鯨魚快樂的玩耍,然而畦韭,有一條餓瘋了的大白鯊看到這個鮮美的鯨魚疼蛾,就上去開吃,大白鯊得用多長的時間才能夠把這頭鯨魚吃完艺配,即使吃完察郁,這條大白鯊還能像以前那樣毫發(fā)無損嗎衍慎? 但是,大白鯊換成食人魚呢皮钠!稳捆,不要問我大海里哪來的食人魚,我這是舉個栗子麦轰,全世界的食人魚一起來吃這個鯨魚乔夯,你一口,我一口款侵,他一口末荐,你一口,我一口新锈,他一口甲脏,。妹笆。块请。。晾浴。负乡。。脊凰。抖棘。“臥槽 我來晚了狸涌,我沒吃到切省,你們都吃完了”最后一個到達吃貨現(xiàn)場的食人魚說到∨恋ǎ“我們還沒吃飽呢朝捆,在找找還有沒有其他鯨魚”其他的食人魚答道。
這就是hdfs的優(yōu)勢懒豹,雖然單個存儲數據不如大型機子芙盘,但是當多個機子聯(lián)合起來就是王者