2018优就业人保合作
400-650-7353
首页 > IT就业指南 > 面试题 > 【大数据面试题】kafka的数据问题

【大数据面试题】kafka的数据问题

2018-07-11 17:39:08 来源:互联网 手机端入口

在电脑旁奋斗了无数个日夜,代码敲了无数遍,项目整改了无数遍,只为了得到一份自己满意的高薪资高待遇的Offer。但这个收获不仅仅需要你学到娴熟的大数据技术,还需要在面试之前精心准备,了解自己要应聘的企业发展状况、 自己应聘岗位的技术要求等等,除此之外,多看一些大数据面试题也是很有必要的,给自己涨涨经验。

kafka的数据存在内存还是磁盘

Kafka最核心的思想是使用磁盘,而不是使用内存,可能所有人都会认为,内存的速度一定比磁盘快,我也不例外。在看了Kafka的设计思想,查阅了相应资料再加上自己的测试后,发现磁盘的顺序读写速度和内存持平。

而且Linux对于磁盘的读写优化也比较多,包括read-ahead和write-behind,磁盘缓存等。如果在内存做这些操作的时候,一个是JAVA对象的内存开销很大,另一个是随着堆内存数据的增多,JAVA的GC时间会变得很长,使用磁盘操作有以下几个好处:

【大数据面试题】kafka的数据问题

磁盘缓存由Linux系统维护,减少了程序员的不少工作。

磁盘顺序读写速度超过内存随机读写。

JVM的GC效率低,内存占用大。使用磁盘可以避免这一问题。

系统冷启动后,磁盘缓存依然可用。

怎么解决kafka的数据丢失

producer端:

宏观上看保证数据的可靠安全性,肯定是依据分区数做好数据备份,设立副本数。

broker端:

topic设置多分区,分区自适应所在机器,为了让各分区均匀分布在所在的broker中,分区数要大于broker数。

分区是kafka进行并行读写的单位,是提升kafka速度的关键。

Consumer端

consumer端丢失消息的情形比较简单:如果在消息处理完成前就提交了offset,那么就有可能造成数据的丢失。由于Kafka consumer默认是自动提交位移的,所以在后台提交位移前一定要保证消息被正常处理了,因此不建议采用很重的处理逻辑,如果处理耗时很长,则建议把逻辑放到另一个线程中去做。为了避免数据丢失,现给出两点建议:

enable.auto.commit=false 关闭自动提交位移

在消息被完整处理之后再手动提交位移

相关推荐:

【大数据培训教程】把握时代风口,挑战大数据高薪

【大数据培训班】大数据课程更新迭代,师资匠心研造

北京大数据培训怎么样?北京大数据培训多少钱?

免责声明:本文来源于网络,由网友提供或网络搜集,仅供个人交流学习参考使用,不涉及商业盈利目的。如有版权问题,请联系本站管理员予以更改或删除。谢谢合作!

关键词: 大数据面试题

相关推荐

 
 
咨询中心
优就业微信扫一扫
微信扫一扫

400-650-7353

加入官方微博