大数据经典面试题答疑---经常问的原理问题总结(系列文章,持续更新),帮你解决大数据开发中的困扰。
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万人。不论你是零基础还是想提升,都可以找到适合的班型,千锋教育随时欢迎你来试听。