主頁 > 知識(shí)庫 > Hadoop 分布式存儲(chǔ)系統(tǒng) HDFS的實(shí)例詳解

Hadoop 分布式存儲(chǔ)系統(tǒng) HDFS的實(shí)例詳解

熱門標(biāo)簽:揭陽外呼系統(tǒng)公司 去哪里辦卡 地圖標(biāo)注審核工作怎么樣注冊(cè) 南召400電話辦理資費(fèi) 地圖標(biāo)注植物名稱 鄭州中國(guó)移動(dòng)400電話申請(qǐng) 熱血傳奇沃瑪森林地圖標(biāo)注 福建ai電銷機(jī)器人加盟公司 無錫電銷機(jī)器人銷售 招聘信息

HDFS是Hadoop Distribute File System 的簡(jiǎn)稱,也就是Hadoop的一個(gè)分布式文件系統(tǒng)。

一、HDFS的優(yōu)缺點(diǎn)

1.HDFS優(yōu)點(diǎn):

  a.高容錯(cuò)性

    .數(shù)據(jù)保存多個(gè)副本

    .數(shù)據(jù)丟的失后自動(dòng)恢復(fù)

  b.適合批處理

    .移動(dòng)計(jì)算而非移動(dòng)數(shù)據(jù)

    .數(shù)據(jù)位置暴露給計(jì)算框架

  c.適合大數(shù)據(jù)處理

    .GB、TB、甚至PB級(jí)的數(shù)據(jù)處理

    .百萬規(guī)模以上的文件數(shù)據(jù)

    .10000+的節(jié)點(diǎn)

  d.可構(gòu)建在廉價(jià)的機(jī)器上

    .通過多副本存儲(chǔ),提高可靠性

    .提供了容錯(cuò)和恢復(fù)機(jī)制

2.HDFS缺點(diǎn)

  a.低延遲數(shù)據(jù)訪問處理較弱

    .毫秒級(jí)別的訪問響應(yīng)較慢

    .低延遲和高吞吐率的請(qǐng)求處理較弱

  b.大量小文件存取處理較弱

    .會(huì)占用大量NameNode的內(nèi)存

    .尋道時(shí)間超過讀取時(shí)間

  c.并發(fā)寫入、文件隨機(jī)修改

    .一個(gè)文件僅有一個(gè)寫者

    .僅支持Append寫入

二、HDFS的架構(gòu)

  如上圖所示,HDFS也是按照Master和Slave的結(jié)構(gòu)。分NameNode、SecondaryNameNode、DataNode這幾個(gè)角色。

  NameNode:是Master節(jié)點(diǎn),是大領(lǐng)導(dǎo)。管理數(shù)據(jù)塊映射;處理客戶端的讀寫請(qǐng)求;配置副本策略;管理HDFS的名稱空間;

  SecondaryNameNode:是一個(gè)小弟,分擔(dān)大哥namenode的一部分工作量;是NameNode的冷備份;合并fsimage和fsedits然后再發(fā)給namenode。

  DataNode:Slave節(jié)點(diǎn),奴隸,干活的。負(fù)責(zé)存儲(chǔ)client發(fā)來的數(shù)據(jù)塊block;執(zhí)行數(shù)據(jù)塊的讀寫操作。

  熱備份:b是a的熱備份,如果a壞掉。那么b馬上運(yùn)行代替a的工作。

  冷備份:b是a的冷備份,如果a壞掉。那么b不能馬上代替a工作。但是b上存儲(chǔ)a的一些信息,減少a壞掉之后的損失。

  fsimage:元數(shù)據(jù)鏡像文件(文件系統(tǒng)的目錄樹。)

  edits:元數(shù)據(jù)的操作日志(針對(duì)文件系統(tǒng)做的修改操作記錄)

  namenode內(nèi)存中存儲(chǔ)的是=fsimage+edits。

  SecondaryNameNode負(fù)責(zé)定時(shí)默認(rèn)1小時(shí),從namenode上,獲取fsimage和edits來進(jìn)行合并,然后再發(fā)送給namenode。減少namenode的工作量。

三、HDFS數(shù)據(jù)存儲(chǔ)單元(block)

1.文件被切割成固大小的數(shù)據(jù)塊

  a.默認(rèn)數(shù)據(jù)塊大小是64MB,數(shù)據(jù)塊大小可配置

  b.若數(shù)據(jù)塊大小不到64MB,則單獨(dú)成一個(gè)數(shù)據(jù)塊

2.一個(gè)文件存儲(chǔ)方式

  a.按大小切割成若干個(gè)block,存儲(chǔ)在不同的節(jié)點(diǎn)上

  b.每個(gè)block默認(rèn)存三個(gè)副本

  block大小和副本數(shù)由Client上傳文件的時(shí)候設(shè)置,文件上傳成功以后,副本數(shù)可以變更,但是Block 大小不可變。

四、HDFS設(shè)計(jì)思想

  一個(gè)50G的文件上傳到HDFS上,首先該文件被切割成了若干個(gè)64MB的block,block1在node1,node2,node3上存儲(chǔ)了3(默認(rèn)3個(gè),可以設(shè)置)個(gè)副本,block2在node2,node3,node4上存儲(chǔ)了3個(gè)副 本block3....直到所有的block都存儲(chǔ)3個(gè)副本;

