大數據經典面試題答疑---經常問的原理問題總結(系列文章,持續更新),幫你解決大數據開發中的困擾。
1. kafka
2. ProducerRecord
3. 原理
4.消費者
5. 文件分布
答案專區:
1.kafka
1.1. AR,ISR,OSR
AR(所有副本)=ISR(在一定程度上與leader副本保持同步,包括leader副本)+OSR(與leader滯后太多的副本,不包括leader副本)
在正常情況下,AR應該是和ISR一樣的,但是當某個Follower副本落后太多或者某個Follower副本節點掛掉了,那么它會被移出ISR放入OSR中,kafka的選舉也比較簡單,就是把ISR中的第一個副本選舉成新的Leader節點。比如現在AR=[1,2,3],1掛掉了,那么ISR=[2,3],這時會選舉2為新的Leader。
1.2. ISR 與 HW 和 LEO 關系
LEO的最小值是該分區的HW,當所有副本都復制成功后,LEO與HW相等
1.3. 重要參數
2.ProducerRecord
2.1. ProducerRecord
如果 key 不為 null,那么默認的分區器會對 key 進?哈希(采? MurmurHash2 算法,具備 ?運算性能及低碰撞率),最終根據得到的哈希值來計算分區號,擁有相同 key 的消息會被寫?同?個分區。如果 key 為 null,那么消息將會以輪詢的?式發往主題內的各個可?分區。
***\*注意:\****如果 key 不為 null,那么計算得到的分區號會是所有分區中的任意?個;如果 key 為 null 并且有可?分區時,那么計算得到的分區號僅為可?分區中的任意?個,注意兩者之間的差 別。
2.2. 消息發送到broker
有可能需要經過攔截器(Interceptor)、序列化器(Serializer)和分區器(Partitioner)的?系列作?之后才能被真正地發往 broker。
生產者攔截器,實現ProducerInterceptor接口:
onSend() :在消息發送之前執行
onAcknowledgement():在消息被應答之前或消息發送失敗,優于callback執行。
攔截鏈:按配置先后執行
3.原理
4.消費者
可以訂閱多主題,可以訂閱指定分區,可以暫停和重新啟用某個分區消費,指定offset消費。
在舊消費者客戶端中,消費位移是存儲在 ZooKeeper 中的。?在新消費者客戶端中,消費位移存儲在 Kafka 內部的主題__consumer_offsets 中。
消費者攔截器,以提交offset為分界點,有兩個方法可以執行.
5.文件分布
分段好處(segment):數據查找快,好刪除,磁盤不是無限大
.timeindex:數據刪除使用
數據刪除方式:根據時間;消息大小;消息偏移量
更多關于大數據培訓的問題,歡迎咨詢千鋒教育在線名師。千鋒教育多年辦學,課程大綱緊跟企業需求,更科學更嚴謹,每年培養泛IT人才近2萬人。不論你是零基礎還是想提升,都可以找到適合的班型,千鋒教育隨時歡迎你來試聽。