1.一、數據塊(block)html
1.1.1.HDFS(Hadoop Distributed File System)默認的最基本的存儲單位是64M的數據塊。
HDFS上的文件被劃分爲塊大小的多個分塊,做爲獨立的存儲單元,稱爲數據塊node
1.1.3.不一樣於普通文件系統的是,HDFS中,若是一個文件小於一個數據塊的大小,並不佔用整個數據塊存儲空間。linux
每一個磁盤都有默認的數據塊大小,這是磁盤進行數據讀/寫的最小單位。構建於單個磁盤之上的文件系統經過磁盤塊來管理該文件系統中的塊,該文件系統塊的大小能夠是磁盤塊的整數倍。文件系統塊通常爲幾千字節,而磁盤塊通常爲512字節。這些信息(文件系統塊大小)對於須要讀/寫文件的文件系統用戶來講是透明的。儘管如此,系統仍然提供了一些工具(如df和fsck)來維護文件系統,由它們對文件系統中的塊進行操做。apache
首先解釋一下什麼是「磁盤塊」。要明確如下: 一、咱們知道操做系統與磁盤之間**交流的最小單位**就是磁盤塊,它是一個虛擬的概念。是對於操做系統(軟件)來講有意義的概念。 二、磁盤進行讀寫的最小單位是扇區,而扇區是真實存在的。是硬件部分,是一塊真實存在的物理區域。 因爲咱們常常接觸的是軟件部分,而不是硬件部分,因此提的多的是磁盤塊。而不是扇區。
三、磁盤塊的大小:塊=扇區×2^n。由於磁盤進行讀寫的基本單位是扇區,而操做系統與磁盤之間是塊,因此係統想進行讀寫,最節省的方式就是扇區的整數倍。架構
HDFS的三個節點:Namenode,Datanode,Secondary Namenode分佈式
Namenode:HDFS的守護進程,用來管理文件系統的命名空間,負責記錄文件是如何分割成數據塊,以及這些數據塊分別被存儲到那些數據節點上,它的主要功能是對內存及IO進行集中管理。ide
Datanode:文件系統的工做節點,根據須要存儲和檢索數據塊,而且按期向namenode發送他們所存儲的塊的列表。工具
Secondary Namenode:輔助後臺程序,與NameNode進行通訊,以便按期保存HDFS元數據的快照。oop
HDFS Federation(聯邦HDFS):操作系統
經過添加namenode實現擴展,其中每一個namenode管理文件系統命名空間中的一部分。每一個namenode維護一個命名空間卷,包括命名空間的源數據和該命名空間下的文件的全部數據塊的數據塊池。
HDFS的高可用性(High-Availability)
Hadoop的2.x發行版本在HDFS中增長了對高可用性(HA)的支持。在這一實現中,配置了一對活動-備用(active-standby)namenode。當活動namenode失效,備用namenode就會接管它的任務並開始服務於來自客戶端的請求,不會有明顯的中斷。
架構的實現包括:
namenode之間經過高可用的共享存儲實現編輯日誌的共享。
datanode同時向兩個namenode發送數據塊處理報告。
客戶端使用特定的機制來處理namenode的失效問題,這一機制對用戶是透明的。
故障轉移控制器:管理着將活動namenode轉移給備用namenode的轉換過程,基於ZooKeeper並由此確保有且僅有一個活動namenode。每個namenode運行着一個輕量級的故障轉移控制器,其工做就是監視宿主namenode是否失效並在namenode失效時進行故障切換。
三、命令行接口
兩個屬性項: fs.default.name 用來設置Hadoop的默認文件系統,設置hdfs URL則是配置HDFS爲Hadoop的默認文件系統。dfs.replication 設置文件系統塊的副本個數
四、Hadoop文件系統
Hadoop有一個抽象的文件系統概念,HDFS只是其中的一個實現。Java抽象接口org.apache.hadoop.fs.FileSystem定義了Hadoop中的一個文件系統接口。該抽象類實現HDFS的具體實現是 hdfs.DistributedFileSystem
http://www.javashuo.com/article/p-qpwiqace-bx.html
HDFS和linux文件系統的關係:
每一個磁盤都有默認的數據塊大小,這是磁盤進行數據讀/寫的最小單位。而構建於單個磁盤之上的文件系統(linux文件系統)經過磁盤塊來管理該文件系統中的塊,該文件系統中的文件大小是磁盤塊的整數倍。
HDFS一樣也有塊的概念,HDFS文件系統中的塊指的是linux文件,分佈式文件就是有多個linux文件(塊)組成。其最小塊單位就是一個Linux文件的大小,默認爲64MB
可見hdfs文件系統不是直接管理磁盤