大数据开发岗面试复习30天冲刺 - 日积月累,每日五题Day15——Spark2

Posted 大数据Manor

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大数据开发岗面试复习30天冲刺 - 日积月累,每日五题Day15——Spark2相关的知识,希望对你有一定的参考价值。

前言

大家好,我是程序员manor。作为一名大数据专业学生、爱好者,深知面试重要性,很多学生已经进入暑假模式,暑假也不能懈怠,正值金九银十的秋招
接下来我准备用30天时间,基于大数据开发岗面试中的高频面试题,以每日5题的形式,带你过一遍常见面试题及恰如其分的解答。

相信只要一路走来,日积月累,我们终会在最高处见。
以古人的话共勉:道阻且长,行则将至;行而不辍,未来可期!

本栏目大数据开发岗高频面试题主要出自大数据技术专栏的各个小专栏,由于个别笔记上传太早,排版杂乱,后面会进行原文美化、增加。


停🤚
不要往下滑了,
默默想5min,
看看这5道面试题你都会吗?

面试题 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段的两次排序。

总结

今天我们复习了面试中常考的Hbase相关的五个问题,你做到心中有数了么?
其实做这个专栏我也有私心,就是希望借助每天写一篇面试题,督促自己学习,以免在面试期间尴尬!平时不流汗,面试多流泪!
对了,如果你的朋友也在准备面试,请将这个系列扔给他,
好了,今天就到这里,学废了的同学,记得在评论区留言:打卡。给同学们以激励。

以上是关于大数据开发岗面试复习30天冲刺 - 日积月累,每日五题Day15——Spark2的主要内容,如果未能解决你的问题,请参考以下文章

大数据开发岗面试复习30天冲刺 - 日积月累,每日五题Day23——Spark10

大数据开发岗面试复习30天冲刺 - 日积月累,每日五题Day24——Spark11

大数据开发岗面试复习30天冲刺 - 日积月累,每日五题Day25——Spark12

大数据开发岗面试复习30天冲刺 - 日积月累,每日五题Day25——Spark12

大数据开发岗面试复习30天冲刺 - 日积月累,每日五题Day24——Spark11

大数据开发岗面试复习30天冲刺 - 日积月累,每日五题Day23——Spark10