第九章:HDFS概述

第九章:HDFS概述

(作者:Memories)

1、HDFS產生背景

隨著數據量越來越大,在一個操作系統管轄的範圍內存不下了,那麼就分配到更多的操作系統管理的磁碟中,但是不方便管理和維護,迫切需要一種系統來管理多台機器上的文件,這就是分散式文件管理系統。HDFS只是分散式文件管理系統中的一種。

2 、HDFS概念

HDFS,它是一個文件系統,用於存儲文件,通過目錄樹來定位文件;其次,它是分散式的,由很多伺服器聯合起來實現其功能,集群中的伺服器有各自的角色。

HDFS的設計適合一次寫入,多次讀出的場景,且不支持文件的修改。適合用來做數據分析,並不適合用來做網盤應用。

3 、HDFS優缺點

3.1 優點

1)高容錯性

(1)數據自動保存多個副本。它通過增加副本的形式,提高容錯性;

(2)某一個副本丟失以後,它可以自動恢復。

2)適合大數據處理

(1)數據規模:能夠處理數據規模達到GB、TB、甚至PB級別的數據;

(2)文件規模:能夠處理百萬規模以上的文件數量,數量相當之大。

3)流式數據訪問,它能保證數據的一致性。

4)可構建在廉價機器上,通過多副本機制,提高可靠性。

3.2 缺點

1)不適合低延時數據訪問,比如毫秒級的存儲數據,是做不到的。

2)無法高效的對大量小文件進行存儲。

(1)存儲大量小文件的話,它會佔用NameNode大量的內存來存儲文件、目錄和塊信息。這樣是不可取的,因為NameNode的內存總是有限的;

(2)小文件存儲的定址時間會超過讀取時間,它違反了HDFS的設計目標。

3)並發寫入、文件隨機修改。

(1)一個文件只能有一個寫,不允許多個線程同時寫;

(2)僅支持數據append(追加),不支持文件的隨機修改。

4、HDFS組成架構

HDFS的架構圖

這種架構主要由四個部分組成,分別為HDFS Client、NameNode、DataNode和Secondary NameNode。下面我們分別介紹這四個組成部分。

1)Client:就是客戶端。

(1)文件切分。文件上傳HDFS的時候,Client將文件切分成一個一個的Block,然後進行存儲;

(2)與NameNode交互,獲取文件的位置信息;

(3)與DataNode交互,讀取或者寫入數據;

(4)Client提供一些命令來管理HDFS,比如啟動或者關閉HDFS;

(5)Client可以通過一些命令來訪問HDFS;

2)NameNode:就是Master,它是一個主管、管理者。

(1)管理HDFS的名稱空間;

(2)管理數據塊(Block)映射信息;

(3)配置副本策略;

(4)處理客戶端讀寫請求。

3) DataNode:就是Slave。NameNode下達命令,DataNode執行實際的操作。

(1)存儲實際的數據塊;

(2)執行數據塊的讀/寫操作。

4) Secondary NameNode:並非NameNode的熱備。當NameNode掛掉的時候,它並不能馬上替換NameNode並提供服務。

(1)輔助NameNode,分擔其工作量;

(2)定期合併Fsimage和Edits,並推送給NameNode;

(3)在緊急情況下,可輔助恢復NameNode。

5 、HDFS文件塊大小

HDFS中的文件在物理上是分塊存儲(block),塊的大小可以通過配置參數( dfs.blocksize)來規定,默認大小在hadoop2.x版本中是128M,老版本中是64M。

HDFS的塊比磁碟的塊大,其目的是為了最小化定址開銷。如果塊設置得足夠大,從磁碟傳輸數據的時間會明顯大於定位這個塊開始位置所需的時間。因而,傳輸一個由多個塊組成的文件的時間取決於磁碟傳輸速率。

如果定址時間約為10ms,而傳輸速率為100MB/s,為了使定址時間僅占傳輸時間的1%,我們要將塊大小設置約為100MB。默認的塊大小128MB。

塊的大小:10ms*100*100M/s = 100M

推薦閱讀:

如何評價spark的機器學習框架 和 tensorflow的機器學習系統?
Rust 重構 Spark 框架需要做哪些準備工作?
[譯] 解密 Uber 數據團隊的基礎數據架構優化之路
Scala快速入門系列:聲明變數、控制結構與函數、常用數組操作
第七章:完全分散式部署Hadoop

TAG:Hadoop | 大數據 | Spark |