1、業務需求說明:由於公司網絡進行了整改,隨之而來的就是對應的ip網段發生了變化,其中我的hadoop的集群各主機的ip也相應的發生了改變,因此需要對各主機進行修改ip。
2、具體操作:
首先停止cdh各組件的服務,修改各主機的ip。修改完后,本以為完事兒了,啟動Cloudera Management Service時,發現啟動失敗,無法啟動。那么問題就來了,如何通過cloudera-manager來修改主機的ip呢?郁悶的是Cloudera-Manager並沒有提供修改集群ip的方法,因此,需要修改主機的ip只能另辟蹊徑了。
3、柳暗花明又一村。
通過在網上搜索,發現很多網友也遇到了我同樣的問題,其中有些人說只能重裝,個人感覺這肯定不會這樣子,因此這個方法拋棄。於是功夫不負有心人,在網上看到了有人通過命令行的方式來修改主機的ip。這個可以。下面將該方法步驟詳細介紹一下:方法的主要思想是:由於cloudera-manager在安裝的時候,會配置相應的數據庫,該數據庫是用來存儲集群的所有的配置信息。cloudera-mamanger每次啟動的時候,都會從數據庫中讀取這些配置信息,因此想修改主機的ip,只需要修改存在數據庫中的主機的ip即可。
4、具體方法
(1)首先在安裝cloudera-manager的主機上,停止所有的cloudera管理進程
service cloudera-scm-agent stop
service cloudera-scm-server stop
(2)查看postgresql 的scm用戶的密碼
grep password /etc/cloudera-scm-server/db.properties
(3)登陸postgresql 數據庫
輸入命令:psql -h localhost -p 7432 -U scm
提示你輸入密碼,密碼就是上面步驟(2)的密碼。
(4)修改postgresql數據庫中的數據(即主機的ip)
1) 查看pg中存儲情況
select host_id, host_identifier, name, ip_address from hosts;
查詢的結果如下:
host_id | host_identifier | name | ip_address
----------------------------------------------------------------------------
3 | hadoop.slave1 | hadoop1 | 192.10.1.217
2)修改各主機的ip(分別修改各主機的ip)
update hosts set (ip_address) = ('192.10.2.217') where name='hadoop1';
3)退出postgresql數據庫
輸入命令: \q 即可
(5)修改所有機器的cloudera-scm-agent的配置文件
1)打開cloudera-scm-agent的配置文件
vi /ect/cloudera-scm-agent-/config.ini
2)修改server_host的值(這個是指定cloudera-scm-server的ip)
將該值設置為cloudera-scm-server的ip即可。
(6)修改各主機的 /etc/hosts文件,將現在的hostname與IP地址對應上
(7)重啟服務
service cloudera-scm-agent start
service cloudera-scm-server start
注:如果agent啟動失敗,查看是否9000或9001端口被占用
netstat -nap | grep 9000
netstat -nap | grep 9001
如果被占用,kill –9 相關進程,再重新啟動agent服務即可.
(8)重啟cloudera-manager上的服務即可。