天天看點

Hadoop元件

目錄

  • Hadoop
    • HDFS
      • HDFS元件
        • NameNode
        • DataNode
        • SecondaryNameNode
        • Client
        • HDFS檔案的上傳與下載下傳
        • NameNode與SecondaryNameNode的機制
      • Yarn元件
      • MapReduce架構

Hadoop

分布式計算平台,同時也是一個生态圈
  • hadoop 1.X HDFS+MapReducer+Common
  • hadoop 2.X HDFS+MAP+Reducer+Common
  • hadoop 3.X java7->java8,引入糾删碼,重寫shell腳本,支援超過兩個NameNode,預設端口改變

HDFS

分布式檔案存儲系統(可靠,高吞吐),利用目錄樹定位檔案
  • 可靠性-維護多個副本
  • 擴充性-随時增減伺服器
  • 高效性-task并行
  • 容錯性-失敗的任務重新配置設定執行
  • 适合一次寫入多次讀出
  • 支援資料的追加,不支援随機修改

HDFS元件

NameNode

  • NameNode 存儲檔案的中繼資料,位置資訊
  • 配置副本政策
  • 管理資料塊映射資訊
  • 處理讀寫請求

DataNode

  • DataNode 存儲檔案的真實資料,并做資料校驗
  • 一個資料塊在DN中會存儲資料本身,資料長度,檢驗和以及時間戳。同時DN啟動後會向NN進行注冊,後續每隔一小時向NN彙報資料塊資訊,同時每三秒進行一次NN心跳并帶回NN指令,如果10分鐘沒有心跳信号,NN會認為該節點當機。
  • 在資料節點退役過程中推薦使用黑名單進行退役,辭職後會進行HDFS資料轉移。

SecondaryNameNode

  • SecondaryNameNode 對NameNode做備份,但不能頂替NN提供服務
  • 定期合并鏡像檔案,編輯日志,推送給NN
  • 可以恢複NN的資料(可能不完整)

Client

  • Client切分上傳的檔案
  • 告知NN檔案的位置資訊,互動DN的讀寫資料
  • 通過指令管理HDFS

HDFS檔案的上傳與下載下傳

  • 上傳:用戶端通過HDFS對象向NameNode送出上傳請求,NN确定檔案狀态以及父目錄是否存在,傳回許可。随後使用者上傳檔案的第一個資料塊,請求NN傳回DataNode,NN根據請求傳回三個DN節點,使用者通過輸出流請求在一個DN上上傳資料(上傳的DN根據網絡拓撲計算決定),然後該DN會調用其他的DN節點将這個通信信道建立完成。三個節點逐級應答用戶端,用戶端向第一個DN節點上傳一個資料塊,以packet為機關,DN收到後先進行落盤處理,同時将該packet傳送給第二個DN節點然後再傳給第三個DN節點。當第一個塊傳輸完成後,第二個資料塊重複上面的動作,傳遞完成後關閉傳輸流,傳輸過程中,第一個DN節點會将packet放入一個應答隊列,待所有節點相應完成後表示上傳成功。
  • 下載下傳: 用戶端通路HDFS對象,向NameNode請求下載下傳某檔案,NameNode傳回檔案的中繼資料資訊,以及資料塊坐在的位置。用戶端得到資訊後擷取檔案輸入流,根據就近原則随機原則随機挑選一個DN節點擷取packet,用戶端收到後現在本地緩存,然後寫入目标檔案。

NameNode與SecondaryNameNode的機制

  • NN在啟動後會将fsimage和edits加載到記憶體裡,格式化後則是建立。用戶端對HDFS進行操作後,NN先将操作記錄到日志中,然後再記憶體中進行操作,2NN向NN詢問是否CheckPoint,帶回指令。如果CheckPoint,NN會生成一個滾動的日志檔案,一個磁盤中編輯日志的複制檔案,将磁盤中的鏡像檔案和複制好的編輯日志檔案複制到2NN中,加載到2NN記憶體中合并成一個合并檔案,傳回到NN中,NN用重命名的方式覆寫原檔案。
  • fsimage是HDFS檔案系統中中繼資料的一個永久性檢查點
  • edits存放HDFS檔案系統中所有的更新操作
  • CheckPoint觸發點為1小時或者edits執行了一百萬次操作。2NN在一分鐘内确認三次NN的操作次數

Yarn元件

  • ResourceManager 處理用戶端請求,監控NodeManager,啟動ApplicationMaster,排程資源
  • NodeManager 管理單個節點上的資源,處理ResourceManager的指令,處理ApplicationMaster的指令
  • Contianer 封裝單個節點上的資源
  • ApplicationMaster 負責資料切分,為應用申請資源,監控任務

MapReduce架構⭐

  • 常用的資料序列化類型 String-》Text | Map-》MapWritable | Array-》ArrayWritable
  • 一個運算程式一般是一個map階段和一個reduce階段,MapTask并發執行,互不相幹。ReduceTask并發執行,依賴MapTask的資料結果。
  • 關于程序,mrAppMaster負責過程排程和狀态協調,MapTask負責map階段的資料處理。ReduceTask負責reduce階段的資料處理。