記錄自定義kafka的parcel庫,CDH安裝kafka服務,無法安裝過去的排雷過程

hackeruncle發表於2017-03-30
1.版本
CDH5.9.1  安裝KAFKA-2.0.2-1.2.0.2.p0.5-el6     失敗
CDH5.9.1  安裝KAFKA-2.1.0-1.2.1.0.p0.115-el6       失敗
CDH5.10.0 安裝KAFKA-2.1.1-1.2.1.1.p0.18-el6   失敗

2.錯誤描述
自定義kafka的parcel庫,安裝kafka服務,無法安裝過去。
記錄自定義kafka的parcel庫,CDH安裝kafka服務,無法安裝過去的排雷過程
2.1開啟 stdout,stderr,Role Log 三個日誌輸出,
我們一般出現問題,只會看Role log的,這時拋錯為"
Will not attempt to authenticate using SASL (unknown error)",這時我們就分析kafka連線不上zk,
於是Google,百度等等,各種檢查一大堆,最後沒有解決問題。


2.2具體排查: 
  1. 防火牆,
  2. 埠號,
  3. /etc/hosts檔案,
  4. zoo.cfg檔案,
  5. 使用者許可權,
  6. kafka的zk jar包(客戶端)和zookeeper的jar包版本,
  7. kafka broker程式的記憶體太小,直接oom

3.Role log:

Opening socket connection to server sht-sgmhadoopdn-03/172.16.101.60:2181. Will not attempt to authenticate using SASL (unknown error)
記錄自定義kafka的parcel庫,CDH安裝kafka服務,無法安裝過去的排雷過程

4.stdout:
java.lang.OutOfMemoryError: Java heap space
記錄自定義kafka的parcel庫,CDH安裝kafka服務,無法安裝過去的排雷過程

5.stderr:
+ grep -q OnOutOfMemoryError /proc/14495/cmdline
+ RET=0
+ '[' 0 -eq 0 ']'
+ TARGET=14495
++ date
+ echo Thu Mar 30 18:10:20 CST 2017
+ kill -9 14495
記錄自定義kafka的parcel庫,CDH安裝kafka服務,無法安裝過去的排雷過程

6.經過n次的排查操作,無效。這時我才仔細去看stdout 和 stderr日誌,發現這麼一句話“OnOutOfMemoryError”,
剛開始我已經注意到這句話,但是沒有仔細去想,所以耗時差不多1.5工作日。

7.我們需要刪除kafka服務,重新安裝,那麼最好也要將kafka的log.dirs引數的值為"/var/local/kafka/data",這個目錄,安裝的機器上手工刪除掉。

   
8.於是我們另外開啟cdh的home介面,發現kafka已經安裝上,就是啟動失敗,然後去kafka的配置介面搜尋"memory"字樣,修改為1G,儲存。
記錄自定義kafka的parcel庫,CDH安裝kafka服務,無法安裝過去的排雷過程 
 
 
9.啟動kafka即可。
記錄自定義kafka的parcel庫,CDH安裝kafka服務,無法安裝過去的排雷過程
 
10.思考
在第一次安裝時,介面中沒有配置這個引數的值。
為什麼,為什麼,為什麼kafka的在安裝時broker_max_heap_size這個引數設定的這麼小?

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30089851/viewspace-2136372/,如需轉載,請註明出處,否則將追究法律責任。

相關文章