close
文檔編寫目的

在集群安裝初期由於未規範集群主機的主機名,這樣會帶來集群管理的不便,現需要將CDH/CDP集群的主機名統一規範化,在修改主機名的過程中需要注意什麼?本篇文章主要介紹如何修改Kerberos環境下的CDP集群的HOSTNAME,在修改CDH集群的主機名採用相同的方法。修改集群所有主機的hostname的步驟如下:

內容概述

環境說明及停止集群服務

修改集群HOSTNAME、KDC及集群服務配置

功能驗證

測試環境

CM為7.4.4版本,Cloudera Runtime版本為7.1.7版本

採用root用戶操作

操作系統Redhat7.6

前置條件

集群已啟用Kerberos

元數據庫和KDC服務器都在該節點上

如果有使用kudu,則需要提前備份Kudu的數據(這裡沒有提供對應操作)

環境說明

測試環境為單節點集群,所有的角色和服務都部署在該節點上。

集群原始HOSTNAME說明

IP地址

HOSTNMAE

節點說明

10.0.0.100

cdp.cloudera.aliyun

CM、NN、MySQL、KDC,DN

該節點的HOSTNAME由cdp.cloudera.aliyun修改為cdp1.cloudera.com

修改後的目標環境的IP和HOSTNAME如下

IP地址

HOSTNMAE

節點說明

10.0.0.100

cdp1.cloudera.com

CM、NN、MySQL、KDC,DN

停止集群所有服務

停止CDP服務

在CM主頁→集群名右側的三豎點→stop,停止CDP集群的服務,如果有多個集群,按照相同的方法停止所有集群的服務。

停止成功

停止Cloudera Management Service服務

在CM主頁→Cloudera Management Service右側的三豎點→stop,停止CMS的服務

CDP和CMS的所有服務都停止完畢後,如下圖所示:

停止Cloudera Manager Server服務

登錄CM服務所在節點執行如下命令停止服務

systemctl stop cloudera-scm-server

7180端口無法訪問則表示停止成功

停止集群所有節點的cloudera-scm-agent服務

可以使用批量腳本執行命令來停止所有節點的cloudera-scm-agent服務,本測試中集群為單節點集群,因此直接執行命令即可

systemctl stop cloudera-scm-agent

修改集群主機的HOSTNAME

修改主機的HOSTNAME

執行如下命令修改集群的HOSTNAME

hostnamectl set-hostname cdp1.cloudera.comhostname

注意:按照需求將集群所有節點的HOSTNAME修改為指定的名稱

修改/etc/hosts文件

修改一台主機的/etc/hosts文件,將集群的所有節點的hosts信息都配置到該節點上。如果是通過DNS管理的hostname,則需要調整DNS的配置,而不需要配置/etc/hosts文件。

vim /etc/hosts127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4::1 localhost localhost.localdomain localhost6 localhost6.localdomain610.0.0.100 cdp1.cloudera.com cdp1.cloudera.com

Hosts文件同步到所有節點

對於正常的集群,需要將修改後的hosts文件同步至集群所有節點的/etc目錄下

for i in {100..100}; do scp /etc/hosts 10.0.0.$i:/etc/hosts ; done

這裡的測試集群為單節點集群,不涉及到文件同步的問題。

檢查所有節點的HOSTNAME是否配置正確

使用DNS配置hostname也需要進行該檢查。

for i in {100..100}; do ssh 10.0.0.$i 'hostname' ; done

修改krb5.conf配置文件

修改krb5文件

修改了KDC服務所在服務器的HOSTNAME,需要將相應的客戶端配置修改/etc/krb5.conf文件,內容如下:

[root@cdh01 ~]# vim /etc/krb5.conf[libdefaults]default_realm = CLOUDERA.COMdns_lookup_kdc = falsedns_lookup_realm = falseticket_lifetime = 86400renew_lifetime = 604800forwardable = truedefault_tgs_enctypes = aes256-cts-hmac-sha1-96 aes128-cts-hmac-sha1-96 arcfour-hmac-md5default_tkt_enctypes = aes256-cts-hmac-sha1-96 aes128-cts-hmac-sha1-96 arcfour-hmac-md5permitted_enctypes = aes256-cts-hmac-sha1-96 aes128-cts-hmac-sha1-96 arcfour-hmac-md5udp_preference_limit = 1kdc_timeout = 3000[realms]CLOUDERA.COM = {kdc = cdp1.cloudera.comadmin_server = cdp1.cloudera.com}[domain_realm].cdp1.cloudera.com = CLOUDERA.COMcdp1.cloudera.com = CLOUDERA.COM

將/etc/krb5.conf文件同步至集群所有節點

for i in {100..100}; do scp /etc/krb5.conf 10.0.0.$i:/etc/krb5.conf ; done

重啟Kerberos的服務

systemctl restart krb5kdcsystemctl restart kadminsystemctl status krb5kdcsystemctl status kadmin

測試Kerberos服務是否正常

[root@cdp ~]# kinit etl_userPassword for etl_user@CLOUDERA.COM:[root@cdp ~]# klist

修改CM服務配置並啟動

修改Cloudera Manager Server服務的數據庫配置

修改CM Server的元數據庫信息的配置文件/etc/cloudera-scm-server/db.properties

