HDFS基本概念和特性的详情了解及优缺点
HDFS
??HDFS是Hadoop Distributed File System的簡稱,是Hadoop抽象文件系統(tǒng)的一種實現(xiàn)。是一個用Java實現(xiàn)、分布式的、可擴(kuò)展的文件系統(tǒng)。Hadoop抽象文件系統(tǒng)可以與本地系統(tǒng)、Amazon S3等集成,甚至可以通過Web協(xié)議(webhsfs)來操作。
- HDFS的文件分布在集群機(jī)器上,同時提供副本進(jìn)行容錯及可靠性保證。例如客戶端寫入讀取文件的直接操作都是分布在集群各個機(jī)器上的,沒有單點性能壓力。
- Hadoop Distributed File System ??
1.易于擴(kuò)展的分布式文件系統(tǒng)
- HDFS的主要功能是做存儲用的,把每一份數(shù)據(jù)創(chuàng)建多個副本、做復(fù)制,默認(rèn)的副本數(shù)是3份。
- HDFS設(shè)計目標(biāo)
1.自動快速檢測應(yīng)對硬件錯誤
2.流式訪問數(shù)據(jù)
3.移動計算比移動數(shù)據(jù)本身更劃算 io
4.簡單一致性模型
5.異構(gòu)平臺可移植 - 設(shè)計思想
分而治之:將大文件、大批量文件,分布式存放在大量服務(wù)器上,以便于采取分而治之的方式對海量數(shù)據(jù)進(jìn)行運算分析;對同一個文件進(jìn)行聯(lián)合管理。
每個小文件做冗(rǒng)余備份,并且分散到不同的服務(wù)器中,做到高可靠不丟失。 - 在大數(shù)據(jù)中的作用:
為各類分布式運算框架(如:mapreduce,spark,tez,……)提供數(shù)據(jù)存儲服務(wù) - 重點概念
文件切塊,副本存放,元數(shù)據(jù)
??在HDFS的架構(gòu)中,主要有三個角色:NameNode(元數(shù)據(jù)節(jié)點,NN)、DataNode(從數(shù)據(jù)節(jié)點,DN)、SecondaryNameNode(從數(shù)據(jù)節(jié)點,snn)。
數(shù)據(jù):數(shù)據(jù)內(nèi)容
元數(shù)據(jù):文件名稱 大小 所屬人 地址 128k
架構(gòu)中三個角色的作用
NameNode:是Master節(jié)點,集群老大
(1)管理文件系統(tǒng)中文件的元數(shù)據(jù)信息;
(2)維護(hù)文件到塊、塊到節(jié)點的對應(yīng)關(guān)系;
(3)維護(hù)用戶對文件的操作信息(增刪改查)。
DataNode:Slave節(jié)點
(1)負(fù)責(zé)存儲客戶端(client)發(fā)來的數(shù)據(jù)塊block;
(2)執(zhí)行數(shù)據(jù)塊的讀寫操作。
SecondaryNameNode:嚴(yán)格來說并不是NameNode備份節(jié)點,主要給NameNode分擔(dān)壓力
(1)周期性的將元數(shù)據(jù)節(jié)點的fsimage(文件系統(tǒng)目錄樹)和fsedits(文件系統(tǒng)元數(shù)據(jù)操作日志)合并,以防止日志文件過大。
(2)合并后的fsimage在從元數(shù)據(jù)節(jié)點保存了一份,以防止元數(shù)據(jù)節(jié)點失敗時恢復(fù)。
- 設(shè)計假設(shè)和目標(biāo)
- 硬件錯誤:數(shù)量眾多的廉價機(jī)器使得硬件錯誤成為常態(tài)。
- 數(shù)據(jù)流訪問:應(yīng)用以流的方式訪問數(shù)據(jù);設(shè)計用于 數(shù)據(jù)的批量處理,而不是低延時的實時交互處理。放棄全面支持POSIX。
- 大數(shù)據(jù)集:典型的HDFS上的一個文件大小是G或T數(shù)量級的,支持一個云中文件數(shù)量達(dá)到千萬數(shù)量級。
- 簡單的相關(guān)模型:假定文件一次寫入多次讀取。未來可能支持Appending-write的模型。
- 移動計算比移動數(shù)據(jù)便宜:一個應(yīng)用請求的計算,離它操作的數(shù)據(jù)越近就越高效。
- 多種軟硬件平臺中的可移植性
概念和特性
HDFS 是一個 文件系統(tǒng),用于存儲文件,通過統(tǒng)一的命名空間—目錄樹來定位文件
其次,它是分布式的,由很多服務(wù)器聯(lián)合起來實現(xiàn)其功能,集群中的服務(wù)器有各自的角色;
HDFS核心概念
1.Blocks
物理磁盤中有塊的概念,磁盤的物理Block是磁盤操作最小的單元,讀寫操作均以Block為最小單元,一般為512 Byte。文件系統(tǒng)在物理Block之上抽象了另一層概念,文件系統(tǒng)Block物理磁盤Block的整數(shù)倍。通常為幾KB。Hadoop提供的df、fsck這類運維工具都是在文件系統(tǒng)的Block級別上進(jìn)行操作。
HDFS的Block塊比一般單機(jī)文件系統(tǒng)大得多,默認(rèn)為128M。HDFS的文件被拆分成block-sized的chunk,chunk作為獨立單元存儲。比Block小的文件不會占用整個Block,只會占據(jù)實際大小。例如, 如果一個文件大小為1M,則在HDFS中只會占用1M的空間,而不是128M。
2.HDFS的Block為什么這么大?
是為了最小化查找(seek)時間,控制定位文件與傳輸文件所用的時間比例。假設(shè)定位到Block所需的時間為10ms,磁盤傳輸速度為100M/s。如果要將定位到Block所用時間占傳輸時間的比例控制1%,則Block大小需要約100M。
但是如果Block設(shè)置過大,在MapReduce任務(wù)中,Map或者Reduce任務(wù)的個數(shù) 如果小于集群機(jī)器數(shù)量,會使得作業(yè)運行效率很低。
3.Block抽象的好處
block的拆分使得單個文件大小可以大于整個磁盤的容量,構(gòu)成文件的Block可以分布在整個集群, 理論上,單個文件可以占據(jù)集群中所有機(jī)器的磁盤。
Block的抽象也簡化了存儲系統(tǒng),對于Block,無需關(guān)注其權(quán)限,所有者等內(nèi)容(這些內(nèi)容都在文件級別上進(jìn)行控制)。
Block作為容錯和高可用機(jī)制中的副本單元,即以Block為單位進(jìn)行復(fù)制。
- 重要特性如下:
(1)HDFS中文件在物理上是分塊存儲(block),塊的大小可以通過配置參數(shù)(dfs.blocksize)來規(guī)定,默認(rèn)大小在hadoop2.x 版本中128M,l老版本中是64M
(2)HDFS 文件系統(tǒng)會給客戶端提供一個統(tǒng)一的抽象目錄樹,客戶端通過路徑來訪問文件,形如:hdfs://hadoop01:9000/software/hadoop-2.6.5-centOS-6.7.tar.gz
(3)**目錄結(jié)構(gòu)及文件分塊信息(元數(shù)據(jù))**的管理由namenode 節(jié)點承擔(dān)
namenode 是HDFS集群主節(jié)點,負(fù)責(zé)維護(hù)整個hdfs 文件系統(tǒng)的目錄樹,以及每一個路徑(文件)所對應(yīng)的block塊信息(block的id,及所在的datanode服務(wù)器)
(4)文件的各個block的存儲管理由datanode節(jié)點承擔(dān)
datanode是HDFS集群從節(jié)點,每一個block都可以在多個datanode上存儲多個副本(副本數(shù)量也可以通過參數(shù)設(shè)置dfs.replication)默認(rèn)是3份
(5)HDFS是設(shè)計成適應(yīng)一次寫入,多次讀出的場景,且不支持修改
HDFS的優(yōu)點
(1)高可靠性:hadoop按位存儲和處理數(shù)據(jù)的能力值得人們信賴
(2)高擴(kuò)展性:hadoop是在可用的計算機(jī)集簇間分配數(shù)據(jù)并完成計算任務(wù)的,這些集簇可以方便地擴(kuò)展到數(shù)以千計的節(jié)點中。
(3)高效性:hadoop 能夠在節(jié)點之間動態(tài)地移動數(shù)據(jù),并保證各個節(jié)點的動態(tài)平衡1,因此處理速度非常快。
(4)高容錯性:hadoop 能夠自動保存數(shù)據(jù)的多個副本,并且能夠自動將失敗的任務(wù)重新分配。
(1)可構(gòu)建在廉價機(jī)器上;
(2)高容錯性;
(3)適合批處理;
(4)適合大數(shù)據(jù)處理;
(5)流式文件訪問。
HDFS的缺點
(1)不適合低延遲數(shù)據(jù)訪問
對延時要求在毫秒級別的應(yīng)用,不適合采用HDFS。HDFS是為高吞吐數(shù)據(jù)傳輸設(shè)計的,因此可能犧牲延時HBase更適合低延時的數(shù)據(jù)訪問。
(2)無法高效存儲大量小文件
文件的元數(shù)據(jù)(如目錄結(jié)構(gòu),文件block的節(jié)點列表,block-node mapping)保存在NameNode的內(nèi)存中, 整個文件系統(tǒng)的文件數(shù)量會受限于NameNode的內(nèi)存大小。
經(jīng)驗而言,一個文件/目錄/文件塊一般占有150字節(jié)的元數(shù)據(jù)內(nèi)存空間。如果有100萬個文件,每個文件占用1個文件塊,則需要大約300M的內(nèi)存。因此十億級別的文件數(shù)量在現(xiàn)有商用機(jī)器上難以支持。
(3)不支持多用戶寫入及任意修改文件
HDFS采用追加(append-only)的方式寫入數(shù)據(jù)。不支持文件任意offset的修改。不支持多個寫入器(writer)。
為什么HDFS不適合存儲小文件:
(1)所有的元數(shù)據(jù)都是存儲在NameNode內(nèi)存中的,而一個NameNode節(jié)點的內(nèi)存是有限的;
(2)小文件的存取占用了大量的NameNode內(nèi)存,導(dǎo)致尋道時間超過了讀取時間;
(3)NameNode存儲block數(shù)目是有限的。
一個block元信息消耗大約150byte內(nèi)存,加入存儲一億個block,則大約需要20GB內(nèi)存。如果一個文件大小為10KB,則一億個文件大小僅為1TB,但NameNode就要消耗20GB內(nèi)存。
總結(jié)
以上是生活随笔為你收集整理的HDFS基本概念和特性的详情了解及优缺点的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 什么是前端(到底什么是前端)
- 下一篇: 设置Backup-masters Hba