1 问题分析
本题主要是想考察面试者对基础知识的掌握程度。
2 核心答案讲解
RDD是 弹式分布数据集,是Spark的基本数据结构,它是一个的对象集合,每个数据集被划分为,其可以在集群的不同节点上计算。
特性:
(1)RDD是由一系列的partition组成的
(2)RDD之间具有依赖关系
(3)RDD作用在partition上
(4)Partition作用在具有(k,v)格式的数据集
(5)Parition对外提供最佳计算位置,利于数据本地化的处理
3 问题扩展
(1)RDD实际上不存储数据(partition其实也不存储数据)
(2)什么是K,V格式的RDD?
如果RDD里面存储的数据都是二元组对象,那么这个RDD我们就叫做K,V格式的RDD。
(3)哪里体现RDD的弹性(容错)?
Parttion数量,可多可少,体现了RDD的弹性。
RDD之间具有依赖关系,可以基于上一个RDD重新计算出RDD。
(4)哪里体现RDD的分布式?
RDD由Partition组成,partition是分布在不同节点上的。
4 结合项目中使用
清楚掌握RDD特性,便于后期代码开发使用。
1 问题分析
本题主要考察的是面试者对于大数据Spark阶段的原理的掌握,考察对Spark整体架构的实现。
2 核心答案讲解
有多种机制,如Spark的容错机制、Shuffle机制等,都是属于Spark的核心机制。分布式数据集的容错性有两种方式:数据检查点和记录数据的更新。
对大规模数据来说,数据检查点操作成本很高。Spark通常选择记录更新的方式,即记录单个块上执行的单个操作,然后将创建RDD的一系列变换序列(每个RDD都包含了它是如何由其他RDD变换过来的,以及如何重建某一块数据的信息。因此RDD的容错机制又称“血统(Lineage)”容错)记录下来,以便恢复丢失的分区。
Spark 容错机制:(又称“血统(Lineage)),DD之间的算子操作会形成DAG图,RDD之间的依赖关系会形成Lineage。要理解Lineage机制,首先要明确两种依赖的概念:
父分区可以被多个子分区所用 ,即多对多的关系。
父分区最多被一个子分区所用 ,即一对一或者多对一的关系。
当出现某个节点计算错误的时候,会顺着RDD的操作顺序往回走。一旦是Narrow Dependencies错误,则重新计算父RDD分区即可,因为其不依赖其他节点 ;而如果Shuffle Dependencies错误,重算代价较高,因为一旦重新计算其依赖的父RDD分区,会造成冗余计算。这时候就需要人为的添加检查点,来提高容错机制的执行效率。
3 问题扩展
什么情况下需要加CheckPoint?
DAG中的Lineage过长,如果重算开销太大。故在特定几个Shuffle Dependencies上做CheckPoint是有价值的。Checkpoint会产生磁盘开销,因为它就是将数据持久化到磁盘中,所以做检查点的RDD最好是已经在内存中缓存了。
在整个工作机制中,不仅仅有容错机制的存在,还有Shuffle机制、I/O机制、调度机制等。
4 结合项目中使用
在我们去执行Spark程序的时候,当有成千的计算需要去执行的时候,适当的使用CheckPoint机制,会很大程度提升我们的效率。
1 问题分析
通常在向 Spark传递函数时,比如使用 map() 函数或者用 filter() 传条件时,可以使用驱动器程序中定义的变量,但集群中运行的每个任务都会得到这些变量的一份新副本,更新这些副本的值不会影响驱动器中的对应变量。
如果我们想实现所有分片处理时更新共享变量的功能,那累加器可以实现我们想要的效果。
向所有工作节点发送一个较大的只读值,以供一个或多个Spark操作使用。
比如,如果你的应用需要向所有节点发送一个较大的只读查询表,甚至是机器学习算法中的一个很大的特征向量,广播变量用起来都很顺手, 在多个并行操作中使用同一个变量,但 Spark会为每个任务分别发送。
2 核心答案讲解
在默认情况下,当Spark在集群的多个不同节点的多个任务上并行运行一个函数时,它会把函数中涉及到的每个变量,在每个任务上都生成一个副本。但,有时候需要在多个任务之间共享变量,或者在任务(Task)和任务控制节点(Driver Program)之间共享变量。
为了满足这种需求,Spark提供了两种类型的变量:
累加器,支持在所有不同节点之间进行累加计算(比如计数或者求和)只写变量
广播变量,用来把变量在所有节点的内存之间进行共享,在每个机器上缓存一个只读的变量,而不是为机器上的每个任务都生成一个副本。
3 问题扩展
自定义累加器的实现过程?
4 结合项目中使用
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/rfx/57299.html