Hadoop 的核心(1)—— HDFS

首先來看看Hadoop 是什麼?

  • Hadoop 是一個開源的大數據框架
  • Hadoop是一個分散式計算的解決方案
  • Hadoop = HDFS(分散式文件系統)+ MapReduce(分散式計算)

Hadoop 的兩個核心:

  • HDFS 分散式文件系統:存儲是大數據技術的基礎
  • MapReduce 編程模型:分散式計算是大數據應用的解決方案

先來介紹第一個核心 —— HDFS,它有三個特點:

  • 普通的成百上千的機器構成
  • 按TB甚至PB為單位的大量的數據
  • 簡單便捷的文件獲取

HDFS 的基本概念:

數據塊-數據塊是抽象塊而非整個文件作為存儲單元,在 Hadoop1.x 中默認大小是64M,Hadoop2.x 中默認大小是128M,默認每個塊備份3份。

由於HDFS是分散式的,也就是主從模式,NameNode 就是主,DataNode 就是從。所以 HDFS 是由一個 NameNode 和多個 DataNode 組成的。

NameNode:

  • 管理文件系統的命名空間,存放文件元數據
  • 維護著文件系統的所有文件和目錄,文件與數據塊的映射
  • 記錄每個文件中各個塊所在數據節點的信息(這些信息在 DataNode 啟動時會發送給 NameNode)

P.S. 如果 NameNode掛掉了怎麼辦?(分散式系統存在的問題,後面會討論這個問題)

DataNode(文件系統的工作節點):

  • 存儲並檢索數據塊;
  • 向 NameNode 更新所存儲塊的列表

HDFS 結構圖

HDFS 的優點:

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

HDFS 的缺點:

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

P.S. Hadoop 本來也不是為這些場景設計的,所以到底用不用 Hadoop 要基於具體的業務場景來考慮。

NameNode 掛掉了怎麼辦?如何解決單點故障問題?

這是一個很嚴重的問題,因為我們很難把這些位於不同 DataNode 的數據塊重建成文件。Hadoop2 給出了HDFS的高可用 HA 方案:HDFS通常由兩個NameNode組成,一個處於 active 狀態(主節點),另一個處於 standby 狀態(備用節點),兩者的數據是時刻保持一致的。當主節點出現問題,備用節點會自動切換,用戶不會受到影響,這樣就避免了 NameNode 的單點故障問題。當主節點對外提供服務,比如處理來自客戶端的 RPC 請求,而備用節點則不對外提供服務,僅同步主節點的狀態,以便能夠在它失敗時快速進行切換。

HDFS 的寫流程:

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

HDFS 的讀流程:

  1. 客戶端向 NameNode 發起讀數據的請求
  2. NameNode 找出距離最近的 DataNode 節點信息
  3. 客戶端從 DataNode 分塊下載文件

推薦閱讀:

新浪微博有哪些值得推薦的微博管理應用?
ggplot2玫瑰圖案例——星巴克門店分布圖
永不過時的 K 均值演算法
七周成為數據分析師:數據分析:手把手教你Excel實戰

TAG:大数据 | Hadoop | 数据分析 |