環(huán)境信息
- 操作系統(tǒng)系統(tǒng):Centos7
- JDK:1.7
- CDH 版本:5.8.4
利用Cloudera Manager 遷移zookeeper
- 進(jìn)入zookeeper instance界面
- 停止一臺(tái)老的zookeeper服務(wù)
- 確保zookeeper服務(wù)成功選舉出新的leader節(jié)點(diǎn)(可通過命令
echo "stat" | nc nfjd-hadoop-test01 2181
查看每個(gè)zookeeper節(jié)點(diǎn)狀態(tài)) - 從zookeeper instance界面刪除老的zookeeper節(jié)點(diǎn)
- 添加新的zookeeper節(jié)點(diǎn)
- 進(jìn)入新的zookeeper節(jié)點(diǎn)詳細(xì)頁(yè)面,啟動(dòng)zookeeper服務(wù)(zookeeper instance界面無法拉起服務(wù),報(bào)錯(cuò)信息:
Starting these new ZooKeeper Servers may cause the existing ZooKeeper Datastore to be lost. Try again after restarting any existing ZooKeeper Servers with outdated configurations. If you do not want to preserve the existing Datastore, you can start each ZooKeeper Server from its respective Status page.
) - 確保zookeeper狀態(tài)頁(yè)面為1個(gè)leader節(jié)點(diǎn)其他全為Follower
- 依次重啟其他過期配置zookeeper節(jié)點(diǎn)
- 重啟其他過期配置服務(wù),例:hdfs,yarn,hbase等
- 重新部署客戶端配置文件
- 在hdfs服務(wù)中執(zhí)行Failover Controller手動(dòng)切換一次NameNode主備
Go to the HDFS service -> Click the Instances tab -> Federation and High Availability -> Actions -> Manual Failover
注:每次遷移一臺(tái)機(jī)器波桩,遷移過程中保證一臺(tái)Leader檬果,其他全是Follower。測(cè)試環(huán)境驗(yàn)證可以先遷移再重啟其他依賴服務(wù)轨功。
利用Cloudera Manager進(jìn)行HDFS核心進(jìn)程遷移 (NameNode,Failover Controller,JournalNode)
準(zhǔn)備階段
- HDFS 已啟用 HA 并使用 quorum-based storage
- 未啟用 Federation
- automatic failover 已啟用趁舀,且 ZooKeeper 服務(wù)正常
- 目標(biāo)主機(jī)在集群中
- Hue 服務(wù)的 HDFS Web Interface Role 屬性設(shè)置為 HttpFS
- 備份所有 NameNode 和 JournalNode 上的數(shù)據(jù)目錄(
dfs.namenode.name.dir
括饶、dfs.journalnode.edits.dir
)[可讓namenode進(jìn)入安全模式,做一次check point再備份最新fsimage文件即可] - Finalize the metadata upgrade (NameNode)
- 遷移namenode主機(jī)acl用戶
遷移過程中:
- 確保多數(shù) JournalNode 正常運(yùn)行
- 一次只遷移一臺(tái)主機(jī)上的服務(wù)
遷移操作:
- HDFS --> Instances --> Migrate Roles
- 選擇待遷移的主機(jī)暇藏,然后勾選 NameNode目代、JournalNode焚刚、Failover Controller
- 選擇目標(biāo)主機(jī)点弯,并勾選 Delete existing role data on the destination host
- 勾選 Yes, I am ready to restart the cluster now
問題匯總
遷移問題
Saving namespace of NameNode on host nfjd-hadoop02-node56.jpushoa.com.
Command aborted because of exception: Command timed-out after 90 seconds
# 執(zhí)行check point超時(shí),正常情況下無法在90s內(nèi)完成check point,但是CM這步寫死了只能在90秒完成,否則遷移終止(目前結(jié)論)
解決步驟
根據(jù)日志信息找到執(zhí)行的hdfs.sh腳本所在位置(主機(jī)需正確)
-bash-4.1$ locate hdfs.sh
/opt/cloudera/parcels/CDH-5.6.0-1.cdh5.6.0.p0.45/lib/hadoop/libexec/init-hdfs.sh
/opt/cloudera/parcels/CDH-5.7.0-1.cdh5.7.0.p0.45/lib/hadoop/libexec/init-hdfs.sh
/opt/cloudera/parcels/CDH-5.7.3-1.cdh5.7.3.p0.5/lib/hadoop/libexec/init-hdfs.sh
/opt/cloudera/parcels/CDH-5.7.5-1.cdh5.7.5.p0.3/lib/hadoop/libexec/init-hdfs.sh
/opt/cloudera/parcels/CDH-5.8.4-1.cdh5.8.4.p0.5/lib/hadoop/libexec/init-hdfs.sh
/opt/cloudera/parcels/CDH-5.9.0-1.cdh5.9.0.p0.23/lib/hadoop/libexec/init-hdfs.sh
/usr/lib64/cmf/service/dr/snapshot-hdfs.sh
/usr/lib64/cmf/service/hdfs/hdfs.sh <--這一個(gè)
debug腳本,未發(fā)現(xiàn)可調(diào)超時(shí)參數(shù)(頁(yè)面也無相關(guān)參數(shù))
sh -x /usr/lib64/cmf/service/hdfs/hdfs.sh "dfsadmin" "-fs" "hdfs://nfjd-hadoop02-node27.jpushoa.com:8020" "-saveNamespace"
嘗試修改腳本(務(wù)必確保最近一次check point完成,檢查fsimage文件是否生成)
$ vi /usr/lib64/cmf/service/hdfs/hdfs.sh
# 在行'#!/bin/bash'后添加以下代碼,執(zhí)行saveNamespace命令直接退出
if [ ${4} == "-saveNamespace" ];then
exit
fi
重新執(zhí)行migrate操作
后續(xù)操作
HIVE 服務(wù)
- 停止 Hive 服務(wù)
- Update Hive Metastore NameNodes
- 啟動(dòng) Hive 服務(wù)
遷移 HttpFS
- 在新主機(jī)上添加一個(gè) HttpFS
- Hue 服務(wù)的 HDFS Web Interface Role 屬性設(shè)置為新的 HttpFS
- 更新其他依賴于 HttpFS 的配置
- 刪除舊主機(jī)上的 HttpFS 服務(wù)
遷移 NFS Gateway
- 在新主機(jī)上添加一個(gè) NFS Gateway
- 更新依賴于 NFS Gateway 的配置
- 刪除舊主機(jī)上的 NFS Gateway 服務(wù)