1. 程式人生 > >CDH安裝時,無法納管全部的節點的一個bug

CDH安裝時,無法納管全部的節點的一個bug

問題描述:

       使用CDH 5.2版本安裝時,agent節點有12個。按照安裝說明,在各個節點啟動cm-agent之後,發現只有6個節點能被納管。其它的節點總是無法加入納管中。 在確認防火牆已經關閉後,仍然無法解決問題

問題分析:

      1. 檢視已經加入納管的節點,發現這6個節點並不是固定的,有一個節點是不斷變換的。檢視資料庫中。

mysql> select * from HOSTS;
+---------+-------------------------+--------------------------------------+----------+--------------+----------+--------+---------------------+-------------------+--------------------+------------+-----------+----------------------+-------------+-------------------+----------------+
| HOST_ID | OPTIMISTIC_LOCK_VERSION | HOST_IDENTIFIER                      | NAME     | IP_ADDRESS   | RACK_ID  | STATUS | CONFIG_CONTAINER_ID | MAINTENANCE_COUNT | DECOMMISSION_COUNT | CLUSTER_ID | NUM_CORES | TOTAL_PHYS_MEM_BYTES | PUBLIC_NAME | PUBLIC_IP_ADDRESS | CLOUD_PROVIDER |
+---------+-------------------------+--------------------------------------+----------+--------------+----------+--------+---------------------+-------------------+--------------------+------------+-----------+----------------------+-------------+-------------------+----------------+
|       1 |                       2 | e1cd96e2-1a81-4788-819a-c607cef28cf9 | hadoop44 | 16.81.224.44 | /default | NA     |                   1 |                 0 |                  0 |       NULL |        24 |          67135713280 | NULL        | NULL              | NULL           |
|       2 |                  169084 | 0b24a203-4984-4de5-b529-5ef2039eb350 | hadoop28 | 16.81.224.28 | /default | NA     |                   1 |                 0 |                  0 |       NULL |        24 |          67135713280 | NULL        | NULL              | NULL           |

|       3 |                       1 | 3b1f5ce0-1105-4a0a-8cac-27bab6b0e487 | hadoop30 | 16.81.224.30 | /default | NA     |                   1 |                 0 |                  0 |       NULL |        24 |          67135713280 | NULL        | NULL              | NULL           |
|       4 |                       1 | 54efc787-ee3b-4a50-88ed-6796e7af71e6 | hadoop31 | 16.81.224.31 | /default | NA     |                   1 |                 0 |                  0 |       NULL |        24 |          67135713280 | NULL        | NULL              | NULL           |
|       5 |                       1 | 8fb5d069-7380-4a72-8d48-bd3ad63a0d4e | hadoop32 | 16.81.224.32 | /default | NA     |                   1 |                 0 |                  0 |       NULL |        24 |          67135713280 | NULL        | NULL              | NULL           |
|       6 |                       1 | ab2d6929-e8c9-4c51-9e6e-486e04f06a79 | hadoop33 | 16.81.224.33 | /default | NA     |                   1 |                 0 |                  0 |       NULL |        24 |          67135713280 | NULL        | NULL              | NULL           |
+---------+-------------------------+--------------------------------------+----------+--------------+----------+--------+---------------------+-------------------+--------------------+------------+-----------+----------------------+-------------+-------------------+----------------+
6 rows in set (0.00 sec)

發現其中host id為0b24a203-4984-4de5-b529-5ef2039eb350 所對應的IP會不斷變化。因此可以得出這樣的一個結論: 頁面會讀取HOSTS中的資料,但是其中host_id不能重複,如果重複,就會不斷的覆蓋。

 2. 再次檢視28節點的日誌,也可以看到它上告給server的host id的值:

[[email protected] cloudera-scm-agent]# cat cloudera-scm-agent.log 
[15/Aug/2016 19:56:58 +0000] 16140 MainThread agent        INFO     SCM Agent Version: 5.2.0
[15/Aug/2016 19:56:58 +0000] 16140 MainThread agent        INFO     Agent Protocol Version: 4
[15/Aug/2016 19:56:58 +0000] 16140 MainThread agent        INFO     Using Host ID: 0b24a203-4984-4de5-b529-5ef2039eb350 

因此,我們需要檢視agent是如何獲取的host id

3. 檢視agent的啟動指令碼,可以知道:

