一匀伏、HDFS簡介
- Hadoop Distributed filesystem:Hadoop分布式文件系統(tǒng)
- HDFS以流式數(shù)據(jù)訪問模式來存儲超大文件。一次寫入、多次讀取单默。能存儲PB級的數(shù)據(jù)。
- 運行在普通硬件上忘瓦。因為HDFS可以防止宕機時數(shù)據(jù)丟失搁廓。
- HDFS是為高數(shù)據(jù)吞吐量應用優(yōu)化的,間接提高了時間延遲,所以對于低延遲的的訪問需求境蜕,最好使用HBase蝙场。
- 不適合存儲大量的小文件。namenode將文件系統(tǒng)的元數(shù)據(jù)存儲在內(nèi)存中粱年,因此該文件系統(tǒng)所能存儲的文件總數(shù)受限于namenode的內(nèi)存容量售滤。
- HDFS中的文件只有一個writer,而且寫操作總是將數(shù)據(jù)添加在文件的末尾逼泣,他不支持具有多個寫入者的操作趴泌,也不支持在文件的任意位置進行修改。
二拉庶、HDFS相關概念
1.數(shù)據(jù)塊
傳統(tǒng)磁盤塊:每個磁盤都有默認的數(shù)據(jù)塊大小嗜憔,這是磁盤進行數(shù)據(jù)讀寫的最小單位。構建于單個磁盤之上的文件系統(tǒng)通過磁盤塊來管理該文件系統(tǒng)中的塊氏仗,該文件系統(tǒng)塊的大小可以使磁盤塊的整數(shù)倍吉捶。文件系統(tǒng)塊一般為幾千字節(jié),而磁盤塊一般為512字節(jié)皆尔。
-
HDFS中的塊(block):默認為64MB(根據(jù)需要修改)呐舔。HDFS上的文件也被劃分為塊大小的多個分塊,作為獨立的存儲單元慷蠕。
1.HDFS的塊比磁盤的塊大珊拼,目的是為了最小化尋址開銷。 2.塊不能設置的過大流炕,map任務通常一次只處理一個塊中的數(shù)據(jù)澎现,任務數(shù)過少會影響運行速度。 3.HDFS中的塊是抽象的每辟。 好處一:一個文件的大小可以大于網(wǎng)絡中任何一個磁盤的容量剑辫。 好處二:簡化了存儲子系統(tǒng)的設計。 好初三:塊非常適合用于數(shù)據(jù)備份進而提供數(shù)據(jù)容錯能力和提高可用性渠欺。
2.namenode和datanode
HDFS集群有兩類節(jié)點:一個namenode(管理者)和多個datanode(工作者)妹蔽。
- namenode管理文件系統(tǒng)的命名空間。它維護著文件系統(tǒng)樹及整棵樹內(nèi)所有的文件和目錄挠将。這些信息以兩個文件形式永久保存在本地磁盤上:命名空間鏡像文件和編輯日志文件胳岂。namenode也記錄著每個文件中各個塊所在的數(shù)據(jù)節(jié)點信息,但它并不永久保存塊的位置信息舔稀,因為這些信息會在系統(tǒng)啟動時由數(shù)據(jù)節(jié)點重建旦万。
- 客戶端(client)代表用戶通過與namenode和datanode交互來訪問整個文件系統(tǒng)。
- datanode是文件系統(tǒng)的工作節(jié)點镶蹋。根據(jù)需要存儲并檢索數(shù)據(jù)塊,并定期向namenode發(fā)送它們所存儲的塊的列表。
namenode的兩種容錯機制
- 機制一:備份組成文件系統(tǒng)元數(shù)據(jù)持久狀態(tài)的文件贺归。將持久狀態(tài)寫入本地磁盤的同時淆两,寫入一個遠程掛載的網(wǎng)絡文件系統(tǒng)。
- 機制二:運行一個輔助namenode拂酣,作用是定期通過編輯日志合并命名空間鏡像秋冰,以防止編輯日志過大。這個輔助namenode一般在另一臺單獨的物理計算機上運行婶熬,它會保存合并后的命名空間鏡像的副本剑勾,并在namenode發(fā)生故障時啟用。
3.HDFS的高可用性
Hadoop的2.X發(fā)行版本中赵颅,配置了一對活動-備用namenode虽另,當活動namenode失效,備用namenode就會將接管他的任務并開始服務于來自客戶端的請求饺谬,不會有任何明顯中斷捂刺。實現(xiàn)這一目標需要在架構上做如下修改:
- namenode之間需要通過高可用的共享存儲實現(xiàn)編輯日志的共享。當備用namenode接管工作之后募寨,它將通讀共享編輯日志直至末尾族展,以實現(xiàn)與活動namenode的狀態(tài)同步,并繼續(xù)讀取由活動namenode寫入的新條目拔鹰。
- datanode需要同時向兩個namenode發(fā)送數(shù)據(jù)塊處理報告仪缸,因為數(shù)據(jù)塊的映射信息存儲在namenode的內(nèi)存中,而非磁盤列肢。
- 客戶端需要使用特定的機制來處理namemode的失效問題恰画,這一機制對用戶是透明的。