导航菜单
首页 >  Scala期末考试题目  > Spark相关知识点(期末复习集锦)

Spark相关知识点(期末复习集锦)

嗨喽,最近小伙伴们快要期末考试了吧,下面是我对《Spark零基础实战》的总结,希望能帮助到你们。

一、Spark简介

Spark,拥有hadoop MR所具有的优点,但不同于MR的是job中监测结果可以保存在内存中,从而不再需要读写HDFS,因此spark能够更好的适用于数据挖掘与机器学习等需要迭代的m r的算法。

1.Spark,使用scala语言实现,这是一种面向对象函数式编程语言,能够像操作本地集合对象一样轻松的操作分布式数据集

Spark,适用于多种分布式平台,如批处理,迭代算法,交互式查询流处理等

Spark,提供了丰富的接口,除了基于scala python Java和SQL等API外还内建了丰富的程序库

Spark,可以运行在hadoop集群中使用多种数据源

2.Spark 特点

①运行速度快,易用性好,通用性强和随处运行等特点

运行速度快:Spark,拥有DAG执行引擎,支持在内存中对数据进行迭代计算,通过DAG调度程序查询优化器和物理执行引擎,实现了批处理和流数据处理的高性能

易用性好:支持scala JAVA python等语言进行编写,还支持Sql查询

通用性强:Spark生态圈包含了丰富的组件,提供一站式解决平台

随处可运行:Spark具有很强的适应性,能够使用多种资源管理器来调度job

②什么是DAG?

  DAG中文译名,有向无环图,DAG Scheduler 会根据RDD的transformation动作,将DAG分为不同的stage,每个stage中分为多个task,这些task可以并行运行。

Spark DAG解决了什么问题?

  Spark引入DAG在内存中进行计算,并可以优化计算,比如减少shuffle数据的过程

3.Spark的计算模型

Spark的基本计算单元是RDD[弹性分布式数据集,是spark中最基本的数据抽象,它代表一个不可变(只读),可分区里面的元素可并行计算的集合]

RDD具有数据流模型的特点,自动容错,感知性调度和可伸缩性。

①弹性 

存储的弹性,RDD数据可以在内存和磁盘之间进行自由切换

可靠性的弹性,RDD在丢失数据时能够自动恢复RDD在计算过程中会出现失败的情况,以后会进行一定次数的重试(四次)

并行度的弹性,RDD数据分区可以改变,进而增加并行计算的力度

②分布式,RDD的数据是分布式存储的,也就是说spark集群每个节点上只存储了RDD的部分数据

③数据集,是一个数据集(RDD是一个数据容器,跟array和list相似)

4.Rdd之间有两种不同类型的依赖关系,窄依赖和宽依赖

5.Spark与MR区别

spark个借鉴了MR的基础上发展而来,继承了MR分布式并行计算的优点,并改进了MR明显的缺陷

1)Spark把中间数据放到内存中,迭代运算效率高

2)Spark容错性高

3)Spark更加通用(Hadooo只提供了map和reduce两种操作,spark提供的数据集操作类型很多,分为transformations和actions,两大类。)

6.Spark streaming是spark提供的,对实时数据进行流式计算的组件

Spark submit/Spark Shell  批处理

Spark SQL 查询

7.Spark Core是spark框架最核心的部分.实现了spark的基本功能包括,任务调度,内存管理,错误恢复与存储系统交互模块

8.Rdd执行过程

Stage:作业调度的基本单位

1)Rdd读入外部数据源进行创建。

2)Rdd经过一系列的转换(transformation)操作,每次都会产生不同的rdd,供给下一个转换操作使用。

3)最后一个rdd,经过动作操作进行转换并输出到外部数据源

这一系列处理被称为lineage(血缘关系),即DAG拓扑排序的结果

9.RDD优点

惰性调用,管道化,避免同步等待,不需要保存中间结果,每次操作变得简单

10.RDD特性

1)高效的容错性

现有的容错机制,数据复制或者记录日志   

Rdd:血缘关系,重新计算丢失分区,无需回滚系统,重算过程。在不同节点之间并行,只记录粒度的操作

2)中间结果持久化内存数据在内存中的多个rdd操作之间进行传递,避免了不必要的读写磁盘开销

3)存放的数据可以是JAVA对象,避免了不必要的对象序列化和反序列化

11.Rdd之间的依赖关系:

阶段的划分的依据-窄依赖和宽依赖

1)窄依赖表现为一个父的分区对应于一个子RDD的分区,或多个父RDD的分区对应于一个子RDD的分区。(一对一,或者,多对一)

2)宽依赖者表现为存在一个父Rdd的一个分区,对应一个子Rdd的多个分区(一对多)

宽依赖无法优化

//重点

窄依赖的函数map filter union mapPartitions

宽依赖的函数groupByKey, partitionBy

12.RDD计算过程

1) 创建RDD对象

2)SparkContext负责计算rdd之间的依赖关系,构建dag .

3)DAGScheduler负责把dag图分解成多个stage,每个stage包含了多个task,每个task会被TaskScheduler分发给WorkNode上的executor.

13.Spark运行模式

一、单机模式:

本地模式:spark单机运行,一般用开发测试

二、伪分布式模式

Standalone模式:构建一个由master+slave构成的spark集群,spark运行在集群中

//master,client和worker节点

//如果是用spark-shell交互式工具提交job    在master上运行

//如果使用spark-submit提交            在本地client上运行

三、分布式模式

Spark on yarn模式:spark客户端直接连到yarn.不需要额外构建spark集群

Spark on mesos模式:spark客户端直接连接到mesos,不需要额外构建spark集群

⭐⭐

Spark On YARN模式的搭建比较简单,仅需要在YARN集群的一个节点上安装Spark即可,该节点可作为提交Spark应用程序到YARN集群的客户端。

Spark本身的Master节点和Worker节点不需要启动。

Spark on yarn模式有client和cluster两种模式,主要区别在于:

Driver程序的运行节点不同。

client:Driver程序运行在客户端,适用于交互、调试,希望立即看到运行的输出结果。

Cluster:Driver程序运行在由RM(ResourceManager)启动的AM(AplicationMaster) 上, 适用于生产环境。

14.Spark on yarn 运行原理以及搭建过程

YARN-Cluster(yarn-Standalone)和YARN-Client模式的区别本质上就是application master进程的区别

Yarn- cluster模式下,driver运行在application master中,他负责向yarn申请资源并监督作业的运行情况,当用户提交了作业之后,就可以关掉client.作业会继续在yarn上运行,因而yarn-cluster模式不适合运行交互类型的作业。

Yarn-client模式下,application master仅仅向yarn请求executor ,client会和请求的container通信来调度他们工作,也就是说client不能离开

二、Scala语言

1.Scala简介

1)Scala运行JAVA虚拟机JVM之上,并且兼容现有的JAVA程序

2)scala是纯粹的面向对象的语言

3)scala也是一门函数式语言

4)

相关推荐: