关于后端:锁屏面试题百日百刷Spark篇二十一

39次阅读

共计 1369 个字符,预计需要花费 4 分钟才能阅读完成。

锁屏面试题百日百刷,每个工作日保持更新面试题。锁屏面试题 app、小程序现已上线,官网地址:https://www.demosoftware.cn。已收录了每日更新的面试题的所有内容,还蕴含特色的解锁屏幕温习面试题、每日编程题目邮件推送等性能。让你在面试中后人一步! 接下来的是今日的面试题:

1.Spark RDD 和 MapReduce2 的区别

1)mr2 只有 2 个阶段,数据须要大量拜访磁盘,数据起源绝对繁多 ,spark RDD , 能够无数个阶段进行迭代计算,数据起源十分丰盛,数据落地介质也十分丰盛 spark 计算基于内存;

2)MapReduce2 须要频繁操作磁盘 IO 须要 大家明确的是如果是 SparkRDD 的话,你要晓得每一种数据起源对应的是什么,RDD 从数据源加载数据, 将数据放到不同的 partition 针对这些 partition 中的数据进行迭代式计算计算实现之后,落地到不同的介质当中。

2.spark 和 Mapreduces 谁快?为什么快呢?快在哪里呢?

Spark 更放慢的次要起因有几点:

1)基于内存计算,缩小低效的磁盘交互;

2)高效的调度算法,基于 DAG;

3)容错机制 Lingage,次要是 DAG 和 Lianage,及时 spark 不应用内存技术,也大大快于 mapreduce。

3.Spark sql 又为什么比 hive 快呢?

计算引擎不一样,一个是 spark 计算模型,一个是 mapreudce 计算模型。

另外 spark sql 中有 RBO CBO 的优化。

4.RDD 的数据结构是怎么样的?五大属性

RDD 对象,蕴含如下 5 个外围属性。

1)一个分区列表,每个分区里是 RDD 的局部数据(或称数据块)。

2)一个依赖列表,存储依赖的其余 RDD。

3)一个名为 compute 的计算函数,用于计算 RDD 各分区的值。

4)分区器(可选),用于键 / 值类型的 RDD,比方某个 RDD 是按散列来分区。

5)计算各分区时优先的地位列表(可选),比方从 HDFS 上的文件生成 RDD 时,RDD 分区的地位优先选择数据所在的节点,这样能够防止数据挪动带来的开销。

5.RDD 算子里操作一个内部 map 比方往里面 put 数据,而后算子外再遍历 map,会有什么问题吗?

频繁创立额定对象,容易 oom。

6. 画图,讲讲 Spark shuffle 的过程。

SortShuffleManager 的运行机制次要分成两种,一种是一般运行机制,另一种是 bypass 运行机制。当 shuffle read task 的数量小于等于 spark.shuffle.sort.bypassMergeThreshold 参数的值时 (默认为 200),就会启用 bypass 机制。

 

Sort shuffle 的 bypass 机制

bypass 运行机制的触发条件如下:

1)shuffle map task 数量小于 spark.shuffle.sort.bypassMergeThreshold 参数的值。

2) 不是聚合类的 shuffle 算子 (比方 reduceByKey)。

此时 task 会为每个 reduce 端的 task 都创立一个长期磁盘文件,并将数据按 key 进行 hash 而后依据 key 的 hash 值,将 key 写入对应的磁盘文件之中。当然,写入磁盘文件时也是先写入内存缓冲,缓冲写满之后再溢写到磁盘文件的。最初,同样会将所有长期磁盘文件都合并成一个磁盘文件,并创立一个独自的索引文件。

正文完
 0