1. “消費組中的消費者個數(shù)如果超過topic的分區(qū),那么就會有消費者消費不到數(shù)據(jù)”這句話是否正確?如果正確,那么有沒有什么hack的手段?
答案:正確,可以通過自定義分區(qū)分配策略,將消費者指定到某個分區(qū)。
2. 有哪些情形會造成重復消費或消息丟失?
答案:
2.1當poll部分消息集后,立即提交offset,在這部分消息集處理,可能會發(fā)生異常,這就導致部分消息丟失。
2.2位移提交的動作是在消費完所有拉取到的消息之后才執(zhí)行的,中間可能發(fā)生異常,恢復后重新重新拉取,可能會導致重復消費
3. KafkaConsumer是非線程安全的,那么怎么樣實現(xiàn)多線程消費?
答案:
3.1在每個線程中新建一個KafkaConsumer
3.2單線程創(chuàng)建KafkaConsumer,多個處理線程處理消息(難點在于是否要考慮消息順序性,offset的提交方式)
4. 當你使用kafka-topics.sh創(chuàng)建(刪除)了一個topic。
答案:
創(chuàng)建:
1)會在zookeeper中的/brokers/topics節(jié)點下創(chuàng)建一個新的topic節(jié)點,如:/brokers/topics/first
2)觸發(fā)Controller的監(jiān)聽程序
3)kafka Controller 負責topic的創(chuàng)建工作,并更新metadata cache
刪除:
調(diào)用腳本刪除topic會在zk上將topic設置待刪除標志,kafka后臺有定時的線程會掃描所有需要刪除的topic進行刪除
5. topic的分區(qū)數(shù),增減問題。
答案:分區(qū)只能增加,不能減少(若是減少分區(qū)需要考慮的問題太多,事物性問題,順序性問題,時間戳問題,但是收益太小),副本可以減少。
更多關于大數(shù)據(jù)培訓的問題,歡迎咨詢千鋒教育在線名師,如果想要了解我們的師資、課程、項目實操的話可以點擊咨詢課程顧問,獲取試聽資格來試聽我們的課程,在線零距離接觸千鋒教育大咖名師,讓你輕松從入門到精通。