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