五、NameNode(NN)、 SencondryNameNode (SNN)、DataNode(DN)

1.NameNode (NN) 的工作

  a.接受客戶端的讀寫服務(wù)

  b.保存metadata的信息,包括:文件的owership和permissions、文件包含哪些block、block保存在哪些DataNode節(jié)點(diǎn)上(在啟動(dòng)時(shí)由DataNode上報(bào))

  c.NameNode 的metadata信息會(huì)在啟動(dòng)后加載到內(nèi)存中

    .metadata信息在磁盤上存儲(chǔ)的文件為“fsimage”

    .Block的位置信息不保存在fsimage中(由DataNode上報(bào))

    .edits中保存對(duì)metadata的操作日志

2.SecondryNameNode(SNN) 的工作

  a.它不是NN的備份(但可以做NN的部分備份的工作),它的主要工作是幫助NN合并edits log 減少NN的啟動(dòng)時(shí)間

  b.SNN合并時(shí)機(jī)

    .根據(jù)配置文件設(shè)置的時(shí)間間隔fs.checkpoint.period 默認(rèn)3600秒

    .根據(jù)配置文件設(shè)置的edits log的大小 fs.checpoint.size 默認(rèn)的edits log 大小為64MB

  c.SNN合并流程

    1>NN 創(chuàng)建一個(gè)新的edits log 來接替老的 edits 的工作

    2>NN 將fsimage 和 舊的edits 拷備到 SNN上

    3>SNN上進(jìn)行合并操作,產(chǎn)生一個(gè)新的fsimage

    4>將新的fsimage 復(fù)制一份到NN上

    5>使用新的fsimage 和 新的edits log

3.DataNode (DN)

  a.存儲(chǔ)數(shù)塊(block)

  b.啟動(dòng)DN線程時(shí),DN會(huì)自動(dòng)向NN匯報(bào)Block的信息

  c.NN向DN發(fā)送心跳檢測(cè),與其DN保持聯(lián)系(3秒一次) 如果NN 連續(xù)10分鐘沒有收到DN的心跳,則認(rèn)為該DN已經(jīng)lost,并從其他DN中備份一份該DN上的所有block

  d.block的放置策略

    .第一個(gè)副本,放置在上傳文件的DN上,如果是集群外提交,則隨便選擇一臺(tái)磁盤、內(nèi)存、CPU不太忙的節(jié)點(diǎn)存儲(chǔ)

    .第二個(gè)副本,放置在與第一個(gè)副本不同機(jī)架上的節(jié)點(diǎn)上

    .第三個(gè)副本,放置在與第二個(gè)副本相同機(jī)架上的相鄰的節(jié)點(diǎn)上

    .更多副本隨機(jī)放置

六、HDFS的寫流程和讀流程

1.HDFS寫流程

    例:

  有一個(gè)文件FileA,100M大小。Client將FileA寫入到HDFS上。

  HDFS按默認(rèn)配置。

  HDFS分布在三個(gè)機(jī)架上Rack1,Rack2,Rack3。

  a.Client將FileA按64M分塊。分成兩塊,block1和Block2;

  b.Client向nameNode發(fā)送寫數(shù)據(jù)請(qǐng)求,如圖藍(lán)色虛線①------>。

  c.NameNode節(jié)點(diǎn),記錄block信息。并返回可用的DataNode,如粉色虛線②--------->。

  Block1: host2,host1,host3

  Block2: host7,host8,host4

原理:

NameNode具有RackAware機(jī)架感知功能,這個(gè)可以配置。

若client為DataNode節(jié)點(diǎn),那存儲(chǔ)block時(shí),規(guī)則為:副本1,同client的節(jié)點(diǎn)上;副本2,不同機(jī)架節(jié)點(diǎn)上;副本3,同第二個(gè)副本機(jī)架的另一個(gè)節(jié)點(diǎn)上;其他副本隨機(jī)挑選。

