自上一篇文章《Hadoop安裝與集群配置》之后,需要對hadoop的一些基礎(chǔ)知識進行一些總結(jié)。此文為HDFS相關(guān)的知識點總結(jié)像屋。
1.Hadoop組成
Hadoop主要由三大模塊組成:
1.1 HDFS
存儲模塊
* 分布式文件存儲系統(tǒng)
* 提供了高可靠性崭放、高擴展性和高吞吐率的數(shù)據(jù)存儲服務(wù)
* hdfs典型結(jié)構(gòu):物理結(jié)構(gòu)+邏輯結(jié)構(gòu)
1.2. YARN
資源調(diào)配模塊(引擎)(分布式資源管理框架)
* 負(fù)責(zé)集群資源的管理和調(diào)度
1.3. MapReduce
計算引擎
* 分布式計算框架(計算向數(shù)據(jù)移動-->移動計算而非移動數(shù)據(jù))
* 具有易于編程、高容錯性和高擴展性的優(yōu)點
2.HDFS存儲模型
* 文件線性切割成Block:偏移量(offset)
* Block分散存儲在集群節(jié)點中
* 單一文件Block大小一致扣甲,文件與文件可以不一致
* Block可以設(shè)置副本數(shù)篮赢,副本分散在不同的節(jié)點中
* 副本數(shù)不要超過節(jié)點數(shù)量
* 文件上傳可以設(shè)置Block大小和副本數(shù)
* 已上傳的文件Block副本數(shù)可以調(diào)整齿椅,大小不變
* 只支持一次寫入多次讀取,同一時刻只有一個寫入者
* 只能追加启泣,不能修改
3.HDFS架構(gòu)模型
* 文件的元數(shù)據(jù)(metadata)和文件數(shù)據(jù)是分開存儲
* (主)NameNode存儲文件元數(shù)據(jù)涣脚,單節(jié)點(posix)
* (從)DataNode存儲文件數(shù)據(jù)
* DataNode與NameNode保持心跳,由dataNode提交Block列表
* HdfsClient(用戶)與NameNode交互元數(shù)據(jù)信息
* HdfsClient(用戶)與DataNode交互文件數(shù)據(jù)信息
HDFS架構(gòu).png
HDFS設(shè)計思想.png
4.NameNode
4.1 基于內(nèi)存存儲
- 只存在內(nèi)存中(除了初始化和持久化的時候跟硬盤打交道寥茫,其余時候全部在內(nèi)存中操作)
- 持久化操作(假設(shè)內(nèi)存只有1G遣蚀,現(xiàn)在數(shù)據(jù)有1.2G,則需要做持久化)
* 不存儲Block位置信息(由DataNode上報給NameNode)-不存儲到fsimage中
* NameNOde的metadata信息在啟動后加載到內(nèi)存
* Metadata信息存儲到fsimage文件中
* edits記錄對metadata的操作日志(類似redis)
4.2 NameNode主要功能
- 接受客戶端的讀寫要求
- 收集DataNode匯報的Block列表信息
4.3 NameNode保存Metadata主要信息
- 文件Owership和pemissions
- 文件大小和時間
- Block列表(offset等)
- Block每個副本的位置(由DataNode上報)
5. DataNode
- 本地磁盤目錄存儲數(shù)據(jù)(Block)纱耻,文件形式
- 同時存儲Block的元數(shù)據(jù)信息
- 啟動datanode時芭梯,會向namenode匯報block信息
- 通過向NameNode發(fā)送心跳信息保持與其聯(lián)系(每3秒一次),如果NameNode 10分鐘沒有收到DataNode的心跳弄喘,則認(rèn)為其已經(jīng)lost玖喘,則將其block信息copy到其他DataNode上
6.HDFS優(yōu)點
-
高容錯性
* 數(shù)據(jù)自動保存多個副本 * 副本丟失后,自動恢復(fù)
-
適合批處理
* 移動計算非數(shù)據(jù)(把計算的邏輯在有數(shù)據(jù)的地方進行計算) * 數(shù)據(jù)位置暴露給計算框架
-
適合大數(shù)據(jù)處理
* GB TB 甚至PB級數(shù)據(jù) * 百萬規(guī)模以上的
可構(gòu)建在廉價的機器上
7.HDFS缺點
-
無法進行低延遲數(shù)據(jù)訪問
* 比如毫秒級 * 低延遲與高吞吐率
-
小文件存取
* 占用NameNode大量內(nèi)存 * 尋道時間超過讀取時間
-
并發(fā)寫入蘑志、文件隨機修改
* 一個文件只能有一個寫者 * 僅支持append
8.Block副本的放置策略
- 第一個副本:放置在上傳文件的datanode上累奈,如果是集群外提交,則隨機挑選一臺磁盤不太滿急但,cpu不太忙的節(jié)點
- 第二個副本:放置在第一個副本不同的機架的節(jié)點上
- 第三個副本:與第二個副本相同的機架的節(jié)點
- 更多副本:隨機節(jié)點
Block副本的放置策略.png
9.HDFS寫流程
(待續(xù))
10.HDFS讀流程
(待續(xù))
11.總結(jié)
- HDFS就是一個分余展的大硬盤:分--分塊 余--可以冗余澎媒,展--動態(tài)擴展
- 云計算:分布式計算,分布在不懂服務(wù)器中的計算
- 設(shè)計原則:移動計算羊始,而不是移動數(shù)據(jù)
- 在生產(chǎn)環(huán)境中旱幼,nameNode和resourceManager一般情況是在不同機器上,而nodeManageer和datanode一般情況是在同一臺機器上(至少離得近)