常见面试题①
-
1、kafka中zookeeper中只存储Broker id和消费者offsets偏移量,
但不存在生产者信息
-
2、kafka压力测试一般都是IO先出现瓶颈
-
3、kafka消息堆压,消费者无法处理怎么办
- ① 通过增加Topic和消费者数量来解决
- ② 通过增大每次的拉去数据量,生成速度远远大于拉取速度也会导致数据的堆压
-
4、kafka过期数据的清理方式:
- ① 策略一:delete删除策略
- ② 策略二:compact压缩策略(配置)
-
5、kafka中的数据是有序的吗?
- 单分区内有序
- 多分区,分区与分区之间无序
-
6、kafka多种选举机制:
- 1、broker选举:kafka可以是多个或一个broker,故从选取一个broker
控制器
,选举是通过zookeeper内创建一个临时节点,之后便有次Broker管理分区和副本等状态,包括副本leader的选举,更新ISR集合的元数据信息 - 2、分区leader选举:选举是由控制器来实行,(创建分区/分区上线)先查找第一个存活的副本,并且这个副本再ISR队列中。
- 3、GruopCoordinator选举:小组协调员的选举是为了使得消费组均匀分配,通过找到分区leader副本所在的节点,此节点则作为小组协调员节点,消费组分区分配方案或消费组唯一信息都将汇报到此节点
- 4、消费组Leader的选举:通过
消费者组协调员
进行选举,在小组内进行选组,很简单直接谁现进组那么谁就是leader
- 1、broker选举:kafka可以是多个或一个broker,故从选取一个broker
-
7、HBase与Hive
- 首先在应用场景方面:Hive与HBase是一个协作的角色,比如海量数据的随机查询,先由Hive对数据进行ETL后交给HBase进行数据查询
- 功能方面:Hive是一个基于MapReduce的将非结构化数据转换成二维表的提供简单的HQL计算的架构是Hadoop的数据仓库。HBase则是一个列式存储的数据库主要适用于海量数据的随机查询
- 8、Spark的groupByKey 和reduceByKey之间的区别?
(1)ReducByKey再Map端时会对数据进行combine,再Map端先进行一次聚合会使得reduce端压力大大降低,如图:
(2)当采用groupByKey时,由于它不接收函数,spark只能先将所有的键值对(key-value pair)都移动,这样的后果是集群节点之间的开销很大,导致传输延时。整个过程如下:
因此,在对大数据进行复杂计算时,reduceByKey优于groupByKey。比如实际应用中,比如用groupByKey对用数据进行计算(数据量30亿条数据),可能需要1个小时,甚至内存溢出,运行失败,但是换成reduceByKey只需要十几分钟。
另外,如果仅仅是group处理,那么以下函数应该优先于 groupByKey :
(1)、combineByKey 组合数据,但是组合之后的数据类型与输入时值的类型不一样。
(2)、foldByKey合并每一个 key 的所有值,在级联函数和“零值”中使用。
wordCountsWithReduce和wordCountsWithGroup与上一样
- 9、为什么惰性价加载
- 即为了划分stage,stage内部都是窄依赖,提高并行度