大資料之Hadoop之HDFS Ha高可用

2022-05-25 13:12:08 字數 2710 閱讀 1202

在偽分布式搭建完事之後,我打算搭建hdfs高可用。。

因為完全分布式是hadoop 1.0版本,所以我現在要搭建hadoop 2.0版本的就是所謂

的ha高可用,下面簡單的對hadoop2.x版本的介紹:

hadoop 2.x由hdfs、mapreduce和yarn三個分支構成;

hdfs:nn federation(聯邦)、ha;

2.x:只支援2個節點ha,3.0實現了一主多備

mapreduce:執行在yarn上的mr;

離線計算,基於磁碟i/o計算

yarn:資源管理系統

解決hdfs 1.0中單點故障和記憶體受限問題。

解決單點故障

hdfs ha:通過主備namenode解決

如果主namenode發生故障,則切換到備namenode上

解決記憶體受限問題

hdfs federation(聯邦)

水平擴充套件,支援多個namenode;

(2)每個namenode分管一部分目錄;

(1)所有namenode共享所有datanode儲存資源

2.x僅是架構上發生了變化,使用方式不變

對hdfs使用者透明

hdfs 1.x中的命令和api仍可以使用

用我自己的話進行對高可用的理解就是在我們以前搭建的完全分布式時,大家很容易

地就可以發現在之前搭建的完全分布式當中,我們的主節點(namenode)只有乙個,

這個時候我們就會思考乙個問題,就是如果我們的主節點發生了故障,這樣以後的工

作就無法進行了,所以在新的版本中,我們要搭建的是帶有兩個節點的namenode,並

且可以由zkfc,從而由zookeeper控制的的集群(這裡還不包括yarn,yarn以後在搭建)。

專業的術語就是:

主備namenode

解決單點故障(屬性,位置)

主namenode對外提供服務,備namenode同步主namenode元資料,以待切換所有

datanode同時向兩個namenode匯報資料塊資訊(位置)

jnn:集群(屬性)

standby:備,完成了edits.log檔案的合併產生新的image,推送回ann

兩種切換選擇

手動切換:通過命令實現主備之間的切換,可以用hdfs公升級等場合

自動切換:基於zookeeper實現

基於zookeeper自動切換方案

zookeeper failover controller:監控namenode健康狀態,

並向zookeeper註冊namenode

namenode掛掉後,zkfc為namenode競爭鎖,獲得zkfc 鎖的namenode變為active

hdfs 2.x federation的實質:

通過多個namenode/namespace把元資料的儲存和管理分散到多個節點中,使到namenode/namespace可以通過增加機器來進行水平擴充套件。

但卻不會降低hdfs的效能

可以通過多個namespace來隔離不同型別的應用,把不同型別應用的hdfs元資料的儲存和管理分派到不同的namenode中。

大家看上面這張圖的內容就是部署的到四台計算機上的各個部分的名稱,我們

在我們二三四節點上的datanode無法啟動或者啟動失敗,

相信小夥伴們如果第一次搭建的話真的很有可能犯這樣的錯誤,這個錯誤的原因

就是我們多次格式化導致的,所以請大家記住格式化慎用!!!!!!!!

問題產生的原因:

當我們執行檔案系統格式化時,會在namenode資料資料夾(即配置檔案中

dfs.namenode.name.dir在本地系統的路徑)中儲存乙個current/version文

件,記錄clusterid,標識了所格式化的 namenode的版本。如果我們頻繁的

格式化namenode,那麼datanode中儲存(即配置檔案中dfs.data.dir在本地

系統的路徑)的current/version檔案只是你第一次格式化時儲存的namenode

的id,因此就會造成datanode與namenode之間的 id 不一致。

解決辦法

把配置檔案中dfs.datanode.data.dir在本地系統的路徑下的current/version中

的clusterid改為與namenode一樣。重啟即可!(還有一種辦法是刪除dfs資料夾,

此外,若是datanode沒有啟動,請嘗試如下方法(注意這會刪除hdfs上原有的資料,

如果原有資料很重要請不要這麼操作!)

# 關閉

./sbin/stop-dfs.sh

# 刪除tmp檔案

rm -rf ./tmp

# 重新格式化

./bin/hdfs namenode -format

# 重啟

./sbin/start-dfs.sh

複製id可能我們的根目錄下會有很多的name與data的檔案,我當存的檔案是在ha目錄下

這個bug我調了好久(可能對於大佬們裡說是小操作,但是對於linux入門級水平的我來說還

是十分困難的),所以我把上面的經驗分享給大家,如果大家還是無法解決請私聊我哦!!!

大資料與Hadoop系列之HDFS命令講解

hdfs命令基本格式 hadoop fs cmd args hadoop fs ls 列出hdfs檔案系統根目錄下的目錄和檔案 hadoop fs ls r 列出hdfs檔案系統所有的目錄和檔案 hadoop fs put local file hdfs file hdfs file的父目錄一定要存...

大資料hadoop之yarn

yarn是乙個資源排程平台負責為運算程式提供伺服器運算資源,相當於乙個分布式作業系統平台,mr等程式在上面執行。mr程式把任務提交到客戶端所在節點 rm將使用者請求初始化乙個task進入自己的任務排程佇列,傳送task任務到nm am向rm申請執行maptask容器 rm向nm分配maptask,n...

大資料之 hadoop 簡介

簡介 hadoop 是乙個由 apache 會所開發的分布式系統基礎架構,它可以使使用者在不了解分布式底層細節的情況下開發分布式程式,充分利用集群的威力進行高速運算和儲存。從其定義就可以發現,它解決了兩大問題 大資料儲存 大資料分析。也就是 hadoop 的兩大核心 hdfs 和 mapreduce...