Hadoop基礎

xiaofengqqcom123發表於2020-03-23

Hadoop是什麼

  • 開源的大資料框架
  • 分散式計算的解決方案
  • Hadoop = HDFS(分散式檔案系統) + MapReduce(分散式計算)

HDFS

HDFS由一個NameNode,多個DataNode構成

  • 普通的成百上千的機器
  • 按TB甚至PB為單位的大量的資料
  • 簡單便捷的檔案獲取

HDFS資料塊

資料塊是抽象塊而非整個檔案作為儲存單元,預設大小為64MB,一般設定為128MB,備份X3
簡化了儲存系統的設計,適用於資料的備份,提升了容錯能力與可用性

NameNode

  • 管理檔案系統的名稱空間,存放檔案後設資料
  • 維護著檔案系統的所有檔案和目錄,檔案與資料塊的對映
  • 記錄每個檔案中各個塊所在的資料節點的資訊

HDFS寫流程

  1. 客戶端向NameNode發起寫資料請求
  2. 分塊寫入DataNode節點,DataNode自動完成副本備份
  3. DataNode向NameNode彙報儲存完成,NameNode通知客戶端

這裡寫圖片描述

HDFS讀流程

  1. 客戶端向NameNode發起讀資料請求
  2. NameNode找出距離最近的DataNode節點資訊
  3. 客戶端從DataNode分塊下載檔案

這裡寫圖片描述

DataNode

  • 儲存並檢索資料塊
  • 向NameNode更新所儲存塊的列表

HDFS優缺點

優點:

  • 適合大檔案儲存,支援TB,PB級的資料儲存,並有副本策略
  • 可以構建在廉價的機器上,並有一定的容錯和恢復機制
  • 支援流式資料訪問,一次寫入,多次讀取最高效

缺點:

  • 不適合大量小檔案儲存
  • 不適合併發寫入,不支援檔案隨機修改
  • 不支援隨機讀等低延時的訪問方式

MapReduce和Yarn

Yarn(Haoop2之後的資源管理器)

  1. ResourceManager:分配和排程資源;啟動並監控ApplicationMaster; 監控NodeManager
  2. ApplicatonMaster:為MR型別的程式申請資源,並分配給內部任務;負責資料的切分;監控任務的執行及容錯
  3. NodeManager:管理單個節點的資源;處理來自ResourceManager的命令;處理來自ApplicationMaster的命令

MapReduce

  1. 輸入一個大檔案,通過Split之後,將其分為多個分片
  2. 每個檔案分片由單獨的機器去處理,這就是Map方法
  3. 將各個機器計算的結果進行彙總並得到最終的結果,這就是Reduce方法

延伸思考

  • 如何通過Hadoop儲存小檔案?
  • 當有節點故障的時候,叢集是如何繼續提供服務的,如何讀,如何寫?
  • 哪些是影響MapReduce效能的因素?

Hadoop生態

這裡寫圖片描述

HBase簡介

  • 高可靠,高效能,面向列,可伸縮,實時讀寫的分散式資料庫
  • 利用HDFS作為其檔案儲存系統,支援MR程式讀取資料
  • 儲存非結構化和半結構化資料

這裡寫圖片描述
- RowKey:資料唯一標識,按字典排序
- Column Family:列族,多個列的集合.最多不要超過3個
- TimeStamp時間戳:支援多個版本資料同時存在

Spark簡介

  • 基於記憶體計算的大資料平行計算框架
  • 抽象出分散式記憶體儲存資料結構 彈性分散式資料集RDD
  • 基於事件驅動,通過執行緒池複用執行緒提高效能
  • Spark是MapReduce的替代方案,相容HDFS,HIVE等資料來源

相關文章