若client不為DataNode節(jié)點(diǎn),那存儲(chǔ)block時(shí),規(guī)則為:副本1,隨機(jī)選擇一個(gè)節(jié)點(diǎn)上;副本2,不同副本1,機(jī)架上;副本3,同副本2相同的另一個(gè)節(jié)點(diǎn)上;其他副本隨機(jī)挑選。

  d.client向DataNode發(fā)送block1;發(fā)送過程是以流式寫入。

    1>將64M的block1按64k的package劃分;

    2>然后將第一個(gè)package發(fā)送給host2;

    3>host2接收完后,將第一個(gè)package發(fā)送給host1,同時(shí)client想host2發(fā)送第二個(gè)package;

    4>host1接收完第一個(gè)package后,發(fā)送給host3,同時(shí)接收host2發(fā)來的第二個(gè)package。

    5>以此類推,如圖紅線實(shí)線所示,直到將block1發(fā)送完畢。

    6>host2,host1,host3向NameNode,host2向Client發(fā)送通知,說“消息發(fā)送完了”。如圖粉紅顏色實(shí)線所示。

    7>client收到host2發(fā)來的消息后,向namenode發(fā)送消息,說我寫完了。這樣就真完成了。如圖黃色粗實(shí)線

    8>發(fā)送完block1后,再向host7,host8,host4發(fā)送block2,如圖藍(lán)色實(shí)線所示。

    9>發(fā)送完block2后,host7,host8,host4向NameNode,host7向Client發(fā)送通知,如圖淺綠色實(shí)線所示。

    10>client向NameNode發(fā)送消息,說我寫完了,如圖黃色粗實(shí)線。。。這樣就完畢了。

  分析,通過寫過程,我們可以了解到:

   ?、賹?T文件,我們需要3T的存儲(chǔ),3T的網(wǎng)絡(luò)流量貸款。

    ②在執(zhí)行讀或?qū)懙倪^程中,NameNode和DataNode通過HeartBeat進(jìn)行保存通信,確定DataNode活著。如果發(fā)現(xiàn)DataNode死掉了,就將死掉的DataNode上的數(shù)據(jù),放到其他節(jié)點(diǎn)去。讀取時(shí),要讀其他節(jié)點(diǎn)去。

    ③掛掉一個(gè)節(jié)點(diǎn),沒關(guān)系,還有其他節(jié)點(diǎn)可以備份;甚至,掛掉某一個(gè)機(jī)架,也沒關(guān)系;其他機(jī)架上,也有備份。

2.讀流程

    例:

   讀操作就簡(jiǎn)單一些了,如圖所示,client要從datanode上,讀取FileA。而FileA由block1和block2組成。

   那么,讀操作流程為:

    a.client向namenode發(fā)送讀請(qǐng)求。

    b.namenode查看Metadata信息,返回fileA的block的位置。

     block1:host2,host1,host3

    block2:host7,host8,host4

    c.block的位置是有先后順序的,先讀block1,再讀block2。而且block1去host2上讀??;然后block2,去host7上讀取;

七、HDFS文件權(quán)限

  1.與linux系統(tǒng)文件權(quán)限類似

    r:read w:write x:execute 權(quán)限x對(duì)于文件忽略,對(duì)于文件夾表示是否允許訪問

  2.如果linux系統(tǒng)用戶zhangsan使用hadoop命令創(chuàng)建一個(gè)文件 ,那么該文件在HDFS中的所有者就是zhangsan。

  3.HDFS權(quán)限的目:阻止好人做錯(cuò)事,而不是阻止壞人做壞事;例:只要是zhangsan上傳的文件,那HDFS就認(rèn)為這個(gè)文件屬于張三,當(dāng)下次過來操作的還是zhangsan那就可以操作,而不需要密碼驗(yàn)證之類的操作。

八、安全模式

在NameNode啟動(dòng)以后會(huì)一段時(shí)間是處于安全模式,在安全模式下只可查看不能修進(jìn)行其他操作,因?yàn)樵诎踩J较翹N和DN需要做很多工作;

  1.NN 啟動(dòng)的時(shí)候首先需要將fsimage 載入內(nèi)存,并執(zhí)行編輯日志中的各項(xiàng)操作。

  2.一旦在文件系統(tǒng)中建立了一個(gè)新的元數(shù)據(jù)的映射,則創(chuàng)建一個(gè)新的fsimage 文件(與SNN配合)和一個(gè)空的edits文件

  3.安全模式下的NameNode,對(duì)客戶端是只讀的(顯示文件目錄、內(nèi)容等 ,其他的刪除、修改、重命名操作都會(huì)失敗)

  4.在安全模式下,NameNode會(huì)收集來自DataNode匯報(bào)的block的信息,如果DN匯報(bào)的block的最副本數(shù)大于設(shè)置的最小副本數(shù),則會(huì)認(rèn)為是“安全”的。

   如果有block的副本數(shù)沒有達(dá)到設(shè)置的最小副本數(shù),則該block會(huì)被復(fù)制直到達(dá)到設(shè)置的最小副本數(shù)為止。

總結(jié)

以上所述是小編給大家介紹的Hadoop 分布式存儲(chǔ)系統(tǒng) HDFS的實(shí)例詳解,希望對(duì)大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會(huì)及時(shí)回復(fù)大家的!

您可能感興趣的文章:
  • Hadoop源碼分析三啟動(dòng)及腳本剖析
  • Hadoop源碼分析二安裝配置過程詳解
  • Python API 操作Hadoop hdfs詳解
  • Hadoop源碼分析五hdfs架構(gòu)原理剖析

標(biāo)簽:景德鎮(zhèn) 南昌 鹽城 宣城 文山 黔南 桂林 東莞

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Hadoop 分布式存儲(chǔ)系統(tǒng) HDFS的實(shí)例詳解》,本文關(guān)鍵詞  Hadoop,分布式,存儲(chǔ),系統(tǒng),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Hadoop 分布式存儲(chǔ)系統(tǒng) HDFS的實(shí)例詳解》相關(guān)的同類信息!
  • 本頁收集關(guān)于Hadoop 分布式存儲(chǔ)系統(tǒng) HDFS的實(shí)例詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章