/opt/cm-5.2.0/etc/init.d/cloudera-scm-agent  -

--> /opt/cm-5.2.0/sbin/cmf-agent 

而在cmf-agent中通過語句:

exec $CMF_PATH/agent/build/env/bin/python $CMF_PATH/agent/src/cmf/agent.py \
        --package_dir $CMF_PATH/service --agent_dir $AGENT_RUNDIR \
        --lib_dir $AGENT_LIBDIR --logfile $AGENT_LOG $*

在我除錯的過程中其傳遞的引數為:

exec /opt/cm-5.2.0/lib64/cmf/agent/build/env/bin/python /opt/cm-5.2.0/lib64/cmf/agent/src/cmf/agent.py         --package_dir /opt/cm-5.2.0/lib64/cmf/service --agent_dir /opt/cm-5.2.0/run/cloudera-scm-agent         --lib_dir /opt/cm-5.2.0/lib/cloudera-scm-agent --logfile /opt/cm-5.2.0/log/cloudera-scm-agent/cloudera-scm-agent.log 

4. 通過pdd對於agent.py指令碼進行除錯,可以知道它獲取host_id的過程: 

   agent.py首選 進入到start()函式,然後再呼叫函式parse_arguments()解析引數。在這個parse_arguments函式中,它會呼叫

    if args.host_id is None:
      self.host_id = get_host_uuid(self.lib_dir)  ----從這裡獲取host_id
    else:
      self.host_id = args.host_id

檢視get_host_uuid的程式碼(在util.py中), 其中有一句:

     uuid_path=os.path.join(lib_dir, "uuid")   其中lib_dir的值為/opt/cm-5.2.0/lib/cloudera-scm-agent, uuid為檔名。

再次檢視一下果然存在此檔案,而其中的值就是0b24a203-4984-4de5-b529-5ef2039eb350 

到此,原因就很清楚了。在安裝的時候,agent的節點的包是不是從server端拷貝過來的,而是從某個agent中拷貝過來的,因而把uuid這個檔案也拷貝過來了。從而導致多個節點的uuid相同。

解決辦法: 刪掉uuid這個檔案,讓系統重新生成一個

相關推薦

CDH安裝無法全部節點一個bug

問題描述:        使用CDH 5.2版本安裝時,agent節點有12個。按照安裝說明,在各個節點啟動cm-agent之後,發現只有6個節點能被納管。其它的節點總是無法加入納管中。 在確認防火牆已經關閉後,仍然無法解決問題 問題分析:       1. 檢視已經加入

VMware tools出現“正在進行簡易安裝無法手動啟動VMware tools安裝”解決方法

遇到的問題: 安裝VMware Tools的時候提示“正在進行簡易安裝時,無法手動啟動VMware tools安裝”的提示資訊。 解決方法如下: 1.首先關閉當前正在執行的虛擬機器,在虛擬機

安裝 VMware tools出現“正在進行簡易安裝無法手動啟動VMware tools安裝”解決方法是:

安裝VMware虛擬機器的時候如果出現“正在進行簡易安裝時,無法手動啟動VMware tools安裝”的提示資訊,如下圖所示: 解決方法是: 修改1, 修改2,確認是否為如圖所示。  

用VMware搭建的Ubuntu無法全屏 “正在進行簡易安裝無法手動啟動 VMware Tools 安裝”解決辦法之一

第一次在這裡寫部落格。 相信有不少人遇到過這樣的問題,VM搭建的Ubuntu沒法全屏,於是去網上查,然後我們從“虛擬機器”選項中進行設定,如下圖: 相信也有很多發現這並不能改變什麼,於是筆者自己琢磨一

安裝錯誤 29503 SQL Server 服務無法啟動

--------------------------------------------------------------------------------  Machine         : XN01 Product         : SQL Serv

CentOS 7 - 最小化安裝無法使用yum命令!!

修改 進行 習慣 配置文件 net ins 賬號 nbsp sys 剛剛最小化方式安裝了CentOS 7 後,說實話,真不習慣也不喜歡純shell方式工作,使用root賬號登入後,馬上想安裝GNOME,但是發現yum不能正常工作!!! 一,輸入安裝X Window命令,安裝

導入swaggerDemo無法識別工程的解決辦法

