nifi給kafka打數據遇到的坑 - kafka2.1 的listeners配置

如下圖,在測試使用nifi往kafka打數據的時候,發現通過ambari安裝的kafka收不到數據,而通過docker安裝的kafka則可以收到數據。
模擬公司場景,消費海外的kafka,往國內kafka打數據
模擬公司場景,消費海外的kafka,往國內kafka打數據

nifi後臺log日誌報錯信息

2020-04-19 11:09:02,916 INFO [Timer-Driven Process Thread-10] o.a.kafka.common.utils.AppInfoParser Kafka version : 0.9.0.1
2020-04-19 11:09:02,916 INFO [Timer-Driven Process Thread-10] o.a.kafka.common.utils.AppInfoParser Kafka commitId : 23c69d62a0cabf06
2020-04-19 11:09:33,124 ERROR [Timer-Driven Process Thread-10] o.a.n.p.kafka.pubsub.PublishKafka PublishKafka[id=90615958-0171-1000-ecfb-347ad3ec18ae] Failed to send all message for StandardFlowFileRecord[uuid=cf69651e-f562-42c6-abed-9b8b55259213,claim=StandardContentClaim [resourceClaim=StandardResourceClaim[id=1587248292562-1, container=default, section=1], offset=419, length=9],offset=0,name=cf69651e-f562-42c6-abed-9b8b55259213,size=9] to Kafka; routing to failure due to org.apache.kafka.common.errors.TimeoutException: Batch Expired: org.apache.kafka.common.errors.TimeoutException: Batch Expired
org.apache.kafka.common.errors.TimeoutException: Batch Expired

log報錯並沒有直接說明報錯原因,而是報一個【批次過期】錯誤,幸好在網上搜這個錯誤的時候大部分信息都指向了kafka的server.properties中listeners的配置問題。

原因

ambari安裝kafka是server.properties中listeners的配置默認ip是localhost,這樣導致遠程訪問不到kafka的broker

解決

因爲使用ambari安裝的kafka,不需要到kafka目錄找到配置修改,只需要在ambari的web管理界面修改配置即可。

將listeners的localhost改成真實ip。
在這裏插入圖片描述

注意:
我先將ip用hostname的方式,結果是不行的,最後改成真實ip才能接收到數據。
這個問題考慮過nifi所在的機器是不是配置了hosts映射,專門測試過也不行,所以還是要使用真實ip吧
在ambari裏面的配置有版本管理,很方便記錄

ps.這裏跟網上的稍微不同的是ambari裏面只改listeners就解決了,也沒找到【advertised.listeners】這個配置

如果是自己手動安裝的kafka就需要將下面兩個參數都改了。
修改前:
listeners=PLAINTEXT://:9092

修改後
listeners=PLAINTEXT://真實ip:9092
advertised.listeners=PLAINTEXT://真實ip:9092

最終效果

最終打通效果圖最終打通效果圖

nifi消費192.168.2.15:9092nifi消費192.168.2.15:9092】kafka的配置

nifi給【192.168.2.15:9093】kafka打數據的配置nifi給【192.168.2.15:9093】kafka打數據的配置

nifi給【192.168.2.11:6667】kafka打數據的配置nifi給【192.168.2.11:6667】kafka打數據的配置

數據流

1、通過【192.168.2.15:9092】這個kafka的生產者產生消息
2、然後nifi消費這個kafka的消息,在分別向【192.168.2.11:6667】和【192.168.2.15:9093】這兩個kafka打,
3、通過console-consumer查看兩個kafka是不是接收到消息了。

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