锁屏面试题百日百刷,每个工作日坚持更新面试题。锁屏面试题app、小程序现已上线,官网地址:https://www.demosoftware.cn。已收录了每日更新的面试题的所有内容,还包含特色的解锁屏幕复习面试题、每日编程题目邮件推送等功能。让你在面试中先人一步!接下来的是今日的面试题:
1.简要描述Spark写数据的流程?
1)RDD调用compute方法,进行指定分区的写入
2)CacheManager中调用BlockManager判断数据是否已经写入,如果未写,则写入3)BlockManager中数据与其他节点同步
4)BlockManager根据存储级别写入指定的存储层
5)BlockManager向主节点汇报存储状态中
2.介绍一下你对Unified Memory Management内存管理模型的理解?
Spark中的内存使用分为两部分:执行(execution)与存储(storage)。执行内存主要用于shuffles、joins、sorts和aggregations,存储内存则用于缓存或者跨节点的内部数据传输。
3.如何理解Spark的动态内存占用机制?
4.列举你了解的序列化方法,并谈谈序列化有什么好处?
1)序列化:将对象转换为字节流,本质也可以理解为将链表的非连续空间转为连续空间存储的数组,可以将数据进行流式传输或者块存储,反序列化就是将字节流转为对象。kyro,Java的serialize等
2)spark中的序列化常见于
· 进程间通讯:不同节点的数据传输
· 数据持久化到磁盘
在spark中扮演非常重要的角色,序列化和反序列化的程度会影响到数据传输速度,甚至影响集群的传输效率,因此,高效的序列化方法有2点好处:a.提升数据传输速度,b.提升数据读写IO效率。
5.常见的数压缩方式,你们生产集群采用了什么压缩方式,提升了多少效率?
1)数据压缩,大片连续区域进行数据存储并且存储区域中数据重复性高的状况下,可以使用适当的压缩算法。
数组,对象序列化后都可以使用压缩,数更紧凑,减少空间开销。常见的压缩方式有snappy,LZO,gz等
2)Hadoop生产环境常用的是snappy压缩方式(使用压缩,实际上是CPU换IO吞吐量和磁盘空间,所以如果CPU利用率不高,不忙的情况下,可以大大提升集群处理效率)。snappy压缩比一般20%~30%之间,并且压缩和解压缩效率也非常高(参考数据如下):
(1)GZIP的压缩率最高,但是其实CPU密集型的,对CPU的消耗比其他算法要多,压缩和解压速度也慢;
(2)LZO的压缩率居中,比GZIP要低一些,但是压缩和解压速度明显要比GZIP快很多,解压速度快的更多;
(3)Zippy/Snappy的压缩率最低,而压缩和解压速度要稍微比LZO要快一些。
提升了多少效率可以从2方面回答,1)数据存储节约多少存储,2)任务执行消耗时间节约了多少,可以举个实际例子展开描述。