大數據學習筆記3--HDFS擴展和mapreduce工作過程

HDFS配置:

  • 客戶端中的配置參數可以覆蓋服務端的參數。

  • 例如:副本數,切塊大小

HDFS文件存儲:

  • 服務端存儲block的實際大小,但是不適合存儲小文件,小文件會佔用namenode的元數據空間。

  • 對於小文件數據的優化,可以在上傳之前先合併再上傳。

  • 例如:壓縮、文本文件合併

HDFS擴展:

  • hdfs支持rest API,與平臺無關

  • jetty 容器

  • hdfs支持rest command

分佈式任務傳統方式:

  1. 任務資源分發 jar配置文件。。。硬件資源的分配

  2. 任務在各個任務節點上設置運行環境,啓動執行

  3. 監視各個階段任務執行狀態

  4. 任務失敗,重試

  5. 中間結果調度,彙總

hadoop對分佈式抽象

  • yarn:資源調度器,負責硬件資源調度、任務分配、環境配置、啓動任務。

  • mapredce:分佈式運算框架,監視任務執行、失敗重試、中間結果調度。

  • spark、storm:實時計算

mapreduce

  • mapper:
    一次讀取一行數據
    輸出一組keyValue
    mapper個數等於block塊數
  • shuffle:
    合併數據
  • reduce:
    業務邏輯處理

hadoop序列化機制:

  • hadoop中目前的序列化機制是writable,後續版本中會替換爲avro

mapreduce任務提交方式

  1. jar包,hadoop jar wordcount.jar Count
    mr會被提交到集羣,屬於集羣的運行方式
  2. local模式
    在eclipse裏直接運行main方法
  3. eclipse hadoop 插件

mapreduce任務執行流程

  • RunJar:客戶端
  • ResourceManager:資源管理器,老大
  • NodeManager:執行任務管理器
  • MrAppMaste:任務啓動、監控、失敗重試
  • yarnchild:mapper和reducer

  1. RunJar向ResourceManager申請提交一個job
  2. ResourceManager返回jobid和一個job的提交的路徑(hdfs://)
  3. RunJar提交job任務的相關文件(jar,配置job.xml,split.xml)到hdfs
  4. RunJar上報給ResourceManager任務已經提交完成
  5. ResourceManager分配資源,並將任務任務寫入到任務隊列中
  6. NodeManager主動向ResourceManager領取任務
  7. NodeManager在一個容器中啓動MrAppMaster
  8. MrAppMaster向ResourceManager註冊
  9. ResourceManager向MrAppMaster返回資源信息
  10. MrAppMaster啓動mapper(mapper reducer詳細流程。。。)
  11. MrAppMaster啓動reducer
  12. 任務執行完成,向ResourceManager註銷資源
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章