本栏目大数据开发岗高频面试题主要出自
大数据技术
专栏的各个小专栏,由于个别笔记上传太早,排版杂乱,后面会进行原文美化、增加。
文章目录- 面试题 01、CAPCACITY调度模式的优点和缺点?
- 面试题02、常见的数压缩方式,你们生产集群采用了什么压缩方式,提升了多少效率?
- 面试题03、使用scala代码实现WordCount?
- 面试题04、Spark RDD 和 MapReduce2的区别?
- 面试题05、spark和Mapreduce快?为什么快呢?快在哪里呢?
- 总结
停不要往下滑了,
默默想5min,
看看这5道面试题你都会吗?
代码语言:javascript复制面试题 01、CAPCACITY调度模式的优点和缺点?
面试题02、常见的数压缩方式,你们生产集群采用了什么压缩方式,提升了多少效率?
面试题 03、使用scala代码实现WordCount?
面试题04、Spark RDD 和 MapReduce2的区别?
面试题05、spark和Mapreduce快?为什么快呢?快在哪里呢?
以下答案仅供参考:
面试题 01、CAPCACITY调度模式的优点和缺点?
1)原理: 计算能力调度器支持多个队列,每个队列可配置一定的资源量,每个队列采用 FIFO 调度策略,为了防止同一个用户的作业独占队列中的资源,该调度器会对 同一用户提交的作业所占资源量进行限定。调度时,首先按以下策略选择一个合适队列:计算每个队列中正在运行的任务数与其应该分得的计算资源之间的 比值(即比较空闲的队列),选择一个该比值最小的队列;然后按以下策略选择该队列中一个作业:按照作业优先级和提交时间顺序选择, 同时考虑用户资源量限制和内存限制 2)优点: (1)计算能力保证。支持多个队列,某个作业可被提交到某一个队列中。每个队列会配置一定比例的计算资源,且所有提交到队列中的作业 共享该队列中的资源; (2)灵活性。空闲资源会被分配给那些未达到资源使用上限的队列,当某个未达到资源的队列需要资源时,一旦出现空闲资源资源,便会分配给他们; (3)支持优先级。队列支持作业优先级调度(默认是FIFO); (4)多重租赁。综合考虑多种约束防止单个作业、用户或者队列独占队列或者集群中的资源; (5)基于资源的调度。支持资源密集型作业,允许作业使用的资源量高于默认值,进而可容纳不同资源需求的作业。不过,当前仅支持内存资源的调度。
面试题02、常见的数压缩方式,你们生产集群采用了什么压缩方式,提升了多少效率?
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)任务执行消耗时间节约了多少,可以举个实际例子展开描述。
面试题03、使用scala代码实现WordCount?
代码语言:javascript复制val conf = new SparkConf()
val sc = new SparkContext(conf)
val line = sc.textFile("xxxx.txt")
line.flatMap(.split(" ")).map((,1)).reduceByKey( ).
collect().foreach(println)
sc.stop()
面试题04、Spark RDD 和 MapReduce2的区别?
1)mr2只有2个阶段,数据需要大量访问磁盘,数据来源相对单一 ,spark RDD ,可以无数个阶段进行迭代计算,数据来源非常丰富,数据落地介质也 非常丰富spark计算基于内存; 2)MapReduce2需要频繁操作磁盘IO,需要大家明确的是如果是SparkRDD的话,你要知道每一种数据来源对应的是什么,RDD从数据源加载数据, 将数据放到不同的partition针对这些partition中的数据进行迭代式计算计算完成之后,落地到不同的介质当中。
面试题05、spark和Mapreduce快?为什么快呢?快在哪里呢?
Spark更加快的主要原因有几点: 1)基于内存计算,减少低效的磁盘交互; 2)高效的调度算法,基于DAG; 3)容错机制Lingage,主要是DAG和Lianage,即使spark不使用内存技术,也大大快于mapreduce。
总结
今天我们复习了面试中常考的Spark相关的五个问题,你做到心中有数了么?