【知識積累】大數據旅程-HDFS之讀寫

1、服務器類型

  • 塔式服務器
  • 機架服務器(1U、2U……表示高度)
  • 刀片服務器

2、老的網絡規劃層次

接入層 -  彙集層 - 核心層

3、新的網絡規劃層次

接入層(多個接入層接入一個匯聚層) - 匯聚層(很多個)

4、Block的副本放置策略

  • 第一個副本:放置在上傳文件的DN;如果是集羣外提交,這隨機挑選一臺磁盤不太滿,CPU不太忙的節點。
  • 第二個副本:放置在於第一個副本不同的機架的節點上。
  • 第三個副本:與第二個副本相同機架的節點。
  • 更多副本:隨機節點

5、寫流程

client開始請求傳文件,NameNode創建一個目錄(檢查文件是否存在),並根據副本創建策略,返回一個排好序的位置信息(沒有寫入),開始根據位置信息開始上傳,當第一個包(1.x版本是64M)上時,將64M切分成多個小文件,採用Pipeline的方式,當第一個小文件上傳到1節點後,由1節點上傳第一個小文件到2節點,同時上傳第二個小文件到1節點,當第一個小文件上傳到2節點後,由2節點上傳第一個小文件到3節點,同時由第一節點上傳第二個小文件到2節點,64M全部傳輸完畢,通過心跳機制,彙報給NameNode,寫入位置信息。並且其中一個節點掛掉,不影響其他節點繼續傳輸,最後彙報之後,由NameNode通知沒有掛掉的節點進行copy操作,最終達到副本數

Why
1、client只需要上傳一個節點,三個節點都有
2、當返回第一個64M包開始上傳時,第二個包拿到位置信息,也開始切分上傳

6、讀流程:

  • client請求NameNode,下載某一文件,NameNode根據client的位置來將Block在節點的位置進行排序(距離優先),然後返回一個列表給client,然後請求DataNode進行連接下載。
  • 通過返回的Block列表,可以取這個文件的某一個部分,例如:0-8Block、3-5Block、6Block等。這就使IO對文件任一位置單獨讀取的能力
  • 客戶端可以是人爲,也可以是計算框架Mapreduce,這樣就可以實現本地化讀取Block,一個Block對應一個Mapreduce。

HDFS分佈式文件系統很好的支撐了計算層本地化讀取。

7、HDFS文件權限 POSIX(一套標準)

  • 與Linux文件權限類似

       r: read; w:write; x:execute
       權限x對於文件忽略,對於文件夾表示是否允許訪問其內容

  • 如果Linux系統用戶zhangsan使用hadoop命令創建一個文件,那麼這個文件在HDFS中owner就是zhangsan。
  • HDFS的權限目的:阻止好人錯錯事,而不是阻止壞人做壞事。HDFS相信,你告訴我你是誰,我就認爲你是誰。

       結合其他技術,實現組織壞人做壞事,例如:
       Kerberos :認證 - 節點、用戶、權限

8、安全模式:

  • namenode啓動的時候,首先將映像文件(fsimage)載入內存,並執行編輯日誌(edits)中的各項操作。
  • 一旦在內存中成功建立文件系統元數據的映射,則創建一個新的fsimage文件(這個操作不需要SecondaryNameNode)和一個空的編輯日誌。
  • 此刻namenode運行在安全模式。即namenode的文件系統對於客服端來說是隻讀的。(顯示目錄,顯示文件內容等。寫、刪除、重命名都會失敗)。
  • 在此階段Namenode收集各個datanode的報告,當數據塊達到最小副本數以上時,會被認爲是“安全”的, 在一定比例(可設置)的數據塊被確定爲“安全”後,再過若干時間,安全模式結束
  • 當檢測到副本數不足的數據塊時,該塊會被複制直到達到最小副本數,系統中數據塊的位置並不是由namenode維護的,而是以塊列表形式存儲在datanode中。

9、總結

  ①、 集羣
  ②、角色==進程

   namenode

  • 數據元數據
  • 內存存儲,不會有磁盤交換
  • 持久化(fsimage,eidts log)

       不會持久化block的位置信息

  • block:偏移量,因爲block不可以調整大小,hdfs,不支持修改文件

       偏移量不會改變

   datanode

  • block塊
  • 磁盤
  • 面向文件,大小一樣,不能調整
  • 副本數

       調整
       備份
           高可用,容錯
           可以調整很多個,爲了計算向數據移動
   SNN
   NN&DN

  • 心跳機制
  • DN向NN彙報block信息
  • 安全模式

   client

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章