Spark>简答题

Spark

1、什么是Spark

基于内存的,用于大规模数据处理(离线计算、实时计算、快速查询(交互式查询))的统一分析引擎。

2、Spark特点

  • 快:
    Spark计算速度是MapReduce计算速度的10-100倍
  • 易用:(算法多)
    MR支持1种计算模型,Spsark支持更多的计算模型。
  • 通用:
    Spark 能够进行离线计算、交互式查询(快速查询)、实时计算、机器学习、图计算等
    兼容性:
    Spark支持大数据中的Yarn调度,支持mesos。可以处理hadoop计算的数据。

3、Spark运行模式

1.local本地模式(单机)–开发测试使用
2.standalone独立集群模式–开发测试使用
3.standalone-HA高可用模式–生产环境使用
4.on yarn集群模式–生产环境使用
5.on cloud集群模式–中小公司未来会更多的使用云服务

4、Spark编写代码

1、创建一个 Sparkconf对象,设置app名称
2、创建一个SparkContext,设置日志级别
3、读取数据,对数据进行计算
4、保存数据

SparkCore

1、什么是RDD

弹性分布式数据集(数据存储在内存),一个不可变、可分区、里面的元素可并行计算的集合

2、RDD的主要属性

1、数据集的基本组成单位是一组分片(Partition)或一个分区(Partition)列表
每个分片都会被一个计算任务处理,分片数决定并行度。
2、一个函数会被作用在每一个分区。
3、一个RDD会依赖于其他多个RDD,RDD的每次转换都会生成一个新的RDD

3、RDD的算子分为两类:

1.Transformation转换操作:返回一个新的RDD
2.Action动作操作:返回值不是RDD
惰性计算,遇到Transformation不计算,遇到Action在真正计算。

4、Rdd数据持久化什么作用?

1、对多次使用的rdd进行缓存,缓存到内存,当后续频繁使用时直接在内存中读取缓存的数据,不需要重新计算。 (Persist、Cache)
2、将RDD结果写入硬盘(容错机制),当RDD丢失数据时,或依赖的RDD丢失数据时,可以使用持久化到硬盘的数据恢复。(MEMORY_ONLY(默认)、MEMORY_AND_DISK、DISK_ONLY)
SparkContext.setCheckpointDir(“目录”) //HDFS的目录
RDD.checkpoint()

5、cache和Checkpoint的区别

  • 位置
    Persist 和 Cache将数据保存在内存
    Checkpoint将数据保存在HDFS
  • 生命周期
    Persist 和 Cache 程序结束后会被清除或手动调用unpersist方法。
    Checkpoint永久存储不会被删除。
  • RDD依赖关系(血统Lineage)
    Persist和Cache,不会丢掉RDD间的依赖链/依赖关系
    Checkpoint会斩断依赖链

6、什么是宽窄依赖

窄依赖:父RDD的一个分区只会被子RDD的一个分区依赖
宽依赖:父RDD的一个分区会被子RDD的多个分区依赖(涉及到shuffle)

7、什么是DAG

DAG:指的是数据转换执行的过程,有方向,无闭环(其实就是RDD执行的流程)

8、DAG边界

开始:通过SparkContext创建的RDD
结束:触发Action,一旦触发Action就形成了一个完整的DAG

  • 说明:
    一个Spark应用中可以有一到多个DAG,取决于触发了多少次Action
    一个DAG中会有不同的阶段/stage,划分阶段/stage的依据就是宽依赖
    一个阶段/stage中可以有多个Task,一个分区对应一个Task

9、Spark概念

1.Application:指的是用户编写的Spark应用程序/代码,包含了Driver功能代码和分布在集群中多个节点上运行的Executor代码。
2.Driver:Spark中的Driver即运行上述Application的Main()函数并且创建SparkContext,SparkContext负责和ClusterManager通信,进行资源的申请、任务的分配和监控等
3.Cluster Manager:指的是在集群上获取资源的外部服务,Standalone模式下由Master负责,Yarn模式下ResourceManager负责;
4.Executor:是运行在工作节点Worker上的进程,负责运行任务,并为应用程序存储数据,是执行分区计算任务的进程;
5.RDD:Resilient Distributed Dataset弹性分布式数据集,是分布式内存的一个抽象概念;
6.DAG:Directed Acyclic Graph有向无环图,反映RDD之间的依赖关系和执行流程;
7.Job:作业,按照DAG执行就是一个作业;Job==DAG
8.Stage:阶段,是作业的基本调度单位,同一个Stage中的Task可以并行执行,多个Task组成TaskSet任务集
9.Task:任务,运行在Executor上的工作单元,一个Task计算一个分区,包括pipline上的一系列操作

10、Spark执行任务的基本流程

1.Spark应用被提交–>SparkContext向资源管理器注册并申请资源 (??) -->启动Executor
2.RDD–>构建DAG–>DAGScheduler划分Stage形成TaskSet–>TaskScheduler提交Task–>Worker上的Executor执行Task

1、累加器的作用

累加器accumulators:累加器支持在所有不同节点之间进行累加计算

2、广播变量的作用

在每个机器上缓存一份、不可变的、只读的、相同的变量,该节点每个任务都能访问。起到节省资源的作用,和优化的所用。

SparkSQL基本介绍

1、什么是SparkSQL?

用于处理结构化数据的Spark模块。

2、SparkSQL底层的数据抽象

DataFrame和DataSet

3、Hive和SparkSQL的对比

Hive是将sql转化成MapReduce进行计算(降低学习成本、提高开发效率)
SparkSQL是将sql转化成rdd集进行计算(降低学习成本、提高开发效率)

4、什么是DataFrame

  • 1
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值