Fayson的github: https://github.com/fayson/cdhproject
推薦關(guān)注微信公眾號(hào):“Hadoop實(shí)操”渐溶,ID:gh_c4c535955d0f辉浦,或者掃描文末二維碼。
1.概述
本文檔講述如何將Cloudera Manager在Kerberos環(huán)境下遷移至新的CM節(jié)點(diǎn)茎辐。通過本文檔宪郊,您將學(xué)習(xí)到以下知識(shí):
1.如何遷移Cloudera Manager節(jié)點(diǎn)
2.如何遷移MySQL元數(shù)據(jù)庫
3.如何遷移Kerberos MIT KDC
文檔主要分為以下幾步:
1.準(zhǔn)備Cloudera Manager新節(jié)點(diǎn)
2.MariaDB數(shù)據(jù)庫遷移(可選)
3.遷移Kerberos MIT KDC(可選)
4.將原CM節(jié)點(diǎn)數(shù)據(jù)遷移至新節(jié)點(diǎn)
5.遷移后集群服務(wù)驗(yàn)證
這篇文檔將著重介紹Cloudera Manager節(jié)點(diǎn)遷移,并基于以下假設(shè):
1.CDH環(huán)境已搭建并正常運(yùn)行
2.舊Cloudera Manager節(jié)點(diǎn)包含Cloudera Manager Server(即cloudera-scm-server)服務(wù)和Cloudera Management Service服務(wù)(Alert Publisher/Event Server/Host Monitor/Reports Manager/Service Monitor)
3.集群已完成MIT Kerberos的配置拖陆,并正常使用
4.集群Hadoop服務(wù)HBase/Hive/HDFS/Hue/Kafka/Oozie/Spark/Spark2/Yarn/Zookeeper正常運(yùn)行
以下是本次測(cè)試環(huán)境弛槐,但不是本操作手冊(cè)的硬限制:
1.操作系統(tǒng):Redhat7.2
2.CM版本:CM5.11.1
3.CDH版本:CDH5.11.1
4.采用ec2-user對(duì)集群進(jìn)行部署
2.準(zhǔn)備Cloudera Manager新節(jié)點(diǎn)
2.1.新CM主機(jī)前置條件
1.操作系統(tǒng)版本與集群操作系統(tǒng)版本一致(Redhat7.2)
2.關(guān)閉防火墻
3.配置時(shí)鐘同步,根據(jù)當(dāng)前集群時(shí)鐘同步服務(wù)進(jìn)行配置
4.swap已設(shè)置為10
5.關(guān)閉透明大頁面
6.關(guān)閉SElinux
7.配置/etc/hosts文件或者使用DNS服務(wù)
8.配置cm和os的yum源
9.創(chuàng)建mysql驅(qū)動(dòng)的軟鏈接
2.2.新主機(jī)信息
新主機(jī)IP地址:172.31.18.97
新Hostname:ip-172-31-18-97.ap-southeast-1.compute.internal
1.主機(jī)操作系統(tǒng)版本
2.防火墻
3.時(shí)鐘同步
4.swap信息
5.透明大頁面
6.SElinux信息
7.host信息
8.Cloudera Manager和OS的yum 源
9.在/usr/share/java目錄下創(chuàng)建mysql驅(qū)動(dòng)包軟鏈
2.3.安裝Cloudera Manager服務(wù)
ec2-user@ip-172-31-18-97 log$ sudo yum -y install cloudera-manager-server cloudera-manager-agent
安裝完成Cloudera Manager后暫時(shí)不要啟動(dòng)服務(wù)依啰。
注意:新節(jié)點(diǎn)的Cloudera Manager版本必須與原Cloudera Manager版本一致;節(jié)點(diǎn)上不要安裝CDH的其它組件;
2.4.安裝MariaDB數(shù)據(jù)庫
由于原CM節(jié)點(diǎn)安裝有MariaDB數(shù)據(jù)庫乎串,所以在新的CM節(jié)點(diǎn)也安裝MariaDB數(shù)據(jù)庫進(jìn)行數(shù)據(jù)遷移(如果不考慮數(shù)據(jù)庫遷移則可以不用安裝)
[ec2-user@ip-172-31-18-97 log]$ sudo yum -y install mariadb-server mariadb-devel
初始化MariaDB數(shù)據(jù)庫
[ec2-user@ip-172-31-18-97 log]# sudo systemctl enable mariadb
[ec2-user@ip-172-31-18-97 log]$ sudo systemctl start mariadb
[ec2-user@ip-172-31-18-97 log]$ sudo /usr/bin/mysql_secure_installation
3.MariaDB數(shù)據(jù)庫遷移
如果不做數(shù)據(jù)庫遷移可不跳過該章節(jié)
3.1.備份原MariaDB數(shù)據(jù)
將需要遷移的mysql整庫導(dǎo)出(可根據(jù)需要導(dǎo)出需要的庫信息)
[root@ip-172-31-25-3 ec2-user]# mysqldump -u root -p -A >oldmysql.dump
3.2.導(dǎo)入備份數(shù)據(jù)至新庫
1.將備份文件拷貝至新mysql服務(wù)上,進(jìn)行數(shù)據(jù)導(dǎo)入
[root@ip-172-31-18-97 ec2-user]# mysql -u root -p < oldmysql.dump
注意:數(shù)據(jù)導(dǎo)入成功后速警,需要在mysql client執(zhí)行命令:FLUSH PRIVILEGES;
4.遷移Kerberos MIT KDC
4.1.備份原Kerberos數(shù)據(jù)庫
登錄到主KDC服務(wù)器上叹誉,使用kdb5_util命令備份Kerberos數(shù)據(jù)庫及配置文件
[ec2-user@ip-172-31-25-3 ~]$ sudo kdb5_util dump -verbose kerberosdb.dumpfile
HTTP/ip-172-31-18-97.ap-southeast-1.compute.internal@CLOUDERA.COM
HTTP/ip-172-31-19-209.ap-southeast-1.compute.internal@CLOUDERA.COM
….
zookeeper/ip-172-31-28-67.ap-southeast-1.compute.internal@CLOUDERA.COM
[ec2-user@ip-172-31-25-3 ~]$
/etc/krb5.conf
/var/kerberos/krb5kdc/kdc.conf
/var/kerberos/krb5kdc/kadm5.acl
4.2.恢復(fù)備份數(shù)據(jù)至新庫
1.在新節(jié)點(diǎn)安裝Kerberos服務(wù):
yum -y install krb5-server krb5-libs krb5-auth-dialog krb5-workstation
將4.1備份的數(shù)據(jù)拷貝到新節(jié)點(diǎn)上,通過如下操作將數(shù)據(jù)還原到Kerberos數(shù)據(jù)庫
2.修改krb5.conf文件闷旧,將該文件覆蓋/etc目錄下的krb5.conf
# Configuration snippets may be placed in this directory as well
includedir /etc/krb5.conf.d/
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
[libdefaults]
default_realm = CLOUDERA.COM
dns_lookup_realm = false
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true
rdns = false
# default_realm = EXAMPLE.COM
#default_ccache_name = KEYRING:persistent:%{uid}
[realms]
# EXAMPLE.COM = {
# kdc = kerberos.example.com
# admin_server = kerberos.example.com
# }
CLOUDERA.COM = {
kdc = ip-172-31-18-97.ap-southeast-1.compute.internal
admin_server = ip-172-31-18-97.ap-southeast-1.compute.internal
}
[domain_realm]
# .example.com = EXAMPLE.COM
# example.com = EXAMPLE.COM
.ip-172-31-18-97.ap-southeast-1.compute.internal = CLOUDERA.COM
ip-172-31-18-97.ap-southeast-1.compute.internal = CLOUDERA.COM
將上述標(biāo)紅部分修改為當(dāng)前主機(jī)ip或者h(yuǎn)ostname
3.將kdc.conf和kadm5.acl文件拷貝至/var/kerberos/krb5kdc目錄下進(jìn)行覆蓋
[ec2-user@ip-172-31-18-97 kerberos_bak]$ sudo scp kadm5.acl kdc.conf /var/kerberos/krb5kdc/
4.恢復(fù)kerberos數(shù)據(jù)庫长豁,在krb5kdc和kadmin服務(wù)停止的情況下進(jìn)行如下操作
[ec2-user@ip-172-31-18-97 kerberos_bak]$ sudo kdb5_util create –r CLOUDERA.COM -s
Loading random data
Initializing database '/var/kerberos/krb5kdc/principal' for realm 'CLOUDERA.COM',
master key name 'K/M@CLOUDERA.COM'
You will be prompted for the database Master Password.
It is important that you NOT FORGET this password.
Enter KDC database master key:
Re-enter KDC database master key to verify:
[ec2-user@ip-172-31-18-97 kerberos_bak]$
[ec2-user@ip-172-31-18-97 kerberos_bak]$ sudo kdb5_util load kerberosdb.dumpfile
注意:此處需要?jiǎng)?chuàng)建kerberos數(shù)據(jù)庫,然后在做數(shù)據(jù)導(dǎo)入否則krb5kdc和kadmin服務(wù)不能正常啟動(dòng)忙灼;
啟動(dòng)krb5kdc和kadmin服務(wù)
[ec2-user@ip-172-31-18-97 kerberos_bak]$ sudo systemctl restart krb5kdc
[ec2-user@ip-172-31-18-97 kerberos_bak]$ sudo systemctl stop krb5kdc
驗(yàn)證Kerberos是否正常匠襟,使用導(dǎo)入的user_r進(jìn)行測(cè)試
[ec2-user@ip-172-31-18-97 ~]$ kdestroy
[ec2-user@ip-172-31-18-97 ~]$ kinit user_r
Password for user_r@CLOUDERA.COM:
[ec2-user@ip-172-31-18-97 ~]$ klist
Ticket cache: FILE:/tmp/krb5cc_1000
Default principal: user_r@CLOUDERA.COM
Valid starting Expires Service principal
08/09/2017 10:10:44 08/10/2017 10:10:44 krbtgt/CLOUDERA.COM@CLOUDERA.COM
renew until 08/16/2017 10:10:44
4.3.更新集群的krb5.conf配置
將KDC主服務(wù)器上的/etc/krb5.conf文件拷貝至集群中所有的節(jié)點(diǎn),并驗(yàn)證Kerberos是否正常该园。
5.將原CM節(jié)點(diǎn)數(shù)據(jù)遷移至新節(jié)點(diǎn)
5.1.備份原CM節(jié)點(diǎn)數(shù)據(jù)
主要備份CM的監(jiān)控?cái)?shù)據(jù)和管理信息酸舍,數(shù)據(jù)目錄包括:
/var/lib/cloudera-host-monitor
/var/lib/cloudera-service-monitor
/var/lib/cloudera-scm-server
/var/lib/cloudera-scm-eventserver
/var/lib/cloudera-scm-headlamp
注意:將備份命令壓縮傳輸,防止目錄的屬主和權(quán)限變化
5.2.修改CM的數(shù)據(jù)庫配置信息
修改新CM的數(shù)據(jù)庫配置文件/etc/cloudera-scm-server/db.properties里初,配置文件內(nèi)容
[root@ip-172-31-18-97 cloudera-scm-server]# sudo vim db.properties
# Copyright (c) 2012 Cloudera, Inc. All rights reserved.
#
# This file describes the database connection.
#
# The database type
# Currently 'mysql', 'postgresql' and 'oracle' are valid databases.
com.cloudera.cmf.db.type=mysql
# The database host
# If a non standard port is needed, use 'hostname:port'
com.cloudera.cmf.db.host=localhost
# The database name
com.cloudera.cmf.db.name=cm
# The database user
com.cloudera.cmf.db.user=cm
# The database user's password
com.cloudera.cmf.db.password=123456
# The db setup type
# By default, it is set to INIT
# If scm-server uses Embedded DB then it is set to EMBEDDED
# If scm-server uses External DB then it is set to EXTERNAL
com.cloudera.cmf.db.setupType=EXTERNAL
根據(jù)自己的配置信息對(duì)標(biāo)紅部分進(jìn)行修改
5.3.CM備份數(shù)據(jù)導(dǎo)入新節(jié)點(diǎn)
將原CM上備份的數(shù)據(jù)拷貝到新CM節(jié)點(diǎn)上
通過如下命令將備份數(shù)據(jù)還原至對(duì)應(yīng)目錄
[ec2-user@ip-172-31-18-97 cmbak]$ sudo tar -zxvf cloudera-host-monitor.tar.gz -C /var/lib/
[ec2-user@ip-172-31-18-97 cmbak]$ sudo tar -zxvf cloudera-service-monitor.tar.gz -C /var/lib/
[ec2-user@ip-172-31-18-97 cmbak]$ sudo tar -zxvf cloudera-scm-server.tar.gz -C /var/lib/
[ec2-user@ip-172-31-18-97 cmbak]$ sudo tar -zxvf cloudera-scm-eventserver.tar.gz -C /var/lib/
[ec2-user@ip-172-31-18-97 cmbak]$ sudo tar -zxvf cloudera-scm-headlamp.tar.gz -C /var/lib/
5.4.更新集群所有節(jié)點(diǎn)的CM Server指向
修改集群所有節(jié)點(diǎn)上/etc/cloudera-scm-agent/config.ini文件中server_host值為新CM節(jié)點(diǎn)的hostname
5.5.將原CM節(jié)點(diǎn)的Cloudera Management Service角色遷移至新節(jié)點(diǎn)
啟動(dòng)新CM節(jié)點(diǎn)的cloudera-scm-server和cloudera-scm-agent服務(wù)
[ec2-user@ip-172-31-18-97 253back]# sudo systemctl start cloudera-scm-server
[ec2-user@ip-172-31-18-97 253back]# sudo systemctl start cloudera-scm-agent
注意:在新CM節(jié)點(diǎn)上啟動(dòng)cloudera-scm-agent服務(wù)后父腕,會(huì)將CM節(jié)點(diǎn)的信息添加到cm庫的HOSTS表中,查看新CM節(jié)點(diǎn)對(duì)應(yīng)的HOSTS_ID
登錄mysql數(shù)據(jù)庫將青瀑,查看cm.HOSTS表中的Cloudera Manager的host信息
未遷移前可以通過CM管理界面看到新CM節(jié)點(diǎn)是沒有任何角色
通過如下命令璧亮,將舊CM的角色遷移至新CM節(jié)點(diǎn)上
update ROLES set HOST_ID=11 where NAME like 'mgmt%';
執(zhí)行操作后,原CM節(jié)點(diǎn)的角色被遷移至新CM節(jié)點(diǎn)
通過CM管理界面將原CM節(jié)點(diǎn)從集群刪除
將原CM節(jié)點(diǎn)刪除
由于集群配置了Kerberos斥难,則需要更新Kerberos的server枝嘶,如果Kerberos未遷移則不需要考慮此步
如果集群啟用Kerberos,則需要為新CM節(jié)點(diǎn)生成keytab(如果未啟用集群則跳過此步)
通過CM管理界面啟動(dòng)Cloudera Management Service
由于做了數(shù)據(jù)庫遷移哑诊,所以需要修改hive/hue/oozie對(duì)應(yīng)的數(shù)據(jù)庫配置(未做數(shù)據(jù)庫遷移可跳過此步)
進(jìn)行以上修改后重啟集群
6.遷移后集群服務(wù)驗(yàn)證
原CM的運(yùn)行界面群扶,歷史監(jiān)控?cái)?shù)據(jù)
登錄CM管理平臺(tái),查看集群狀態(tài)正常
遷移后可以查看正常查看集群的歷史監(jiān)控?cái)?shù)據(jù)
Hue訪問及操作正常
HDFS訪問及操作正常
HBase通過hue和shell正常操作
7.常見問題分析
1.問題一
問題現(xiàn)象:
問題原因:
由于cloudera-scm-agent服務(wù)于supervisord之間通信異常導(dǎo)致。
解決方法:
將告警節(jié)點(diǎn)上的supervisord進(jìn)程殺死竞阐,然后重啟agent服務(wù)
[root@ip-172-31-28-37 cloudera-scm-agent]# ps -ef |grep supervisord
root 26910 1 0 07:02 ? 00:00:00 /usr/lib64/cmf/agent/build/env/bin/python /usr/lib64/cmf/agent/build/env/bin/supervisord
root 28806 28748 0 07:03 pts/0 00:00:00 grep --color=auto supervisord
[root@ip-172-31-28-37 cloudera-scm-agent]# kill -9 26910
[root@ip-172-31-28-37 cloudera-scm-agent]# systemctl restart cloudera-scm-agent
2.問題二
問題現(xiàn)象:
問題原因:
由于在CM遷移時(shí)缴饭,未遷移/opt/cloudera/csd目錄導(dǎo)致。
解決方法:
將原CM節(jié)點(diǎn)上/opt/cloudera/csd目錄拷貝至新CM節(jié)點(diǎn)對(duì)應(yīng)的目錄
重啟cloudera-scm-server服務(wù)
[ec2-user@ip-172-31-18-97 253back]# sudo systemctl start cloudera-scm-server
3.問題三
問題現(xiàn)象:
Service Monitor啟動(dòng)失敗骆莹,異常信息如下
問題原因:
由于CM遷移時(shí)颗搂,/var/lib/cloudera-service-monitor目錄的文件缺失導(dǎo)致
解決方法:
將/var/lib/cloudera-service-monitor目錄的數(shù)據(jù)重新覆蓋
4.問題四
現(xiàn)象描述:
在集群遷移完成后,集群啟動(dòng)后做了高可用服務(wù)的NameNode和ResourceManager服務(wù)均不能正常顯示主備節(jié)點(diǎn)幕垦,HDFS的匯總信息無法正常顯示
問題原因:
由于集群配置了kerberos丢氢,新CM節(jié)點(diǎn)未生成keytab導(dǎo)致
解決方法:
將CM節(jié)點(diǎn)的所有服務(wù)停掉,然后生成該主機(jī)的keytab
注意:如果生成keytab異常先改,請(qǐng)檢查KDC Server是否配置正確疚察,KDC服務(wù)是否正常。
8.擴(kuò)展
如何在不停止集群服務(wù)的情況下進(jìn)行Cloudera Manager遷移仇奶,需要滿足如下條件:
1.新CM節(jié)點(diǎn)的hostname與IP地址與舊CM節(jié)點(diǎn)一致貌嫡;
2.如果需要遷移數(shù)據(jù)庫,則新數(shù)據(jù)庫的hostname與IP地址與原數(shù)據(jù)庫一致该溯,且需要將原數(shù)據(jù)庫的數(shù)據(jù)導(dǎo)入到新庫中衅枫;
3.如果需要遷移Kerberos MIT KDC,則新MIT KDC所在節(jié)點(diǎn)與舊MIT KDC節(jié)點(diǎn)的hostname與IP地址一致朗伶,且需要將舊MIT KDC數(shù)據(jù)庫數(shù)據(jù)導(dǎo)入新MIT KDC數(shù)據(jù)庫中弦撩;
注意:如果只做第1步操作,則不需要重啟hadoop集群相關(guān)服務(wù)论皆,并且不會(huì)影響hadoop集群現(xiàn)有作業(yè)益楼;如果進(jìn)行2、3步操作會(huì)對(duì)集群作業(yè)造成短暫影響点晴,但不需要重啟hadoop集群相關(guān)服務(wù)感凤;
為天地立心,為生民立命粒督,為往圣繼絕學(xué)陪竿,為萬世開太平。
推薦關(guān)注Hadoop實(shí)操屠橄,第一時(shí)間族跛,分享更多Hadoop干貨,歡迎轉(zhuǎn)發(fā)和分享锐墙。
原創(chuàng)文章礁哄,歡迎轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)注明:轉(zhuǎn)載自微信公眾號(hào)Hadoop實(shí)操