0007-如何遷移Cloudera Manager節(jié)點(diǎn)

Fayson的github: https://github.com/fayson/cdhproject
推薦關(guān)注微信公眾號:“Hadoop實(shí)操”,ID:gh_c4c535955d0f,或者掃描文末二維碼。

1.概述

本文檔講述如何將Cloudera Manager在Kerberos環(huán)境下遷移至新的CM節(jié)點(diǎn)。通過本文檔,您將學(xué)習(xí)到以下知識:

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)行

以下是本次測試環(huán)境,但不是本操作手冊的硬限制:

1.操作系統(tǒng):Redhat7.2

2.CM版本:CM5.11.1

3.CDH版本:CDH5.11.1

4.采用ec2-user對集群進(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ū)動的軟鏈接

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ū)動包軟鏈


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í)不要啟動服務(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

注意:此處需要創(chuàng)建kerberos數(shù)據(jù)庫,然后在做數(shù)據(jù)導(dǎo)入否則krb5kdc和kadmin服務(wù)不能正常啟動;

啟動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)行測試

[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ù)自己的配置信息對標(biāo)紅部分進(jìn)行修改


5.3.CM備份數(shù)據(jù)導(dǎo)入新節(jié)點(diǎn)

將原CM上備份的數(shù)據(jù)拷貝到新CM節(jié)點(diǎn)上



通過如下命令將備份數(shù)據(jù)還原至對應(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)

啟動新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)上啟動cloudera-scm-agent服務(wù)后,會將CM節(jié)點(diǎn)的信息添加到cm庫的HOSTS表中,查看新CM節(jié)點(diǎn)對應(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管理界面啟動Cloudera Management Service

由于做了數(shù)據(jù)庫遷移,所以需要修改hive/hue/oozie對應(yīng)的數(shù)據(jù)庫配置(未做數(shù)據(jù)庫遷移可跳過此步)

進(jìn)行以上修改后重啟集群

6.遷移后集群服務(wù)驗(yàn)證

原CM的運(yùn)行界面,歷史監(jiān)控?cái)?shù)據(jù)

登錄CM管理平臺,查看集群狀態(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)對應(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啟動失敗,異常信息如下

問題原因:

由于CM遷移時(shí),/var/lib/cloudera-service-monitor目錄的文件缺失導(dǎo)致

解決方法:

將/var/lib/cloudera-service-monitor目錄的數(shù)據(jù)重新覆蓋

4.問題四

現(xiàn)象描述:

在集群遷移完成后,集群啟動后做了高可用服務(wù)的NameNode和ResourceManager服務(wù)均不能正常顯示主備節(jié)點(diǎn),HDFS的匯總信息無法正常顯示

問題原因:

由于集群配置了kerberos,新CM節(jié)點(diǎn)未生成keytab導(dǎo)致

解決方法:

將CM節(jié)點(diǎn)的所有服務(wù)停掉,然后生成該主機(jī)的keytab


注意:如果生成keytab異常,請檢查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ù),并且不會影響hadoop集群現(xiàn)有作業(yè);如果進(jìn)行2、3步操作會對集群作業(yè)造成短暫影響,但不需要重啟hadoop集群相關(guān)服務(wù);


為天地立心,為生民立命,為往圣繼絕學(xué),為萬世開太平。
推薦關(guān)注Hadoop實(shí)操,第一時(shí)間,分享更多Hadoop干貨,歡迎轉(zhuǎn)發(fā)和分享。



原創(chuàng)文章,歡迎轉(zhuǎn)載,轉(zhuǎn)載請注明:轉(zhuǎn)載自微信公眾號Hadoop實(shí)操

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容