溫馨提示:如果使用電腦查看圖片不清晰,可以使用手機打開文章單擊文中的圖片放大查看高清原圖。
Fayson的github: https://github.com/fayson/cdhproject
提示:代碼塊部分可以左右滑動查看噢
1
文檔編寫目的
Fayson在前面的文章《如何修改Kerberos的CDH集羣的HOSTNAME》介紹了修改集羣的HOSTNAME,在文章中並未提到集羣啓用HA的情況,本篇文章Fayson主要介紹在Kerberos環境下啓用HA的CDH集羣修改HOSTNAME。
- 內容概述
1.環境說明及停止集羣服務
2.修改集羣HOSTNAME及集羣服務配置
3.功能驗證
- 測試環境
1.CM和CDH版本爲5.15.0
- 前置條件
1.集羣已啓用Kerberos
2.集羣已啓用HA
2
環境說明及配置備份
1.本次只修改集羣的HOSTNAME不做角色遷移,集羣角色劃分如下圖所示:
集羣原始HOSTNAME
IP地址 | HOSTNMAE | 節點說明 |
---|---|---|
172.27.xx.xx | cdh01.fayson.com | NN、RM、JN、Oozie |
172.27.xx.xx | cdh02.fayson.com | NN、RM、JN、Oozie、DataNode |
172.27.xx.xx | cdh03.fayson.com | DataNode |
172.27.xx.xx | cdh04.fayson.com | DataNode |
需要修改爲HOSTNAME列表
IP地址 | HOSTNMAE | 節點說明 |
---|---|---|
172.27.xx.xx | cdh1.fayson.com | NN、RM、JN、Oozie |
172.27.xx.xx | cdh2.fayson.com | NN、RM、JN、Oozie、DataNode |
172.27.xx.xx | cdh3.fayson.com | DataNode |
172.27.xx.xx | cdh4.fayson.com | DataNode |
2.通過CM的API接口備份Cloudera Manager的配置
可以通過在瀏覽器輸入CM配置訪問地址,將內容備份或者在終端使用curl將數據抓取保存至文件。
終端執如下命令保存
[root@cdh04 ~]# curl -u admin:admin http://cdh01.fayson.com:7180/api/v19/cm/deployment > cme-cm-export.json
3
停止集羣所有服務
1.通過CM停止所有CDH服務
停止成功
2.停止Cloudera Management Service服務
3.執行命令刪除CDH集羣中所有的kerberos證書
刪除成功
4.登錄CM服務所在節點執行如下命令,停止Cloudera Manager Server服務
[root@cdh01 ~]# systemctl stop cloudera-scm-server [root@cdh01 ~]# systemctl status cloudera-scm-server
命令行驗證7180端口是否還存在
5.停止集羣所有節點的cloudera-scm-agent服務
[root@cdh01 shell]# sh ssh_do_all.sh node.list "systemctl stop cloudera-scm-agent"
6.爲了確保修改失敗後能夠回滾,這裏建議將MySQL或PostgreSQL進行備份
4
修改集羣HOSTNAME
1.執行如下命令修改集羣的HOSTNAME,以cdh01.fayson.com爲例
[root@cdh01 shell]# hostnamectl set-hostname cdh1.fayson.com [root@cdh01 shell]# hostname
注意:按照需求將集羣所有節點的HOSTNAME修改爲指定的名稱
2.修改/etc/hosts文件
3.將修改後的hosts文件同步至集羣所有節點的/etc目錄下
[root@cdh1 ~]# cd /data/disk1/shell/ [root@cdh1 shell]# sh bk_cp.sh ip.list /etc/hosts /etc/
4.檢查所有節點的HOSTNAME是否配置正確
5
修改krb5.conf配置文件
這裏Fayson使用的是Active Directory提供的Kerberos服務,沒有修改該服務的hostname,如果你的KDC服務是修改了HOSTNAME則需要根據如下步驟進行修改:
1.修改了KDC服務所在服務器的HOSTNAME,需要將相應的客戶端配置修改, /etc/krb5.conf文件,內容如下:
[root@cdh01 ~]# vim /etc/krb5.conf … [realms] FAYSON.COM = { kdc = cdh1.fayson.com admin_server = cdh1.fayson.com } [domain_realm] .fayson.com = FAYSON.COM fayson.com = FAYSON.COM
2.重啓kdc和kadmin服務
[root@cdh1 krb5kdc]# systemctl restart kadmin [root@cdh1 krb5kdc]# systemctl restart krb5kdc
3.將/etc/krb5.conf文件同步至集羣所有節點
[root@cdh01 shell]# sh bk_cp.sh node.list /etc/krb5.conf /etc/
測試Kerberos服務是否正常
6
修改CM服務配置並啓動
1.修改Cloudera Manager Server服務的數據庫配置
2.修改CDH集羣所有節點cloudera-scm-agent服務的配置
注意:需要修改集羣所有節點上的配置。
3.啓動cloudera-scm-server服務
[root@cdh1 ~]# systemctl start cloudera-scm-server [root@cdh1 ~]# netstat -apn |grep 7180
4.啓動集羣所有節點的cloudera-scm-agent服務
[root@cdh1 ~]# cd /data/disk1/shell/ [root@cdh1 shell]# sh ssh_do_all.sh node.list "systemctl start cloudera-scm-agent"
7
修改集羣服務配置
1.登錄Cloudera Manager管理界面
2.修改集羣所有服務的數據庫配置信息
將所有服務的數據庫HOSTNAME更改爲修改後的HOSTNAME
3.修改CM中Kerberos配置信息,Fayson使用的AD提供的Kerberos認證(根據需要進行修改)
將KDC和KADMIN指向的主機host更改爲最新的HOSTNAME,並保存配置。
4.進入主機列表界面,重新生成集羣所有服務的Kerberos信息
執行重新生成Keytab
生成成功
進入“管理”->“安全”界面查看集羣所有服務的prinicipal賬號信息
注意:重新生成Keytab時需要確保所有服務都是停止狀態,這裏舊的prinicipal信息也存在,但不影響集羣服務使用,如果覺得不順眼可以在數據庫中將cm庫下的CREDENTIALS表數據刪除,然後再重新生成。
5.啓動Cloudera Management Service服務
啓動成功
6.啓動Zookeeper服務,由於集羣啓用了HA所以這裏要先啓動ZK服務
7.進入HDFS的實例列表,點擊任意Failover Controller服務進入“進程頁面”,找到FC服務中加載的core-site.xml文件
在core-site.xml文件中找到” ha.zookeeper.auth”屬性的值
8.登錄任意ZK服務所在節點,執行zookeeper-client訪問ZK服務,在命令行執行如下命令
[zk: localhost:2181(CONNECTED) 2] addauth digest hdfs-fcs:QROKivFr9tYPAXuAbob8uXgYh5i8LZ [zk: localhost:2181(CONNECTED) 3] ls /hadoop-ha [nameservice1] [zk: localhost:2181(CONNECTED) 4] rmr /hadoop-ha/nameservice1
9.執行上述操作後,進入HDFS服務的實例列表界面,選擇任意FC服務進入
點擊“初始化自動故障轉移Znode”
10.進入Hive服務,修改Hive元數據庫配置
11.進入Sentry服務,修改Sentry元數據庫配置
12.修改Oozie數據庫地址
13.完成以上配置後,部署客戶端配置
點擊“部署客戶端配置”
14.啓動CDH集羣
集羣啓動成功
集羣各個服務狀態正常
8
功能驗證
1.集羣的HOSTNAME已修改爲最新
2.向集羣提交一個MapReduce作業測試功能是否正常
[root@cdh1 ~]# kinit usera Password for [email protected]: [root@cdh1 ~]# hadoop jar /opt/cloudera/parcels/CDH/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar pi 5 5
作業運行成功
9
總結
1.涉及到CM節點則需要將集羣所有節點的/etc/cloudera-scm-agent/config.ini配置文件中的server_host配置修改爲最新CM節點的HOSTNAME。
2.涉及到數據節點的HOSTNAME則需要修改CM服務和CDH中所有使用數據庫服務的配置(如:Oozie、Sentry、Hive、CMS等)。
3.涉及到修改KDC服務器的HOSTNAME則需要修改/etc/krb.conf配置,並且需要將該配置文件更新到集羣所有節點。
4.修改了集羣節點的HOSTNAME,需要更新集羣所有節點的/etc/hosts文件。
5.在集羣啓用HA後,修改了NameNode節點的HOSTNAME需要做一些額外的處理,先將ZK服務上/hadoop-ha/nameservice1的Znode刪除,在HDFS的FC服務界面執行初始化。
提示:代碼塊部分可以左右滑動查看噢
爲天地立心,爲生民立命,爲往聖繼絕學,爲萬世開太平。 溫馨提示:如果使用電腦查看圖片不清晰,可以使用手機打開文章單擊文中的圖片放大查看高清原圖。
推薦關注Hadoop實操,第一時間,分享更多Hadoop乾貨,歡迎轉發和分享。