Hadoop之HDFS01【介紹】
HDFS(Hadoop Distributed File System)分布式文件系統。HDFS是一個高度容錯性的系統,適合部署在廉價的機器上。HDFS能提供高吞吐量的數據訪問,非常適合大規模數據集上的應用。

存儲模型
假如我們有一個10T的文件要存儲,而我們的硬盤空間只有1個T,那么這時候我們可以將這個10T的文件切成10個1T的文件來分別存儲在10個硬盤中,HDFS的存儲的原理其實也是這樣的,將一個大文件進行線性切割成快(Block)然后存放在不同的服務器上,但很快你又會提出一個問題,如果一個字比如“存”在UTF-8當中占3個字節,而恰巧一個服務器存了1個字節而另外的2個字節存到了別的服務器上,這會出現我們使用的時候出現亂碼,這個問題呢HDFS也幫我們解決了。后面會提到副本,相當于把文件克隆然后會進行一個修復操作。然后不同的文件分布到了不同的服務器上,所以是只允許寫一次可以多次讀取,那么HDFS存儲模型的特點也就明顯了。
上傳文件指定block大小和副本數量
hadoop fs -Ddfs.replication=2 -put a.txt /
hadoop fs -Ddfs.blocksize=67108864 -put fun1.sh /
已上傳的文件Block副本數可以調整,大小不變
[root@hadoop-node01 ~]# hadoop fs -setrep -w 3 /fun1.sh Replication 3 set: /fun1.sh Waiting for /fun1.sh .... done
append追加數據
hadoop fs -appendToFile b.txt /a.txt
架構模型
文件元數據MetaData,文件數據
元數據
數據本身
(主)NameNode節點保存文件元數據:單節點 posix
(從)DataNode節點保存文件Block數據:多節點
DataNode與NameNode保持心跳,提交Block列表
HdfsClient與NameNode交互元數據信息
HdfsClient與DataNode交互文件Block數據
NameNode
存儲元數據(MetaData),不存儲具體的block
NameNode主要功能:
NameNode持久化
NameNode的metadate信息在啟動后會加載到內存
metadata存儲到磁盤文件名為”fsimage”
Block的位置信息不會保存到fsimage
edits記錄對metadata的操作日志。。。
DataNode
本地磁盤目錄存儲數據(Block),文件形式,同時存儲Block的元數據信息文件,啟動DN時會向NN匯報block信息,通過向NN發送心跳保持與其聯系(3秒一次),如果NN 10分鐘沒有收到DN的心跳,則認為其已經lost,并copy其上的block到其它DN
HDFS優缺點
優先
高容錯性
數據自動保存多個副本
副本丟失后,自動恢復
適合批處理
移動計算而非數據
數據位置暴露給計算框架(Block偏移量)
適合大數據處理
GB 、TB 、甚至PB 級數據
百萬規模以上的文件數量
10K+ 節點
可構建在廉價機器上
通過多副本提高可靠性
提供了容錯和恢復 機制
缺點
低延遲數據訪問
比如毫秒級
低延遲與高吞吐率
小文件存取
占用NameNode 大量內存
尋道時間超過讀取時間
并發寫入、文件隨機修改
一個文件只能有一個寫者
僅支持append
Hadoop
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。