1. 程式人生 > >Cloudera-Manager修改叢集主機的IP

Cloudera-Manager修改叢集主機的IP

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上的服務即可。