HDFS 聯邦機制的特性以及聯邦集群的配置和管理

2022-07-10 06:27:10 字數 4357 閱讀 7821

hdfs有兩個主要層:

block管理服務

儲存-是由資料節點通過儲存塊在本地檔案系統上提供,並允許讀/寫訪問

之前的 hdfs 體系結構只允許整個集群使用單一命名空間。乙個 namenode 管理這個命名空間。hdfs 聯邦機制通過向 hdfs 檔案系統新增支援多個 namenodes/命名空間來解決先前架構的侷限性。

為了水平擴充套件名稱服務,聯邦機制使用多個獨立的 namenodes/namespaces。namenodes 是聯邦的,也就是說,namenodes 是獨立的,不需要彼此協調。datanodes被所有的 namenodes 用作塊的公共儲存器。每個datanode都註冊了集群中的所有 namenodes。datanodes定期傳送心跳和阻止報告,並處理 namenodes 的命令。

使用者可以使用 viewfs 建立個性化的namespace檢視,其中 viewfs 類似於某些 unix/linux 系統中的客戶端掛載表。

乙個block pool是屬於某namespace的一組塊。datanodes為集群中的所有block pool儲存塊。這允許命名空間為新塊生成 block id,而不需要與其他namespace協調。某個namenode 的失敗並不妨礙 datanode 為集群中的其他 namenode 提供服務。

namespace及其block pool一起稱為namespace volume。它是乙個自成一體的管理單元。當乙個 namenode/namespace被刪除時,資料節點上對應的block pool被刪除。在集群公升級期間,將每個namespace volume作為乙個單元進行公升級。

clusterid

新增了乙個新的識別符號 clusterid,用以標識集群中的所有節點。當對 某個namenode 進行格式化時,將提供此識別符號或自動生成此識別符號。在格式化其他namenodes時,也應使用該id,以保證他們屬於同乙個集群。

主要益處聯邦配置是向後相容的,並允許現有的單個 namenode 配置在不作任何更改的情況下工作。新配置的設計使得集群中的所有節點都具有相同的配置,而不需要根據集群中節點的型別部署不同的配置。

配置:步驟1: 將以下引數新增到您的配置中: dfs.nameservices: 使用逗號分隔 nameserviceds 列表進行配置。這將由 datanodes 用於確定集群中的所有 namenodes。

步驟2: 對於每個 namenode 和 secondary namenode/backupnode/checkpointer,將以相應的 nameserviceid 作為字尾的以下配置新增到通用配置檔案中。

daemon

配置引數

下面是兩個 namenodes 的配置示例:

格式化 namenodes

步驟1: 使用以下命令格式化乙個 namenode:

> $hadoop_prefix_home/bin/hdfs namenode -format [-clusterid ]
選擇乙個唯一的cluster_id,它不會與環境中的其他群集衝突。如果沒有提供,那麼將自動生成唯一的 clusterid。

步驟2: 使用以下命令格式化其他 namenode:

> $hadoop_prefix_home/bin/hdfs namenode -format -clusterid
注意,步驟2中的 cluster _ id 必須與步驟1中的 cluster _ id 相同。如果它們不同,那麼附加的 namenodes 將不會成為聯邦集群的一部分。

從舊版本公升級並配置聯合

舊版本支援單個 namenode。將集群公升級到更新的版本以啟用聯合。在公升級過程中,您可以提供乙個 clusterid,如下所示:

> $hadoop_prefix_home/bin/hdfs start namenode --config $hadoop_conf_dir  -upgrade -clusterid
如果沒有提供 clusterid,將自動生成它。

向現有的 hdfs 集群新增新的 namenode

遵循以下步驟:

啟動和停止群集

要啟動集群,請執行以下命令:

> $hadoop_prefix_home/bin/start-dfs.sh
要停止群集,請執行以下命令:

> $hadoop_prefix_home/bin/stop-dfs.sh
這些命令可以在 hdfs 配置可用的任何節點上執行。該命令使用配置確定集群中的 namenode,並在這些節點上啟動 namenode 程序。資料節點在從檔案中指定的節點上啟動。該指令碼可以作為參考,用於構建自己的啟動和停止集群的指令碼。

平衡器均衡器已更改為與集群中的多個 namenodes 一起工作,以平衡集群。可以使用以下命令執行平衡器:

"$hadoop_prefix"/bin/hadoop-daemon.sh --config $hadoop_conf_dir --script "$bin"/hdfs start balancer [-policy ]
策略可以是:

datanode退役

datanode退役與以前的版本類似。需要將要退役的節點新增到所有 namenode 的 exclude 檔案中。當所有 namenodes 都完成datanode的退役時,該datanode就被認為是退役了。

步驟1: 要向所有 namenodes 分發乙個 exclude 檔案,請使用以下命令:

"$hadoop_prefix"/bin/distributed-exclude.sh
步驟2: 重新整理所有 namenodes 以獲取新的排除檔案。

"$hadoop_prefix"/bin/refresh-namenodes.sh
集群 web 控制台

與 namenode 狀態 web 頁面類似,在聯邦中新增了乙個集群 web 控制台來監視聯邦集群,該控制台位於 http://< any _ nn _ host: port >/dfsclusterhealth.jsp。集群中的任何 namenode 都可用於訪問此網頁。

該網頁提供以下資料:

聯邦HDFS集群搭建

聯邦hdfs集群搭建 啟動步驟 先啟動zookeeper集群 再在5 6 7上啟動journalnode hadoop daemon.sh start journalnode 在bi下nn1上 hdfs namenode format clusterid itcast hdfs zkfc forma...

HDFS 塊快取和聯邦HDFS

塊快取 對於訪問頻繁的塊,顯式地快取在datanode的記憶體中,以堆外塊快取的方式存在 利用快取塊的優勢提高讀操作的效能。聯邦hdfs namenode在記憶體中儲存了每個檔案與每個資料塊的引用關係,超大集群的namenode記憶體會成為瓶頸 hdfs允許擴充套件namenode,不同的namen...

「聯邦學習」和他的朋友們

最近,我們所從事的行業領域 聯邦學習 異常火熱,上雲用數賦智 資料成為生產要素之一 新基建之一的大資料 我有時候給同行和非同行講述各行各業都需要用到我們這個技術,來保證企業生產提效過程中使用資料的安全,過程中,他們都被我感動和調動起來了,然後反過來給我提了很多可以應用的場景和潛力,說這個市場未來真的...