vim /etc/cloudera-scm-server/db.properties

將com.cloudera.cmf.db.host地址修改為新的HOSTNAME。這裡配置的是localhost,因此不需要調整。在大家的環境中,該值基本上不會是localhost。

修改cloudera-scm-agent服務的配置

CM Agent的配置文件是/etc/cloudera-scm-agent/config.ini,需要將所有節點的該配置文件進行調整。

vim /etc/cloudera-scm-agent/config.ini

注意:需要修改集群所有節點上的配置。我這台機器因為做成鏡像的原因,server_host設置為localhost,大家的集群該屬性都是需要修改的。

啟動cloudera-scm-server服務

systemctl start cloudera-scm-servernetstat -apn |grep 7180

啟動集群所有節點的cloudera-scm-agent服務

for i in {100..100}; do ssh 10.0.0.$i 'systemctl start cloudera-scm-agent' ; done

修改集群服務配置登錄Cloudera Manager管理界面

修改集群所有服務的數據庫配置信息

CM主頁→配置→數據庫配置

將所有服務的數據庫HOSTNAME更改為修改後的HOSTNAME

搜索host,然後將所有修改的host都進行調整,然後保存修改。

保存配置。

修改CM中Kerberos配置信息

CM主頁→管理→設置

進入集群設置界面,類別中選擇Kerberos,然後搜索host,將所有涉及修改的host都進行調整

將KDC和KADMIN指向的主機host更改為最新的HOSTNAME,並保存配置。

重新生成集群所有服務的Kerberos信息

CM主頁→Hosts→進入主機列表界面

全選主機,然後執行重新生成Keytab

點擊確認,生成所有的Keytab。生成成功後顯示如下:

進入管理→安全→Kerberos憑據界面查看集群所有服務的prinicipal賬號信息

在過濾器中進行過濾,過濾條件為新的主機名,查看Principal是否正確

注意:重新生成Keytab時需要確保所有服務都是停止狀態,這裡舊的prinicipal信息也存在,但不影響集群服務使用,如果你有強迫症就是不想看到這些,可以在KDC數據庫中將cm庫下的CREDENTIALS表數據刪除,然後再重新生成。

啟動Cloudera Management Service服務

在CM頁面先啟動CMS服務。

CMS服務啟動成功

進入Konx服務,修改Knox的匹配白名單

進入Hue,修改代理主機

進入Kudu服務

查看Kudu的Master和tserver的日誌和數據目錄的配置

進入到操作系統,清空對應的master和tserver的日誌和數據目錄

完成以上配置後,部署客戶端配置

點擊「部署客戶端配置」

啟動CDP集群

集群啟動成功

集群各個服務狀態正常

功能驗證

主機名檢查

集群的所有節點的HOSTNAME已修改為最新

運行檢查所有主機進行主機健康檢查

MR任務驗證

向集群提交一個MapReduce作業測試集群功能是否正常

[[root@cdp1 zookeeper]# kinit etl_userPassword for etl_user@CLOUDERA.COM:[[root@cdp1 zookeeper]# hadoop jar /opt/cloudera/parcels/CDH/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar pi 5 5

作業運行成功

Spark任務驗證

向集群提交一個Spark作業驗證集群是否正常

[root@cdp1 ~]# klist[root@cdp1 ~]# spark-submit --class org.apache.spark.examples.SparkPi --master yarn-client --num-executors 4 --driver-memory 2g --driver-cores 1 --executor-memory 2g --executor-cores 1 /opt/cloudera/parcels/CDH/lib/spark/examples/jars/spark-examples_2.11-2.4.7.7.1.7.0-551.jar 10

作業運行成功

Hive驗證Beeline測試

Beeline連接

klistbeeline

執行beeline查詢

select count(*) from worldwidebank.ww_customers;

Hue測試

Zeppelin測試

Impala測試Impala-shell測試

Hue測試

通過Knox自動跳轉其他組件

通過Knox跳轉到其他應用的頁面

總結

修改CDP集群的HOSTNAME,需要注意修改CM節點的HOSTNAME需要將集群所有AGENT節點執行CM的HOSTNAME配置信息更新。

MYSQL服務所在節點的HOSTNAME修改,則需要更新集群所有用到MYSQL服務的配置信息。

修改了Kerberos服務器的HOSTNAME,需要更新krb5.conf配置並同步到集群的所有節點。

群集啟用了Kerberos,需要在Cloudra Manager上為所有服務重新生成Keytab信息,重新生成keytab需要停止停止除cloudera-scm-server外的所有服務和組件。如果是使用CM管理的Kerberos,需要關注/etc/krb5.conf文件是否會被重置,建議取消使用CM管理Kerberos。

需要將客戶端重新進行部署。

如果集群中有Kudu,需要先進行Kudu的數據遷移,否則會導致Kudu的數據丟失。

如果是使用DNS來管理主機名和IP地址,則也修改在DNS那邊進行調整,否則可能會導致Hive的Metastore找到原來的主機名,從而導致服務不可用。

主機名修改完成後,需要進行各種驗證來保證正常運行。

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 鑽石舞台 的頭像
    鑽石舞台

    鑽石舞台

    鑽石舞台 發表在 痞客邦 留言(0) 人氣()