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