锁屏面试题百日百刷-Spark篇(二十一)

文章对比了SparkRDD和MapReduce2在计算阶段、数据交互和速度上的差异,强调Spark的内存计算和高效调度。此外,讨论了SparkSQL优于Hive的原因在于计算引擎和查询优化。还介绍了RDD的数据结构和潜在问题,以及Sparkshuffle过程中的SortShuffleManager及其bypass运行机制。
摘要由CSDN通过智能技术生成

 锁屏面试题百日百刷,每个工作日坚持更新面试题。锁屏面试题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写入对应的磁盘文件之中。当然,写入磁盘文件时也是先写入内存缓冲,缓冲写满之后再溢写到磁盘文件的。最后,同样会将所有临时磁盘文件都合并成一个磁盘文件,并创建一个单独的索引文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值