翻譯: https://www.cloudera.com/documentation/enterprise/latest/topics/cdh_hag_hdfs_ha_admin.html
管理HDFS高可用性群集
繼續閱讀:
手動切換到備用NameNode
使用Cloudera Manager手動故障轉移到備用NameNode
如果您正在運行啟用了HA的HDFS服務,則可以手動使活動的NameNode故障切換到備用NameNode。這對計劃中的停機時間很有用 - 用于主要主機的硬件更改,配置更改或軟件升級。
- 轉到HDFS服務。
- 單擊Instances 選項卡。
- 點擊 Federation and High Availability.
- 找到要在NameNode上進行故障轉移的Nameservice行。(在使用HDFS聯合時會顯示多行。)
- 選擇Actions > Manual Failover.。(如果未為群集啟用HA,則不會顯示此選項。)
- 從彈出窗口中選擇應該激活的NameNode,然后單擊Manual Failover。
注意: 僅限高級用戶:您可以設置Force Failover復選框,以強制選定的NameNode處于活動狀態,無論其狀態或其他NameNode的狀態如何。強制進行故障轉移將首先嘗試將選定的NameNode故障轉移到活動模式,并將另一個NameNode故障轉移到待機模式。即使選定的NameNode處于安全模式,它也會這樣做。如果失敗,它將繼續將選定的NameNode轉換為活動模式。為避免使兩個NameNode處于活動狀態,只有在另一個NameNode完全停止或者可以通過第一個故障轉移步驟轉換到待機模式時,才使用它。
- 當所有步驟完成后,點擊完成。
Cloudera Manager將您選擇的NameNode轉換為活動NameNode,將另一個NameNode轉換為備用NameNode。HDFS應該永遠不會有兩個活動NameNodes。
使用命令行手動故障轉移到備用NameNode
要在兩個NameNode之間啟動故障轉移,請運行該命令 hdfs haadmin -failover.
此命令會導致從第一個提供的NameNode到第二個的故障轉移。如果第一個NameNode處于Standby狀態,則此命令只是將第二個NameNode轉換為Active狀態而不會出錯。如果第一個NameNode處于Active狀態,則會嘗試將其正常轉換到Standby狀態。如果失敗,則fencing method (由 dfs.ha.fencing.methods配置)將按順序嘗試,直到其中一種方法成功。只有在這個過程之后,第二個NameNode才會轉換到活動狀態。如果沒有fencing method 成功,則第二個NameNode不會轉換為活動狀態,并且會返回錯誤。
注意:無論是使用Cloudera Manager 或 命令行配置HA,都可以運行hdfs haadmin -failover 。這意味著即使Cloudera Manager不可用,也可以手動啟動故障轉移。
將HA NameNode移動到新主機
使用Cloudera Manager將HA NameNode移動到新主機
請參閱使用遷移角色向導移動高可用NameNode,故障轉移控制器和JournalNode角色。
使用命令行將HA NameNode移動到新主機
使用以下步驟將其中一個NameNode移動到新主機。
在這個例子中,當前的NameNodes稱為nn1 和 nn2 ,新的NameNode稱為 nn2-alt。這個例子假定nn2-alt 已經是此CDH 5 HA群集的成員,已配置自動故障轉移并且 nn2上的JournalNode 將被移到
nn2-alt 。
該過程將NameNode和JournalNode服務從nn2轉移到nn2-alt , 重新配置nn1以識別JournalNode的新目錄,重啟nn1 和 nn2-alt 。
第1步:確保nn1是活動的NameNode
確保不會移動的NameNode 處于活動狀態; 在這個例子中,nn1 必須活躍。您可以使用NameNodes的Web UI查看哪些是活動的; 請參閱啟動NameNodes。
如果 nn1 不是活動的NameNode,請使用 hdfs haadmin -failover 命令來啟動故障轉移:
hdfs haadmin -failover nn2 nn1
第2步:在nn2上停止服務
一旦確定要移動的節點處于不活動狀態,請停止該節點上的服務:在本例中,停止服務nn2 。停止NameNode,ZKFC守護程序(如果是自動故障轉移部署)以及JournalNode(如果您正在移動它)。繼續如下。
- 停止NameNode守護進程:
$ sudo service hadoop-hdfs-namenode stop
- 如果ZKFC守護進程正在運行,請停止它:
$ sudo service hadoop-hdfs-zkfc stop
- 停止JournalNode守護程序,如果它正在運行:
$ sudo service hadoop-hdfs-journalnode stop
- 確保這些服務未設置為在引導時重新啟動。如果你不打算使用nn2作為NameNode,您可能需要刪除這些服務。
第3步:在nn2-alt上安裝NameNode后臺進程
請參閱安裝說明 步驟3:使用YARN安裝CDH 5或步驟4:使用MRv1安裝CDH 5 來安裝 hadoop-hdfs-namenode 。
第4步:在nn2-alt上配置HA
請參閱啟用HDFS HA 在core-site.xml和hdfs-site.xml中配置nn2-alt 。您應該復制已經在nn2相應文件中設置的值。
- 如果您要將JournalNode重新定位到 nn2-alt ,按照這些指示安裝它,但不要啟動它。
- 如果您使用自動故障轉移功能,請確保按照說明在nn2-alt上配置必要的屬性 并在ZooKeeper中初始化HA狀態。
注意:如果已配置自動故障轉移,則無需關閉群集即可執行此操作; 僅當您從手動切換到自動故障切換時才需要關閉。
第5步:將dfs.name.dir和dfs.journalnode.edits.dir目錄的內容復制到nn2-alt
使用rsync或類似的工具來復制內容dfs.name.dir 目錄,如果您正在移動JournalNode到nn2-alt ,dfs.journalnode.edits.dir目錄也需要復制。
第6步:如果您正在移動JournalNode,請更新nn1上的dfs.namenode.shared.edits.dir
更新nn1上hdfs-site.xml文件中的 dfs.namenode.shared.edits.dir 值,有關更多信息,請參閱本節。
步驟7:如果您使用自動故障轉移,請在nn2-alt上安裝zkfc守護程序
有關說明,請參閱部署自動故障轉移(如果已配置),但不要啟動守護程序。
第8步:在nn2-alt上啟動服務
啟動NameNode; 啟動ZKFC進行自動故障切換; 如果你想運行JournalNode,請在nn2-alt安裝并啟動它。繼續如下。
- 啟動JournalNode守護進程:
$ sudo service hadoop-hdfs-journalnode start
- 啟動NameNode守護進程:
$ sudo service hadoop-hdfs-namenode start
- 啟動ZKFC守護進程:
$ sudo service hadoop-hdfs-zkfc start
- 將這些服務設置為在引導時重啟; 例如在RHEL兼容系統上:
$ sudo chkconfig hadoop-hdfs-namenode on
$ sudo chkconfig hadoop-hdfs-zkfc on
$ sudo chkconfig hadoop-hdfs-journalnode on
第9步:如果您要重新部署JournalNode,請故障轉移到nn2-alt
hdfs haadmin -failover nn1 nn2-alt
步驟10:如果您要重新安置JournalNode,請重新啟動nn1
重新啟動NameNode nn1 的守護進程,強制它重新讀取配置:
$ sudo service hadoop-hdfs-namenode stop
$ sudo service hadoop-hdfs-namenode start
其他HDFS haadmin命令
HA NameNode配置并啟動后,您將有權訪問一些其他命令來管理HA HDFS集群。具體來說,你應該熟悉 hdfs haadmin 的子命令。
本頁介紹一些重要子命令的高級用法。有關每個子命令的具體使用信息,您應該運行 hdfs haadmin -help <command>.
getServiceState
getServiceState - 確定給定的NameNode是活動還是備用
連接到提供的NameNode以確定其當前狀態,會在STDOUT 打印“standby”或“active” 。此子命令可由cron作業或監視腳本使用,這些腳本需要根據NameNode當前處于活動狀態還是處于待機狀態而具有不同的行為。
checkHealth
checkHealth - 檢查給定NameNode的健康狀況
連接到提供的NameNode以檢查其健康狀況。NameNode能夠對自身執行一些診斷,包括檢查內部服務是否按預期運行。如果NameNode健康,該命令將返回0,否則返回非零值。可將此命令用于監視目的。
啟用HA后使用dfsadmin命令
默認情況下,dfsadmin命令會對活動和備用NameNode都起作用。要將選項限制為特定的NameNode,請使用 -fs選項。例如,
要為兩個NameNode打開安全模式,請運行:
hdfs dfsadmin -safemode enter
要打開單個NameNode的安全模式,請運行:
hdfs dfsadmin -fs hdfs://<host>:<port> -safemode enter
有關dfsadmin命令選項的完整列表,請運行:hdfs dfsadmin -help.
從NFS共享編輯目錄轉換為基于Quorum-based存儲
使用Cloudera Manager從NFS共享編輯目錄轉換為基于Quorum-based存儲
將HA配置從使用NFS共享編輯目錄轉換為基于Quorum-based的存儲涉及禁用當前HA配置,然后使用基于Quorum的存儲啟用HA。
- 禁用HA。
- 盡管備用NameNode角色已刪除,但其名稱目錄不會被刪除。清空這些目錄。
- 啟用基于Quorom-based的HA。
使用命令行將NFS共享編輯目錄轉換為基于Quorum-based存儲
要從使用NFS的共享存儲切換到基于Quorum-based存儲,請按照下列步驟操作: