日报日报!Spark综合面试题总结

Spark

什么是Spark

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

Spark特点

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

Spark运行模式

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

Spark编写代码

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

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上的一系列操作

Spark执行任务的基本流程

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

SparkCore

什么是RDD

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

RDD的主要属性

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

RDD的算子分为两类:

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

cache和Checkpoint的区别

位置:

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

什么是宽窄依赖

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

什么是DAG

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weixin_43563705

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值