kafka基礎使用方法(java)

來源:互聯網
上載者:User
關鍵字 雲計算 kafka使用方法 kafka教程 kafka基礎

kafka基礎使用方法(java)。

操作步驟:

創建Topic

$ cd /opt/cloudera/parcels/KAFKA-2.1.1-1.2.1.1.p0.18 $ bin/kafka-topics --create --zookeeper localhost:2181 -- replication-factor 1 --partitions 1 --topic test


分析:雖然kafka對外開放的api中沒有建立topic的方法,但是實驗證明,當producer發送一個新topic消息到broker時會自動建立一個對應的topic。
不過自動建立的topic使用的是預設配置,若有需要還需手動修改配置。

發送資料到kafka

$ bin/kafka-console-producer --broker-list xxx.xxx.xxx.xxx:9092 --topic test


(紅框內的消息需要手動輸入)
分析:kafka預設通過9092埠與producer和consumer進行資料交互。 正式使用時該步驟由producer端的腳本替代。

建立Consumer消費資料

$ bin/kafka-console-consumer --zookeeper xxx.xxx.xxx.xxx:2181--bootstrap-server xxx.xxx.xxx.xxx:9092 --topic test --from-beginning


分析:成功讀出test中的資料。 正式使用時該步驟由consumer端的腳本替代。

問題匯總:

別用localhost!!!

問題再現:最開始按照官方文檔的指引,使用一下命令來建立一個測試用的producer

$ bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test


結果出現上圖中的問題:
org.apache.kafka.common.errors.TimeoutException:
Failed to update metadata after 60000 ms.< br> 對於該問題作出一下猜想:認為問題出在zookeeper對於某ip的許可權限制上面,換句話說官方文檔中的demo應該是在單機環境中的,此時zookeeper與kafka在同一機器上, zookeeper對該機器localhost有許可權更新metadata,而在使用多節點集群時,zookeeper為了防止傳輸出現偏差,禁止了localhost的相應許可權。
要驗證以上猜想,需要在單機環境下進行測試,沒時間做。 再說吧。 ╮(╯_╰)╭
解決方法:改用特定ip即可,就這麼簡單,但是問題找了很久,一點辦法都木有。
總結:別用localhost!! 有必要熟悉一下zookeeper的原理。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.