1. kafka分区数如何设置?
默认情况下
1 指定分区,按你指定的分区
2 未指定分区,但是指定了key,依据key的hashCode计算分区
3 未指定分区,且没有指定key,依据轮询算法计算分区
2. kafka中消息传输一致中的最多一次、最少一次、恰好一次,是如何实现的?
恰好一次:acks=-1 ,幂等机制
最多一次:acks=0
最少一次:acks=-1 or acks=1
3. Spark Steaming拉取数据,如何实现恰好一次?
4. Spark为什么比Hadoop快?(不止是基于内存,需扩充)
1 hadoop每次shuffle操作后,数据必须写到磁盘. spark则不然,可以保存在内存中.
2 hadoop每次都要走MR流程,Spark则可以将shuffle结果缓存到内存中
3spark task启动时间快
1.消除了冗余的HDFS读写 Hadoop每次shuffle操作后,必须写到磁盘,而Spark在shuffle后不一定落盘,可以cache到内存中,以便迭代时使用。如果操作复杂,很多的shufle操作,那么Hadoop的读写IO时间会大大增加。
2.消除了冗余的MapReduce阶段 Hadoop的shuffle操作一定连着完整的MapReduce操作,冗余繁琐。而Spark基于RDD提供了丰富的算子操作,且reduce操作产生shuffle数据,可以缓存在内存中。
3.JVM的优化 Spark Task的启动时间快。Spark采用fork线程的方式,Spark每次MapReduce操作是基于线程池的,只在启动时创建。而Hadoop采用创建新的进程的方式,启动一个Task便会启动一次JVM。
5. kafka为什么会发生数据丢失?
ack=0
生产者发送消息到leader后,就继续发送其他的消息,不需要等待leader的ack
缺点是数据可能丢失
ack=1
生产者发送消息到leader后,leader会将消息落地到磁盘,然后就向生产者发送ack
缺点是
数据可能丢失(leader落地了,并ack,但是follwer还未同步,数据不全)
6. Kafka数据丢失了如何解决?
为了保证数据不丢失,可以设置acks=-1.
7. Kafka与zookeeper选举机制间的区别?
8. Kafka的组成?
Producer:生产消息
Consumer:消费信息
Broker: 缓存消息
Zookeeper: 选举controller
9. kafka为什么快?
- 写文件快,顺序存储
- 读文件快,零拷贝
10. 监控kafka的文件?
常用的kafka监控工具有 KafkaOffsetMonitor 、Kafka Manager、Capillary、Kafka Eagle,经过测试,最后决定使用Kafka Manager
11. kafka的数据积压如何解决?
1 增加消费者数量,同时提高topic的分区数
2 提高每次poll的数据量,默认500,可以调大
12. Spark Streaming读取kafka数据的方式?
13. kafka的ISR列表
ISR表示存活的副本,存活的意思是
- 和zookeeper保持连接
- 副本的最后一条消息的offset与leader副本的最后一条消息的offset插件不超过某个指定值