CDH中添加的Kafka消息不能同步[爬坑過程+總結解決]

首先通過這篇博客我們可以在CDH中安裝好Kafka:CDH添加Kafka服務
上面安裝好Kafka已經可以創建Topic,並且Topic信息所搭建的集羣均可以同步。後面因爲還需要測試一下消息傳輸,發現開啓了生產者與消費者後,在生產者發送消息到Topic時報超時,並且消費者也一直沒有接受到數據。然後後面一直在解決這個問題到後面一直報異常輸出 WARN clients.NetworkClient ,還重新裝kafka了三次。中間因爲數據刪除不乾淨連kafka都啓動不了了,弄來弄去了三四天,今天終於解決了。總結一下,若也遇到這樣的問題後來者提供一些解決思路。

首先先看一下kafka的 發佈訂閱系統的代理結構:

一、遇到問題

首先打開生產者:

kafka-console-producer --broker-list cluster2-1:2181,cluster2-2:2181,cluster2-3:2181,cluster2-4:2181 --topic test

現在再看這個指令挺可笑的。。。 kafka的端口號應該是9092,我這裏跟zookeeper的端口號沒理解一直弄混了,後面有提到。不過還是要把之前的問題還原一下,有端口問題的同學可以儘快改過來再試試可以成功了嗎。

打開消費者:

kafka-console-consumer --bootstrap-server cluster2-1:2181,cluster2-2:2181,cluster2-3:2181,cluster2-4:2181 --topic test

然後我在生產者中輸入消息:hahaha,結果報超時:

19/12/04 03:13:54 INFO utils.AppInfoParser: Kafka version: 2.2.1-kafka-4.1.0
19/12/04 03:13:54 INFO utils.AppInfoParser: Kafka commitId: unknown
>hahaha
19/12/04 03:15:13 ERROR internals.ErrorLoggingCallback: Error when sending message to topic test with key: null, value: 6 bytes with error:
org.apache.kafka.common.errors.TimeoutException: Topic test not present in metadata after 60000 ms.
>

消費者中沒有收到任何數據:

二、開始百度爬坑

這些很多都是錯誤的解決辦法,看着網上這樣解決自己也就試試。

a.在CDH中添加角色實例,添加 Kafka 源集羣和目標集羣配置

然後進入下一步:

Destination Broker List :目標集羣 Broker列表,需在目標集羣先創建需要同步Topic

Source Broker List :源集羣 Broker 列表

Topic Whitelist :需要同步的 Topics,支持正則。

在下面的Topic Whitelist屬性裏填寫:^.*

然後在clouderaMANAGER中選擇kafka的配置,輸入properties搜索有關的配置,在 Gateway日誌記錄高級配置代碼段 與 Kafka Broker高級配置代碼段 中輸入zookeeper信息:
zookeeper=cluster2-1:2181,cluster2-2:2181,cluster2-3:2181,cluster2-4:2181
這個信息我是直接在Xftp中的 /etc/kafka/conf.cloudera.kafka 路徑下看 kafka-client.conf 文件:

然後又運行了一次:

還是超時不行。

b.然後看了一篇博客,發現了一個重要的問題,自己的端口號有問題,kafka與zookeeper的端口弄混,一直使用2181的端口去訪問,找到 connect-standalone.properties 這個文件路徑:

查看這個配置信息,看到這裏的端口號是 9092

然後我又試了一下,這回指令是正確了。

開始傳遞消息,啓動生產者,在裏面輸入要傳送給消費者的數據:

kafka-console-producer --broker-list cluster2-4:9092 --topic test

啓動消費者接收數據:

kafka-console-consumer --bootstrap-server cluster2-3:9092 --topic test --from-beginning

結果不會報超時,但是一直在報警告,消息還是沒有發送成功。網上也說kafka配置還是沒配好。
報錯信息:

>19/12/05 06:10:38 INFO clients.Metadata: Cluster ID: 08y0mdmIRquCVHLwoLlKLw
haha
19/12/05 06:10:44 WARN clients.NetworkClient: [Producer clientId=console-producer] 3 partitions have leader brokers without a matching listener, including [test-0, test-2, test-1]
>19/12/05 06:10:44 WARN clients.NetworkClient: [Producer clientId=console-producer] 3 partitions have leader brokers without a matching listener, including [test-0, test-2, test-1]
19/12/05 06:10:44 WARN clients.NetworkClient: [Producer clientId=console-producer] 3 partitions have leader brokers without a matching listener, including [test-0, test-2, test-1]
19/12/05 06:10:44 WARN clients.NetworkClient: [Producer clientId=console-producer] Error while fetching metadata with correlation id 8 : {test=LEADER_NOT_AVAILABLE}
19/12/05 06:10:45 WARN clients.NetworkClient: [Producer clientId=console-producer] 3 partitions have leader brokers without a matching listener, including [test-0, test-2, test-1]
······

還是不行。。。。繼續爬,誰叫自己學的不精呢。

c.還有說需要在server.properties中添加監聽,在裏面添加:

advertised.listeners=PLAINTEXT://cluster2-3:9092

d.c的方法結果還是不可以,所以我也考慮了是不是kafka與CDH的版本兼容問題。

e.之前弄得太亂了,配置改了很多,最後一種辦法重新安裝配置。

後面重新安裝了結果連kafka都不能啓動了,後面知道要重裝kafka需要把之前的數據刪乾淨。

/var/local/kafka/data中的數據與zookeeper中的 brokers/topic 數據

重裝kafka清空之前的數據博客可以看這篇:

CDH中重裝kafka——清空之前產生的數據(data文件數據與Zookeeper中的數據)

三、重新安裝配置

在刪乾淨之前的數據後,重新安裝配置kafka。

首先記得在CDH中的kafka配置中將zook.chroot改爲 /kafka:

然後創建topic,注意CDH的使用kafka不需要通過sh來調用,並且路徑要到/kafka中:

kafka-topics --zookeeper cluster2-4:2181/kafka --create -replication-factor 1 --partitions 3 --topic test

可以查看/kafka下有無這個主題:

kafka-topics --list --zookeeper cluster2-4:2181/kafka

然後啓動生產者:

kafka-console-producer --broker-list cluster2-4:9092 --topic test

然後在生產者中寫入消息:

然後我在cluster2-3這個服務器中啓動消費者:

kafka-console-consumer --bootstrap-server cluster2-3:9092 --topic test --from-beginning

可以看到消費者接收到了數據:

終於解決這個問題了!!

總結遇到問題還是不要網上看到一種方法就去試,還是多思考一下。啓動不成功也許是因爲文中提到的幾個問題,這裏彙總一下:

a.CDH中添加角色實例,添加 Kafka 源集羣和目標集羣配置;

b.看看是不是自己的端口號有問題,端口要和zookeeper的端口區別開;

c.還有也有可能需要在 server.properties 中添加監聽;

d.考慮是不是因爲 kafka 與 CDH 的版本兼容問題;

e.這些都還不能成功的話,還是跟我一樣重新安裝配置。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章