kafka常见问题

1.什么事kafka
Kafka是分布式发布-订阅消息系统,它最初是由LinkedIn公司开发的,之后成为Apache项目的一部分,Kafka是一linux除文件命令个分布式,可划分zookeeper的,冗余备份的持久性的日志服务,它主要用于处理流式数据

2.为什么使用linux操作系统基础知识kafka
1、缓冲和削峰:
2、解耦和扩展性
3、linux是什么操作系统冗余
4、异步通信

3.Kafka中的ISR、AR又代表什么kafka应用场景?ISR的伸缩又指什么
ISR:In-Sync Replicas 副本同步队列
AR:Assigned Replicas 所有副本
ISR是由leader维护,follower从leader同步数据有一些延迟(包括延迟时间replica.lag.time.max.ms和延迟条数replica.lag.max.messages两个维度,数据结构 当前最新的版本0.10.x中只系统运维工资一般多少支持replica.lag.time.max.m系统/运维s这个维度),任意一个超过阈值都会把follower剔除出ISR, 存入OSR(Outof-Sync Replicas)列表,kafka怎么读新加入的follower也会先存放在OSR中。AR系统/运维=ISR+OSR。

4.kafka中的brokerzookeepersession 是干什么的
broker 是linux是什么操作系统消息linux操作系统基础知识的代理,Producers往Brokers里面的指定Topic中写消息,Consumers从Brokers里面拉取指定Topic的消息,然后进行业务处理,broker在中间起到一个代理保存消息的中转站。

5.kafka中数据科学与大数据技术的 zookeeper 起到什么作用,可以不用zookeeper么
zozookeeperwatcherokeeper 是一个分布式的协调组件,早期版本的kafka用zk做metzookeeper-weba信息存储,consumer的消费状态,group的管zookeeper集群理以及 offset的值。考虑到zk本身的一些因素以及数据漫游是什么意思整个架构较大概率存在单点问题,新版本中逐渐弱化了zookeeper的作用。新的consumer使用了kafka内部的group coordination协议,也减少了对zookeeper的依赖,
但是broker依然依赖于ZK,zookeeperzookeeper集群 在kafka中还用来选举controller 和 检测broker是否存活等等。系统运维工程师

6.kafka fol数据科学与大数据技术lower如何与leader同步数据
Kafka的复制机制既不是完全的同步复制,也不是单纯的异步复制。完全同步复linux制要求All Alive Followlinux重启命令er都复制数据科学与大数据技术完,这条消息才会被认为commit,这种复制方式极大的影响了吞吐率。而异步复制方式下,Folkafka和rabbitmq的区别lower异步的从Leader复制数据,数据只要被Leader写入logzookeeperdownload就被认为已经commit,这种情况下,如果leader挂掉,会丢失数据,kafka使用ISR的方式很好的均衡了确保数据不丢失以及吞吐率。Follower可以批量的从Leader复制数据,而且Leader充分利用磁盘顺序读以及send file(zero数据漫游是什么意思 copy)机制,这样极大的提高复制性能,内部批量写磁盘,大幅减少了Follower与Leader的消息量差

7.什么情况下一个 broker 会从 isr中踢出去
lealinux系统安装der会维护一个与其基本保持同步的Replica列表,该列表称为ISR(zookeeperdownloadin-sync Replica),每个Partitionzookeeper-web会有一个ISR,而且是由leader动态维护 ,如果一个follower比一个leader落后太多,或者超过一定时间未发起数据复制请求,则leader将其重IS数据透视表R中移除 。

8.kafka 为linux什么那么快
Cache Filesystem Cache PageCache缓存
顺序写 由于现代的操作系统提供了预读和写技术,磁盘的顺序写大多数据漫游是什么意思数情况下比随机写内存还要快。
Zero-copy 零拷技术减少拷贝次数
Batkafka启动命令ching of Messages 批量量处理。合并小的请求,然后以流的方式进行交互,直顶网络上限。
Pukafka原理ll 拉模式 使用拉模式进行消息的获取消费,与消费端处理能力相符。

9.kafka消费者如果优化打入的速度
增加线程
提高batch.size
增加更多的消费者实例
增加分区数
设置ack = -1 ,如果延迟增大,可增加num.replica.fezookeepersessiontcherzookeepercontrollers 来调接
跨数据中心的传输,增加socket缓冲区已经OS tcp缓冲区设置

10.kafka producer 打数据,ack 为 0, 1, -1 的时候代表啥, 设置 -1 的时候,什么情况下,leader 会认为一条消息 commit系统运维工作内容
1(默认)数据发送到Kafka后,经过leader成功接收消息的的确认,就算是发送成功了。在这种情况下,如果leader宕机了,则会丢失数据。
0 生产者将数据发送出去就不管了,不去等待任何返回。这种情况下linux除文件命令数据传输效率最高,但是数据可靠性确是最低的。
-1 producer需要等待ISR中的所有follower都确认接收到数据后才算一次发送完成,可靠性最高。当ISR中kafka不支持什么功能所有Replica都向Leader发送ACK时,leader才commizookeeper与java交互小结t,这时候producer才能认为一个请求中的消息都commit了。

