本栏目大数据开发岗高频面试题主要出自
大数据技术
专栏的各个小专栏,由于个别笔记上传太早,排版杂乱,后面会进行原文美化、增加。
文章目录- 面试题 01、Spark使用parquet文件存储格式能带来哪些好处?
- 面试题02、介绍parition和block有什么关联关系?
- 面试题03、Spark应用程序的执行过程是什么?
- 面试题04、不需要排序的hash shuffle是否一定比需要排序的sort shuffle速度快?
- 面试题05、Sort-based shuffle的缺陷?
- 总结
停不要往下滑了,
默默想5min,
看看这5道面试题你都会吗?
代码语言:javascript复制面试题 01、Spark使用parquet文件存储格式能带来哪些好处?
面试题02、介绍parition和block有什么关联关系?
面试题 03、Spark应用程序的执行过程是什么?
面试题04、不需要排序的hash shuffle是否一定比需要排序的sort shuffle速度快?
面试题05、Sort-based shuffle的缺陷?
以下答案仅供参考:
面试题 01、Spark使用parquet文件存储格式能带来哪些好处?
1)如果说HDFS是大数据时代分布式文件系统首选标准,那么parquet则是整个大数据时代文件存储格式实时
首选标准。
2)速度
更快:从使用spark sql操作普通文件CSV和parquet文件速度对比上看,绝大多数情况会比使用csv等普通文件速度提升10倍左右,在一些普通文件系统无法在spark上成功运行的情况下,使用parquet很多时候可以成功运行。
3)parquet的压缩
技术非常稳定出色,在spark sql中对压缩技术的处理可能无法正常的完成工作(例如会导致lost task,lost executor)但是此时如果使用parquet就可以正常的完成。
4)极大的减少磁盘I/o
,通常情况下能够减少75%的存储空间,由此可以极大的减少spark sql处理数据的时候的数据输入内容,尤其是在spark1.6x中有个下推过滤器在一些情况下可以极大的减少磁盘的IO和内存的占用,(下推过滤器)。
5)spark 1.6x parquet方式极大的提升了扫描的吞吐量
,极大提高了数据的查找速度spark1.6和spark1.5x相比而言,提升了大约1倍的速度,在spark1.6X中,操作parquet时候cpu也进行了极大的优化,有效的降低了cpu消耗。
6)采用parquet可以极大的优化spark的调度和执行
。我们测试spark如果用parquet可以有效的减少stage的执行消耗,同时可以优化执行路径。
面试题02、介绍parition和block有什么关联关系?
1)hdfs中的block是分布式存储
的最小单元,等分,可设置冗余,这样设计有一部分磁盘空间的浪费,但是整齐的block大小,便于快速找到、读取对应的内容;
2)Spark中的partion是弹性分布式数据集RDD
的最小单元,RDD是由分布在各个节点上的partion组成的。partion是指的spark在计算过程中,生成的数据在计算空间内最小单元,同一份数据(RDD)的partion大小不一,数量不定,是根据application里的算子和最初读入的数据分块数量决定;
3)block位于存储空间、partion位于计算空间,block的大小是固定的、partion大小是不固定的,是从2个不同的角度去看数据。
面试题03、Spark应用程序的执行过程是什么?
1)构建Spark Application的运行环境(启动SparkContext),SparkContext向资源管理器(可以是Standalone、Mesos或YARN)注册并申请运行Executor资源; 2)资源管理器分配Executor资源并启动StandaloneExecutorBackend,Executor运行情况将随着心跳发送到资源管理器上; 3)SparkContext构建成DAG图,将DAG图分解成Stage,并把Taskset发送给Task Scheduler。Executor向SparkContext申请Task,Task Scheduler将Task发放给Executor运行同时SparkContext将应用程序代码发放给Executor; 4)Task在Executor上运行,运行完毕释放所有资源。
面试题04、不需要排序的hash shuffle是否一定比需要排序的sort shuffle速度快?
不一定,当数据规模小,Hash shuffle快于Sorted Shuffle数据规模大的时候;当数据量大,sorted Shuffle会比Hash shuffle快很多,因为数量大的有很多小文件,不均匀,甚至出现数据倾斜,消耗内存大,1.x之前spark使用hash,适合处理中小规模,1.x之后,增加了Sorted shuffle,Spark更能胜任大规模处理了。
面试题05、Sort-based shuffle的缺陷?
1)如果mapper中task的数量过大,依旧会产生很多小文件,此时在shuffle传递数据的过程中reducer段,reduce会需要同时大量的记录进行反序列化,导致大量的内存消耗和GC的巨大负担,造成系统缓慢甚至崩溃。 2)如果需要在分片内也进行排序,此时需要进行mapper段和reducer段的两次排序。
总结
今天我们复习了面试中常考的Spark相关的五个问题,你做到心中有数了么?