久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      快速了解HDFS、NameNode和DataNode

      概覽

      首先我們來認識一下HDFS, HDFS(Hadoop Distributed File System )Hadoop分布式文件系統(tǒng)。它其實是將一個大文件分成若干塊保存在不同服務器的多個節(jié)點中。通過聯(lián)網(wǎng)讓用戶感覺像是在本地一樣查看文件,為了降低文件丟失造成的錯誤,它會為每個小文件復制多個副本(默認為三個),以此來實現(xiàn)多機器上的多用戶分享文件和存儲空間。

      HDFS特點:

      ① 保存多個副本,且提供容錯機制,副本丟失或宕機自動恢復。默認存3份。

      ② 運行在廉價的機器上。

      ③ 適合大數(shù)據(jù)的處理。因為小文件也占用一個塊,小文件越多(1000個1k文件)塊越 多,NameNode壓力越大。

      如:將一個大文件分成三塊A、B、C的存儲方式

      PS:數(shù)據(jù)復制原則:

      除了最后一個塊之外的文件中的所有塊都是相同的大小。

      HDFS的放置策略:

      是將一個副本放在本地機架中的一個節(jié)點上,另一個位于不同(遠程)機架中的節(jié)點上,而最后一個位于不同節(jié)點上遠程機架。

      涉及到的屬性:

      塊大小:Hadoop1版本里默認為64M,Hadoop2版本里默認為128M

      復制因子:每個文件加上其文件副本的份數(shù)

      HDFS的基本結構

       快速了解HDFS、NameNode和DataNode

      如上圖所示,HDFS基本結構分NameNode、SecondaryNameNode、DataNode這幾個。

      NameNode:是Master節(jié)點,有點類似Linux里的根目錄。管理數(shù)據(jù)塊映射;處理客戶端的讀寫請求;配置副本策略;管理HDFS的名稱空間;

      SecondaryNameNode:保存著NameNode的部分信息(不是全部信息NameNode宕掉之后恢復數(shù)據(jù)用),是NameNode的冷備份;合并fsimage和edits然后再發(fā)給namenode。(防止edits過大的一種解決方案)

      DataNode:負責存儲client發(fā)來的數(shù)據(jù)塊block;執(zhí)行數(shù)據(jù)塊的讀寫操作。是NameNode的小弟。

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

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

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

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

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

      NameNode詳解

      作用:

      Namenode起一個統(tǒng)領的作用,用戶通過namenode來實現(xiàn)對其他數(shù)據(jù)的訪問和操作,類似于root根目錄的感覺。

      Namenode包含:目錄與數(shù)據(jù)塊之間的關系(靠fsimage和edits來實現(xiàn)),數(shù)據(jù)塊和節(jié)點之間的關系

      fsimage文件與edits文件是Namenode結點上的核心文件。

      Namenode中僅僅存儲目錄樹信息,而關于BLOCK的位置信息則是從各個Datanode上傳到Namenode上的。

      Namenode的目錄樹信息就是物理的存儲在fsimage這個文件中的,當Namenode啟動的時候會首先讀取fsimage這個文件,將目錄樹信息裝載到內(nèi)存中。

      而edits存儲的是日志信息,在Namenode啟動后所有對目錄結構的增加,刪除,修改等操作都會記錄到edits文件中,并不會同步的記錄在fsimage中。

      而當Namenode結點關閉的時候,也不會將fsimage與edits文件進行合并,這個合并的過程實際上是發(fā)生在Namenode啟動的過程中。

      也就是說,當Namenode啟動的時候,首先裝載fsimage文件,然后在應用edits文件,最后還會將最新的目錄樹信息更新到新的fsimage文件中,然后啟用新的edits文件。

      整個流程是沒有問題的,但是有個小瑕疵,就是如果Namenode在啟動后發(fā)生的改變過多,會導致edits文件變得非常大,大得程度與Namenode的更新頻率有關系。

      那么在下一次Namenode啟動的過程中,讀取了fsimage文件后,會應用這個無比大的edits文件,導致啟動時間變長,并且不可控,可能需要啟動幾個小時也說不定。

      Namenode的edits文件過大的問題,也就是SecondeNamenode要解決的主要問題。

      SecondNamenode會按照一定規(guī)則被喚醒,然后進行fsimage文件與edits文件的合并,防止edits文件過大,導致Namenode啟動時間過長。

      DataNode詳解

      DataNode在HDFS中真正存儲數(shù)據(jù)。

      首先解釋塊(block)的概念:

      1. DataNode在存儲數(shù)據(jù)的時候是按照block為單位讀寫數(shù)據(jù)的。block是hdfs讀寫數(shù)據(jù)的基本單位。
      2. 假設文件大小是100GB,從字節(jié)位置0開始,每128MB字節(jié)劃分為一個block,依此類推,可以劃分出很多的block。每個block就是128MB大小。
      3. block本質(zhì)上是一個 邏輯概念,意味著block里面不會真正的存儲數(shù)據(jù),只是劃分文件的。
      4. block里也會存副本,副本優(yōu)點是安全,缺點是占空間

      SecondaryNode

      執(zhí)行過程:從NameNode上 下載元數(shù)據(jù)信息(fsimage,edits),然后把二者合并,生成新的fsimage,在本地保存,并將其推送到NameNode,同時重置NameNode的edits.

      工作原理(轉(zhuǎn)自“大牛筆記”的博客,由于實現(xiàn)是清晰,受益很大,在此不做改動)

      寫操作:

       快速了解HDFS、NameNode和DataNode

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

      HDFS按默認配置。

      HDFS分布在三個機架上Rack1,Rack2,Rack3。

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

      b. Client向nameNode發(fā)送寫數(shù)據(jù)請求,如圖藍色虛線①——>。

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

          Block1: host2,host1,host3

          Block2: host7,host8,host4

          原理:

              NameNode具有RackAware機架感知功能,這個可以配置。

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

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

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

          流式寫入過程,

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

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

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

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

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

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

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

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

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

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

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

          寫1T文件,我們需要3T的存儲,3T的網(wǎng)絡流量貸款。

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

          掛掉一個節(jié)點,沒關系,還有其他節(jié)點可以備份;甚至,掛掉某一個機架,也沒關系;其他機架上,也有備份。

      讀操作:

       快速了解HDFS、NameNode和DataNode

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

      那么,讀操作流程為:

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

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

          block1:host2,host1,host3

          block2:host7,host8,host4

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

      上面例子中,client位于機架外,那么如果client位于機架內(nèi)某個DataNode上,例如,client是host6。那么讀取的時候,遵循的規(guī)律是:

      優(yōu)選讀取本機架上的數(shù)據(jù)。

      運算和存儲在同一個服務器中,每一個服務器都可以是本地服務器

      補充

      元數(shù)據(jù)

      元數(shù)據(jù)被定義為:描述數(shù)據(jù)的數(shù)據(jù),對數(shù)據(jù)及信息資源的描述性信息。(類似于Linux中的i節(jié)點)

      以 “blk_”開頭的文件就是 存儲數(shù)據(jù)的block。這里的命名是有規(guī)律的,除了block文件外,還有后 綴是“meta”的文件 ,這是block的源數(shù)據(jù)文件,存放一些元數(shù)據(jù)信息。

      數(shù)據(jù)復制

      NameNode做出關于塊復制的所有決定。它周期性地從集群中的每個DataNode接收到一個心跳和一個阻塞報告。收到心跳意味著DataNode正常運行。Blockreport包含DataNode上所有塊的列表。

      使用HDFS dfs命令對文件進行增刪改查操作 https://www.linuxidc.com/Linux/2018-08/153641.htm

      Hadoop集群間的HDFS文件拷貝  https://www.linuxidc.com/Linux/2017-09/146879.htm

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號