Hadoop學習筆記和總結(五)

2021-10-01 20:45:10 字數 3396 閱讀 6742

目錄

第五章 hadoop的設計思想

5.1 hdfs和hdfs設計思想

5.1.1 分而治之

5.1.2 備份機制

5.2 hdfs的整體架構

5.2.1 主節點(namenode)

5.2.2 從節點(datanode)

5.2.3 冷備份節點(secondarynamenode)

5.3 hdfs的優缺點

上一章提到過,hadoop由common、hdfs、mapreduce、yarn組成,分別對以上模組加以說明。

hdfs是分布式檔案系統,其核心設計思想是「分而治之」「備份機制」

即切分儲存。當乙個檔案過大的時候,乙個節點儲存不了,將檔案切分成塊後,分塊儲存,每個塊叫block。

比如:在一主四從的情況下,如何儲存8t資料?

解決方法:8t資料分成兩個block,每個block的大小為4t。這會導致集群中4個節點,有兩個節點閒著沒事兒幹。

上面的解決方式是不科學的,會造成負載不均衡。所以hadoop中,預設切分塊的大小是128m(hadoop 2.0),64m(hadoop 1.0)。

根據以上規則,若要儲存乙個

300m的檔案,則會分為0~

127m、128~

255m

、256

~300m

三塊,並隨機儲存在datanode中。如果乙個檔案不足1

28m,也會單獨存成乙個塊,該塊的大小就是實際儲存資料的大小。

分塊思想雖然滿足了負載均衡,但

如果有乙個塊的儲存節點宕機,資料的完整性得不到保證,所以產生第二個思想——備份機制。

hdfs中預設塊的儲存採用備份機制,預設的備份個數是3個。可通過hdfs-site.xml中的dfs

.replication屬性修改,如:

dfs.replication

3

當備份數是3時,原始資料1個,備份2個,一共3個。所有的備份地位相同,沒有主次之分。備份與原始資料一定儲存在不同的節點上。說白了,怕死機丟資料唄。

舉幾個場景,說明hdfs的備份機制。

場景1:若從節點(datanode)總共2個,但將備份數配置為:dfs

.replication=3,這時檔案在hdfs上如何儲存?

分析解釋:因為備份和原始資料一定儲存在不同的節點上,所以在這種情況下,實際只

儲存2個,另乙個進行記賬(登記),當集群節點個數大於等於3的時候會進行複製這個副本,最終達到3個。

場景2:假設集群中有從節點(datanode)4個,設定副本有3個。

(1)若有乙個儲存副本的機器宕機了,hdfs將如何處理?

此時副本個數小於設定的備份個數,hdfs會進行自動複製,達到3個副本。

(2)剛剛帶副本的機器修好了,又能用了,hdfs將如何處理?

宕機若修好了,副本數變為4個。此時集群在等待一段時間後,如果發現副本數仍然是4個,則會刪除乙個副本。

(3)備份數是越多越好麼?

分析解釋:備份越多,資料安全性越高。但是副本資料越多,也會占用過多的儲存資源,同時集群的維護成本也變高。比如:1

00個節點,5

0個副本,hdfs同時維護5

0個副本,這50個副本的機器,隨時可能發生宕機。帶副本的機器宕機,又要複製副本;機器修好重啟,又要刪除副本;反反覆覆,無情 & 浪費。

所以一般配3個副本即可,差不多得了。hdfs設計原本就是基於廉價的pc機,能保護隨時宕機資料有保障就行了。要是老宕機還是換個機器吧,不要掙扎了。

(4)影響hdfs負載均衡的因素有哪些?

解釋分析:

1)各節點上承擔的資料計算壓力是否均衡,包括:塊的大小,所有塊的副本是否分布均勻。

2)還與各個節點的硬體配置有關。

以上就是hdfs的設計思想:分塊儲存 & 備份機制

hdfs在實際儲存時,對於純新的集群,namenode採用輪詢方式儲存(輪詢datanode),舊集群靠namenode隨機分配datanode方式儲存。hdfs是硬碟儲存

架構:主從結構(以一主多從為例)

namenode主要負責:

(1) 用於儲存元資料,包括:抽象目錄樹、儲存資料和資料塊(block)的對應關係、資料塊(block)儲存在從節點(datanode)的實際位置。

a) 抽象目錄樹:hdfs的目錄結構和linux作業系統的類似,以「 / 」為根節點。之所以稱為抽象目錄樹,因為該目錄結構代表的是所有資料節點,不代表任何乙個具體的節點。如:/hadoop

.zip

b) 資料與block的對映關係:儲存的資料塊是有編號的,比如:blk_1

、blk_

2、blk_3;hdfs底層儲存資料時,每個block都有乙個唯一的id。

c) block的實際位置:hdfs底層儲存的時候,是儲存在真正的物理節點上,是硬碟儲存。所以還需要記錄block儲存的位置。

(2) 處理客戶端的讀寫請求

datanode主要負責:

(1) 負責真正的資料儲存,儲存資料的block

(2) 負責讀寫功能,磁碟io

secondarynamenode也叫助理節點,秘書節點,主要負責:

(1) 當namenode宕機的時候,secondarynamenode不能主動切換為namenode。但其中儲存的資料和namenode中的資料「相同」,其作用是當namenode宕機時,可幫助namenode恢復元資料。

(2) 幫助namenode做一些事情,分擔一些壓力。

優點:

(1) 可建立在廉價的機器上,成本低,使得中小型企業也可以搞大資料

(2) 高容錯性,乙個節點資料丟失不影響整體效能

(3)適合離線資料的處理(批處理);適合大資料處理

(4)適合一次儲存,多次讀取的場景

缺點:

(1)不支援低延遲的資料訪問,不適合實時資料處理

(2) 不擅長儲存大量的小檔案(kb級別的)

造成元資料儲存過大,造成namenode壓力;元資料在hdfs中一般是1

50byte左右,並存在namenode的記憶體中

(3) 流式檔案訪問,不支援檔案修改,對修改關閉

Hadoop學習筆記和總結(一)

大資料 即海量資料,資料量特別大的資料。大資料的特點 1 資料量大 能達到tb pb級別。1tb 1024gb,1pb 1024tb 2 資料增長的速度快 4 資料的價值密度低 整體的價值高 1 公司自己的業務資料 如電商的訂單資料 日誌資料等。2 通過網路爬蟲爬取獲得的資料 由於獲取的資料質量不同...

Hadoop學習筆記和總結(八)

目錄 第八章 hdfs中元資料的管理 8.1 元資料 8.1.1 什麼是元資料?8.1.2 元資料儲存在 8.2 元資料的寫入機制 8.3 合併 checkpoint 8.3.1 元資料合併前 8.3.2 元資料合併 checkpoint 8.4 總結集群中各節點的作用 8.4.1 namenode...

HADOOP學習筆記總結三 zookeeper

在學習hbase時,官方文件說hbase依賴於zookeeper來管理與跟蹤其分布式資料的狀態,hregionserver與hmaster都需要向它註冊。那什麼是zookeeper呢?今天學習一下 1 zookeeper是什麼 zookeeper是一種分布式協調服務,用於管理大型主機。在分布式環境中...