ger log 工程 無法 nbsp img logs wid 技術 1、在已建立的Java工程中,拷貝至demo中 2、打開.project修改工程名為demo的名字即可。 導入swaggerDemo時,無法識別工程的解決辦法

【BIEE】05_啟動BIEE無法啟動BI_SERVER

ini ora biee style server clas gin 無法啟動 onf 本地修改資料庫後,重新啟動BIEE,結果報錯: 點擊【查看日誌信息】後 從這裏是沒看出是什麽問題造成的,那麽我們就要去查詢啟動日誌了 問題解決 找到日誌路徑:D:\obiee\in

Oracle安裝已有oracle用戶將用戶添加到oinstall和dba用戶組

添加到oinstall和dba用戶組usermod -g oinstall -G dba -d /home/Oracle Oracle-g為指定用戶的主要組為oinstall組-G為指定用戶的次要組為dba組-d為指定用戶的主目錄語句詳細定義為將Oracle用戶的主要組指定為oinstall次要組指定為dba

(轉)html 表單提交無法獲取到disabled屬性的input值

有效 AS 單元 java check bsp ado 控件 下拉框 input的字段當為disabled是,無法獲取值,無法改變值,所以在表單提交時,獲取不到值。可以用randomly解決這個問題。 <input name="country" id="countr

python2python3同時安裝python3可以安裝並升級pip庫python2報錯的解決辦法

用戶目錄 python3 error: nbsp python http customize nta tro 最近在使用pip安裝包的的時候出現下面錯誤 UnicodeEncodeError: ‘ascii‘ codec can‘t encode characte

gdb watch 除錯無法watch

伺服器實際執行時, 某個物件的某個變數不知道啥時候被改掉了。   用valgrind查了 ,沒有記憶體越界,  那就是邏輯上有問題。  這種情況 gdb 的 watch功能就非常好用。  它能檢測記憶體中的值被改了,就會自動斷點。

360急速瀏覽器 adobe flash 安裝無法顯示

1、360急速瀏覽器啟用adobe flash 外掛   adobe flash 離線安裝包 : Ma_Hong_Kai 連結: https://pan.baidu.com/s/17183LvRMija9YMWP7AdzRQ 提取碼: wd63 adobe flash

java 迴圈中使用list出現list中全部加入了物件導致沒有實現分組的解決方案

  清空list即可 public List fetchNmapSingleTaskWithDataList() { Map map = new HashMap<>(); List listNst = new ArrayList();

ubuntu下織夢DEDE安裝GD外掛 OFF問題

出現這個問題一般是php-gd沒有安裝的問題,因此需要安裝php-gd。 ubuntu安裝如下: sudo apt install php7.0-gd #安裝完成之後重啟apache服務,不知道具體名字Tab補全 sudo systemctl restart apache2.ser

MDK生成bin檔案通過USB進行IAP升級無法啟動

BOOT 更新微控制器內的使用者程式,方式一般都是模擬器,串列埠,網路口,usb DFU,另類一點CAN也行,但是這些方式都有一個共同點,必須要有相應的上位機配合操作,這個比較麻煩。 另一種方式是把我們的裝置通過USB插入電腦,在電腦上映射出一個磁碟,把升級的.bin檔案拷貝到磁碟中,b

vs2013在解除安裝出現安裝錯誤devenv.exe

  [3DCC:0CD4][2018-10-10T19:23:13]i001: Burn v3.7.2002.0, Windows v6.3 (Build 9600: Service Pack 0), path: C:\ProgramData\Package Cache\{4d78

LoadRunner監控Linux資源無法監控到資料指標47190錯誤解決

一、41790錯誤內容詳情和截圖: 47190 Monitor name :UNIX Resources. Cannot initialize the monitoring on ​(對應的ip地址). Error while creating the RPC clie

[32] Window PowerShell DSC 學習系列----使用DSC Package安裝如何獲取Product ID?

DSC的自身提供Package的DSC資源去安裝msi格式的檔案。 剛好筆者需要自動安裝Chef的客戶端,其就是一個msi格式的檔案。但是有點複雜和煩人的是其需要使用這提供一個Product ID,其具體格式參考如下: Package [string] #ResourceName {

靜默安裝許可權問題的處理

1.在Manifest中直接新增android.permission.INSTALL_PACKAGES許可權時 使用靜默安裝方式安裝應用時遇到java.lang.SecurityException: Neither user 10084 nor current process has and