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