大數據實戰項目必備技術技能:分佈式文件系統HDFS

導讀: HDFS 是Hadoop Distibuted File System 的縮寫,是一個高度容錯的分佈式文件系統,屬於Apache的一個子項目,也算是google GFS的開源實現。現Hadoop做用於國內外各個領域大小不一樣公司的具體線上業務,適合存儲海量的數據(TB及PB),底層使用的就是HDFS做爲其存儲。HDFS能夠利用廉價的普通服務器做爲其存儲,組件一個大規模存儲集羣,爲各種計算提供數據訪問的基礎。node

一、HDFS產生背景編程

隨着數據量愈來愈大,在一個操做系統管轄的範圍內存不下了,那麼就分配到更多的操做系統管理的磁盤中,可是不方便管理和維護,迫切須要一種系統來管理多臺機器上的文件,這就是分佈式文件管理系統。HDFS只是分佈式文件管理系統中的一種。設計模式

2 、HDFS概念服務器

HDFS,它是一個文件系統,用於存儲文件,經過目錄樹來定位文件;其次,它是分佈式的,由不少服務器聯合起來實現其功能,集羣中的服務器有各自的角色。架構

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

三、HDFS 特色app

一、基於「一次寫入,屢次讀取「模型,支持高吞吐量的訪問,不適合文件反覆修改場景;運維

二、開源;分佈式

三、自動將處理邏輯與存儲數據位置就近分配原則,提升數據處理的效率;工具

四、 HDFS的專業術語概念

一、數據塊

HDFS默認最基本的存儲單位是64MB的數據塊,大小經過配置可調;對於存儲空間未達到數據塊大小的文件,這個文件也不會佔用整個數據塊的存儲空間;

二、元數據節點(namenode)

元數據節點算是HDFS中很是重要的一個概念,管理文件系統的命令空間,將全部文件和文件夾的元數據保存在文件系統樹種,經過在硬盤保存避免丟失,採用文件命名空間鏡像(fs image)及修改日誌(edit log)方式保存;

三、數據節點(DataNode)

數據節點便是真正數據存儲的地方。加

大數據實戰項目必備技術技能:分佈式文件系統HDFS 四、從元數據節點(secondary namenode)

字面看起來像是元數據節點的備用節點,但實際否則,它和元數據節點是負責不一樣的事情,主要負責週期性將命名空間鏡像與修改日誌文件合併,避免文件過大,合併事後文件會同步至元數據節點,同時本地保存一份,以在故障時恢復;

五、HDFS優缺點

1 優勢

1)高容錯性

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

(2)某一個副本丟失之後,它能夠自動恢復。

2)適合大數據處理

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

(2)文件規模:可以處理百萬規模以上的文件數量,數量至關之大。

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

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

2 缺點

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

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

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

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

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

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

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

六、HDFS組成架構

大數據實戰項目必備技術技能:分佈式文件系統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。

塊的大小:10ms100100M/s = 100M

七、書籍推薦:

圖書簡介:

《高可用性的hdfs—hadoop分佈式文件系統深度實踐》專一於hadoop分佈式文件系統(hdfs)的主流ha解決方案,內容包括:hdfs元數據解析、hadoop元數據備份方案、hadoopbackup node方案、avatarnode解決方案以及最新的ha解決方案cloudrea ha namenode等。其中有關backupnode方案及avatarnode方案的內容是本書重點,尤爲是對avatarnode方案從運行機制到異常處理方案的步驟進行了詳盡介紹,同時還總結了各類異常狀況下avatarnode的各類處理方案。

《高可用性的hdfs—hadoop分佈式文件系統深度實踐》從代碼入手並結合情景分析、案例解說對hdfs的元數據以及主流的hdfsha解決方案的運行機制進行了深刻剖析,力求使讀者在解決問題時作到心中有數,不只知其然還知其因此然。

圖書簡介:

《Hadoop技術內幕:深刻解析Hadoop Common和HDFS架構設計與實現原理》內容簡介:「Hadoop技術內幕」共兩冊,分別從源代碼的角度對「Common+HDFS」和MapReduce的架構設計與實現原理進行了極爲詳細的分析。 《Hadoop技術內幕:深刻解析Hadoop Common和HDFS架構設計與實現原理》由騰訊數據平臺的資深Hadoop專家、X-RIME的做者親自執筆,對Common和HDFS的源代碼進行了分析,旨在爲Hadoop的優化、定製和擴展提供原理性的指導。除此以外,《Hadoop技術內幕:深刻解析Hadoop Common和HDFS架構設計與實現原理》還從源代碼實現中對分佈式技術的精髓、 分佈式系統設計的優秀思想和方法,以及Java語言的編碼技巧、編程規範和對設計模式的精妙運用進行了總結和分析,對提升讀者的分佈式技術能力和Java編程能力都很是有幫助。《Hadoop技術內幕:深刻解析Hadoop Common和HDFS架構設計與實現原理》適合Hadoop的二次開發人員、應用開發工程師、運維工程師閱讀。 , 全書共9章,分三部分,第一部分第 1章)主要介紹了Hadoop源代碼的獲取和源代碼閱讀環境的搭建; 第二部分(第2~5章)對Hadoop公共工具Common的架構設計和實現原理進行了深刻分析,包含Hadoop的配置信息處理、面向海量數據處理的序列化和壓縮機制、Hadoop的遠程過程調用,以及知足Hadoop上各種應用訪問數據的Hadoop抽象文件系統和部分具體文件系統等內容; 第三部分(第6~9章)對Hadoop的分佈式文件系統HDFS的架構設計和實現原理進行了詳細的分析,這部份內容採用了總分總的結構,第6章對HDFS的各個實體和實體間接口進行了分析;第7章和第8章分別詳細地研究了數據節點和名字節點的實現原理,並經過第9章對客戶端的解析,回顧了HDFS各節點間的配合,完整地介紹了一個大規模數據存儲系統的實現。

今天就分享到這裏,但願對你們有所幫助,但願你們多多關注,有什麼不對的地方但願你們留言指正,最後祝你們工做之餘有一個好的心情,健康的身體。

有什麼問題能夠加羣,裏面有大數據的學習資料哦! 羣號:871056591

相關文章
相關標籤/搜索