第九章: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