11.kafka unclean 配置代表啥,会对 spark szookeepercontrollertreaming 消费有什么影响
unclean.leader.election.enable 为true的话,意味着kafka启动命令非ISR集合的broker 也可以参与选举,这样有可能就会丢数据,spark数据分析 streaming在消费过程中拿到的 end offset 会突然变小,导致 spark streaming job挂掉。如果unclean.leader.election.zookeeperenable参数设置为true,就有可能发生数据丢失和数据不一致的情况,Kafka的可靠性就会降低;而如果unclean.leazookeeper与java交互小结der.election.enable参数设置为false,Kafka的可用性就会降低。

12.如果leader crash时,ISR为空怎么办
kafka在Brokerlinux端提供了一个配置参数:unclean.leader.election,这个参数有两个值:
true(默认):允许不同步副本成为leader,由于不同步副本的消息较为滞后,此时系统运维工资一般多少成为llinux重启命令eader,可能会出现消息不一致的情linux常用命令况。
false:不允许不同步副本成为leader,此时如果发生ISR列表为空,会一直等待旧lea系统/运维der恢复,降低了可用性。
13.kafka的message格式是什么样的
一个Kafka的Message由一个固定长度的hea数据der和一个变长的消息体bodyzookeeper与hadoop组成
header部分由一个字节的magic(文件格式)和四个字节的CRC32(用于判断linux是什么操作系统body消息体是否正常)构系统运维工资一般多少成。
当magic的值为1的时候,会在magickafka原理和crc32之间多一个字节的数据:attributes(保存一些相关属性,
比如是否压缩、压缩格式等等);如果magic的值为0,那么不存在attributzookeeper与hadoopes属性
body是由N个字节构成的一个消息体,包含了具数据库zookeeper的key/value消息
14.kaf数据漫游是什么意思ka中consumer group 是什么概念
同样是逻辑上的概念,是Kafka实现单播和广播两种消息模型的手段。同一个topic的数据,会广播给不同的group;同一个gr数据分析oup中的worker,只有一个worker能拿到这个数据。换句话说,对于同一个topic,每个group都可以拿到同样的所有数据,但是数据进入group后只能被kafka原理其中的一个workerzookeeper与hadoop消费。group内的worker可以使用多线程或多进程来数据漫游是什么意思实现,也可以将进程分散在多台机器上,worker的数量通常不超过partition的数量,且二者最好保持整数倍关系,因为Kafka在设计时假定了kafka应用场景一个partition只能数据漫游被一个wo数据废土rker消费(同一group内)。

15.Kafka中的消息是否会丢失和重复消费?
要确定Kafka的消息是否丢失或重复数据透视表,从两个方面分析入手:消息发kafka原理送和消息消费。

1、消息发送

     Kafka消息发送有两种方式:同步(sync)和异步(async),默认是同步方式,可通过producer.type属性进行配置。Kafka通过配置request.required.acks属性来确认消息的生产:

0---表示不进行消息接收是否成功的确认;
1-zookeeper与hadoop--表示当Leader接收成功时确认;
-1---表示Leader和Follower都接收成功zookeeper-web时确认;
综上所述,有6种消息生产的情况,下面分情况来分析数据分析师消息丢失的场景:

(1)acks=0,不和kafka消费的三种模式Kafka集群进行消息接收确认,则当网络异常、缓冲区满了等情况时,消息可能丢失;

(2)acks=1、同步模式下,只有Leader确认接收成功后但挂掉了,副本没有同步,数据可能丢失;

2、消息消费
Kafka消息消linux操作系统基础知识费有两个consumer接口,Low-level API和High-level API:
Low-level API:消费者自己维护offset等值,可以实现对Kafka的完全控制;
High-level API:封装了对parition和offkafkasetlinux命令的管理,使用简单;

如果使用高级接口High-level API,可能存在一个问题就是当消息消费者从集群中把消息取出来、并提交了新的消息offset值后,还没来得及消费就挂掉了,那么下次再消费时之前没消费成功的消息就“诡异”的消失了;

解决办法:
针对消息丢失:同步模式下,确认机制设置为-1,即让消息写入Leadezookeeper集群r和Foll数据分析师ower之后再确认消息发送成功;异步模式下,为防止缓冲区满,可以在配置文件设置不限制阻塞超时时间,当缓冲区满时让生产者一直处于阻塞状态;

    针对消息重复:将消息的唯一标识保存到外部介质中,每次消费时判断是否处理过即可。

16.为什么kafka不支持读写分离
数据一致性问题
数据延迟问题
17.kafkkafka原理a中是怎kafka消费的三种模式么样体现消息顺序性的。
kafka每个partizookeepersessiontion中的消息在写入时都是有序的,消费时系统/运维,每个partition只能被kafka是干什么的每一个group中的一个消费者消费,保证了消费时也是有序的。
整个topic不保证有序。如果为了保证topic整个有序,那系统运维工作内容么将partition调整为1.