中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

HDFS工作機制是什么

發布時間:2021-12-09 09:47:11 來源:億速云 閱讀:174 作者:小新 欄目:大數據

這篇文章將為大家詳細講解有關HDFS工作機制是什么,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

一、HDFS是什么

HDFS(Hadoop Distributed File System)分布式文件系統,它是谷歌的GFS提出后出現的一種用戶級文件系統。提供了一個高度容錯和高吞吐量的海量數據存儲解決方案。

HDFS工作機制是什么

hadoop生態-HDFS的核心位置

二、漫畫看懂HDFS騷操作

HDFS工作機制是什么

2.1 寫操作

HDFS工作機制是什么

1

HDFS工作機制是什么

2

HDFS工作機制是什么

3

2.2 讀操作

HDFS工作機制是什么

2.3 容錯性

常見錯誤種類

HDFS工作機制是什么

節點故障

HDFS工作機制是什么

通信故障和數據損壞

HDFS工作機制是什么

讀寫故障

HDFS工作機制是什么

HDFS工作機制是什么

HDFS工作機制是什么

以上是漫畫解說部分,主要涵蓋了讀寫流程已經故障處理。下面會有具體的架構講解。

三、HDFS架構原理

HDFS工作機制是什么

3.1 HDFS幾個主要概念

3.1.1 NameNode

  • 維護和管理DataNodes

  • 管理文件系統namespace并控制client對應的訪問權限

  • 記錄所有存儲在集群中的文件的元信息。eg: blocks存儲的位置、文件的大小、權限、文件結構等,有兩個文件和元數據關聯著
    FsImage
    保存了最新的元數據檢查點,包含了整個HDFS文件系統的所有目錄和文件的信息。對于文件來說包括了數據塊描述信息、修改時間、訪問時間等;對于目錄來說包括修改時間、訪問權限控制信息(目錄所屬用戶,所在組)等。
    一般開始時namenode的操作都放在EditLog中,然后通過異步更新。
    EditLog
    記錄最近通過namenode對文件系統的所有修改操作。

  • 記錄文件系統的所有操作元數據。 存儲在 EditLogs

  • 維護著與DataNodes的心跳檢測

  • DataNodes磁盤存儲均衡、DataNodes故障轉移

3.1.2 DataNode

數據存儲節點

3.1.3 Secondary NameNode

HDFS工作機制是什么

它的主要職責

  • 備用節點,也稱為standby namenode。NameNode是HDFS的大腦核心,一旦NameNode出現不可用,那么整個HDFS集群將不可用,Secondary NameNode作為NameNode的備用節點,進行NameNode容錯

  • 負責合并Editlogs和FsImage

  • 定時從 namenode 下載Editlogs并和現有FsImage進行合并,然后將合并后的FsImage更新到namenode

FailoverController
故障切換器,管理著將活動namenode轉移為備用namenode的過程,默認通過ZK來確保僅有一個活躍namenode。每一個namenode都有一個運行著的故障轉移器。

3.1.4 Balancer

用于平衡DataNode集群之間各節點的磁盤利用率。

3.1.5 HttpFS

提供Http方式訪問和操作HDFS功能

HDFS工作機制是什么

上面幾個概念的拓撲圖

3.2 Block數據塊

HDFS里的數據都是以blocks分散在DataNodes。
通常,文件系統我們存放數據都是以一個blocks集進行存儲,HDFS也是如此。
在 hadoop 集群中,每個 block 的默認大小為 128M(此處指 hadoop 2.x 版本,hadoop 1.x 版本為 64M),也可以通過配置進行修改

dfs.block.size或 dfs.blocksize =64M

HDFS 不會將每個文件存儲在配置的 block 大小的確切倍數中,比如一個 514M 的文件 example.txt,下圖所示,假設 block 大小為默認的 128M,那么將會創建 5 個block,前 4 個 block 大小為 128M,但是最后一個 block 的大小則僅為 2M。

HDFS工作機制是什么

block大小的設置,如果太小會產生太多的blocks,這樣元數據就會很多,從而使管理blocks和元數據產生巨大開銷,增加NameNode和DataNode的負載。

3.3 寫原理

假如我們要一個文件名字“example.txt”,248M。

HDFS工作機制是什么

假設block.size設置的128M,因此client會把該文件切分成兩個block,分布是 128M和120M。

