優(yōu)缺點
優(yōu)點:
- 高容錯性:數(shù)據(jù)自動保存多個副本朴肺;副本丟失后黔牵,自動恢復
- 適合批處理:移動計算而數(shù)據(jù)留攒;數(shù)據(jù)位置暴露給計算框架
- 適合大數(shù)據(jù)處理:GB、TB嫉嘀、PB級數(shù)據(jù)炼邀;百萬規(guī)模以上的文件數(shù)量;10K+節(jié)點
- 可構(gòu)建在廉價機器上:通過多副本提高可靠性剪侮;提供了容錯和恢復機制
缺點:
- 不適合低延遲數(shù)據(jù)訪問(訂單):毫秒級拭宁;低延遲與高吞吐率
- 不適合小文件存嚷逋恕:占用NameNode大量內(nèi)存;尋道時間超過讀取時間
- 并發(fā)寫入杰标、文件隨機修改:一個文件只能有一個寫者兵怯;僅支持append
HDFS架構(gòu)圖
clipboard.png
HDFS數(shù)據(jù)存儲單元(block)
- 文件被切分成固定大小的數(shù)據(jù)塊:默認數(shù)據(jù)塊大小為64MB,可配置腔剂;若文件大小不到64MB媒区,則單獨存成一個block
- 一個文件存儲方式:按大小被切分成若干個block,存儲到不同節(jié)點上掸犬;默認情況下每個block都有三個副本
- block大小和副本通過client端上傳文件時設(shè)置袜漩,文件上傳成功后副本數(shù)可以變更,block size不可變更
NameNode(NN)
- 主要功能:接受客戶端的讀寫服務(wù)
- 保存元數(shù)據(jù)信息包括:文件overship和permission湾碎;文件包含哪兒些塊宙攻;block保存在哪兒個DN(由DN啟動時上報)
- 元數(shù)據(jù)信息在NN啟動后加載到內(nèi)存:元數(shù)據(jù)存儲到硬盤的文件名為fsimage;block的位置信息不會保存到fsimage介褥;edit記錄對元數(shù)據(jù)的操作日志
SecondaryNameNode(SNN)
- 不是NN的備份(但可以做備份)座掘,它的主要工作是幫助NN合并edits log,減少NN啟動時間
- SNN執(zhí)行合并時機:根據(jù)配置文件設(shè)置的時間間隔fs.checkpoint.period(默認3600秒)柔滔;根據(jù)配置文件設(shè)置edits log大小fs.checkpoint.size規(guī)定edits文件的最大(默認64MB)
Data Node
- 存儲數(shù)據(jù)(Block)
- 啟動DN線程時會向NN匯報Block信息
- 通過向NN發(fā)送心跳保持與其聯(lián)系(3秒)溢陪,如果NN10分鐘沒有收到DN心跳,則認為其已經(jīng)lost廊遍,并copy其上的block到其他DN
Block的副本放置策略
- 第一個副本:放置在上傳文件的DN嬉愧;如果是集群外提交,則隨機挑選一臺磁盤不太滿喉前,CPU不太忙的節(jié)點
- 第二個副本:放置在于第一個副本不同的機架的節(jié)點上
- 第三個副本:與第二個副本相同機架的節(jié)點
- 更多副本:隨機節(jié)點
運行機制:
- 一個名字節(jié)點和多個數(shù)據(jù)節(jié)點
- 數(shù)據(jù)復制
- 故障檢測
- 空間回收機制
HDFS讀流程
clipboard (1).png
HDFS寫流程
clipboard (2).png
安全模式
- NN啟動的時候没酣,首先將映像文件(fsimage)載入內(nèi)存,并執(zhí)行編輯日志(edits)中的各項操作
- 一旦在內(nèi)存中成功建立文件系統(tǒng)元數(shù)據(jù)的映射卵迂,則創(chuàng)建一個新的fsimage文件(這個操作不需要SNN)和一個空的編輯日志
- 此刻NN運行在安全模式裕便。即NN的文件系統(tǒng)對于客戶端來說是只讀的。
- 在此階段NN收集各個DN的報告见咒,當數(shù)據(jù)塊達到最小副本數(shù)以上時偿衰,會被認為是安全的,在一定比例的數(shù)據(jù)塊確定為安全后改览,再過若干時間下翎,安全模式結(jié)束
- 當檢測到副本數(shù)不足的數(shù)據(jù)塊,該塊會被復制直到達到最小副本數(shù)宝当,系統(tǒng)中數(shù)據(jù)塊的位置并不是由NN維護的视事,而是以塊列表形式存儲在DN中