每當向HDFS寫數據的時候,都遵循下面的幾個流程

  • HDFS client 向NameNode 發送 兩個blocks(blockA、blockB)的寫入請求

  • NameNode給client進行寫入授權并提供用來進行存儲和復制的DataNodes IP

  • DataNodes基于HDFS可用性、復制因子和機架感知的選擇是完全隨機的

  • 假設復制因子設置的是3,那么NameNode將為每個blocks提供3個DataNodes IP。 相對每個block提供的3個DataNodes都是唯一的。假設NameNode提供的DataNodes列表如下:

For Block A, list A = {IP of DataNode 1, IP of DataNode 4, IP of DataNode 6}
For Block B, set B = {IP of DataNode 3, IP of DataNode 7, IP of DataNode 9}

  • 每個block將在三個不同的DataNode進行復制,維持整個集群的復制因子一致性

  • 接下來整個數據將會經歷下面三個階段:1建立管道 2數據流與復制 3管道關閉及確認



3.3.1 建立管道

client在blocks寫入之前會確保提供的DataNodes是否已經做好接受數據的準備。在這樣的情況下,client會連接該block列表中的各個DataNodes,為每個block建一個管道。以BlockA舉例,它的DN(DataNode)列表是 { DN 1 IP, DN 4 IP, DN 6 IP }

HDFS工作機制是什么

如上圖,大概有一下幾個步驟:

  • client 拿著 blockA 向 NameNode發起寫請求

  • NameNode返回一組可供存儲和復制的DN IP列表

  • client向 DN1 進行寫入準備確認,同時會告訴DN1接下來要進行復制的DN4和DN6的IP

  • DN1 會向 DN4發起寫入準備確認,依次類推DN4給DN6發送確認

  • DN6 確認完畢回傳給 DN4,DN4確認后會將自己以及DN6的確認信息給DN1,最后DN1將三個DN的確認結果答復給client

  • 管道建立完畢,client將開始進行數據復制或者數據處理

3.3.2 數據流與復制

當client與DataNodes之間的管道建立之后,client將開始將推送數據到管道。我們這里假設的復制因子是3,所以blockA將被復制三份,但是注意的是client只會將blockA推送到DN1,然后由DataNodes自己按照順序進行復制。

HDFS工作機制是什么

如上圖所示,整個復制過程步驟如下:

  • client 將blockA寫入DN1,接著DN1連接DN4

  • DN1通過管道向DN4復制數據

  • DN4數據寫完后會繼續連接DN6進行最后一份數據的復制

3.3.3 管道關閉和確認

當block復制3份完成后,client和NameNode會有一系列的ack確認來保證數據被成功寫入。
如下圖所示,DataNodes的確認和寫入的順序恰好相反,DN6寫入成功后會給DN4發送確認消息,接著DN4會將DN6和自己的確認消息發送給DN1,最后DN1將所有的確認消息發送給client,client再給NameNode確認block寫入成功,然后NameNode更新對應的元數據,最終client關閉管道。

HDFS工作機制是什么

以上的所有流程,我們都是針對blockA進行解說,而blockB是完全一樣的,blockB有自己的管道、自己的DataNodes并行的進行寫入。

HDFS工作機制是什么

如上圖所示,有兩個管道分別為blokA和blockB提供,他們各自的流程順序如下:

  • For Block A: 1A -> 2A -> 3A -> 4A

  • For Block B: 1B -> 2B -> 3B -> 4B -> 5B -> 6B

3.4 讀原理

讀的原理相對寫更容易理解,我們同樣以example.txt舉例。

HDFS工作機制是什么

如上圖所示,有以下幾個步驟

  • client請求NameNode 要讀取example.txt的數據,NameNode查詢元數據,將該文件對應的所有block及對應的DataNode列表返回

  • client并行的分別從DataNodes讀取blockA和blockB的數據。為了保證低延遲和節約帶寬,通常會選擇離client近的副本進行讀取,如果可能,會選擇和閱讀節點在同一個機架上的副本(如圖中所示,選擇了Rack1, blockA和blockB都有對應的副本)

  • client一旦獲取到所有的block,就會開始組裝成文件,并返回。

關于“HDFS工作機制是什么”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

德州市| 兴海县| 清涧县| 彰武县| 大丰市| 东城区| 平昌县| 和顺县| 弥渡县| 涿州市| 双桥区| 高雄县| 宁都县| 明溪县| 固始县| 惠来县| 昌邑市| 呼图壁县| 兴和县| 闵行区| 宿州市| 山东省| 临邑县| 阳泉市| 邯郸县| 深州市| 贺兰县| 光山县| 杭州市| 原平市| 麻栗坡县| 临夏市| 东山县| 图片| 洞口县| 海宁市| 从江县| 大埔区| 宜城市| 蕉岭县| 剑河县|