Spark权威指南读书笔记(一)

Spark权威指南读书笔记(一)

一、什么是Spark?

1.Spark设计哲学

  • 统一平台
  • 计算引擎(不考虑数据存储)
  • 配套的软件库

二、Spark应用程序

spark应用程序由一个驱动器进程和一组执行器进程组成。

驱动器进程

负责运行main函数,主要负责三件事:

  1. 维护Spark应用程序的相关信息
  2. 回应用户的程序或输入
  3. 分析任务并分发给若干执行器进行处理

驱动器是Spark应用程序的核心,其在整个生命周期中维护者所有相关信息。

执行器进程

负责执行驱动器分配的实际计算任务,主要负责两件事:

  1. 执行驱动器分配给他的代码
  2. 将执行器的计算状态报告给运行驱动器的结点

总结:

  1. Spark使用一个集群管理器跟踪可用的资源
  2. 驱动器进程负责执行驱动器命令完成给定的任务

三、转换操作

什么叫转换

Spark的核心数据结构在计算过程中是保持不变的,意味着创建后无法更改!!!若你需要做出改变,需告知Spark如何修改满足需求,这个过程称为转换。

转换操作是使用Spark表达业务逻辑的核心,可分为两大类:指定窄依赖关系的转换操作和指定宽依赖关系的转换操作。

窄依赖转换与宽依赖转换

窄依赖转换是每个输入分区仅决定一个分区的转换。属于一对一映射关系。

宽依赖转换是每个输入分区决定了多个输出分区,这一操作常被称为shuffle,其将在集群中执行相互交换分区数据的 功能。属于一对多映射关系。

宽窄依赖潜度对比

对于窄依赖转换,Spark将自动执行流水线处理,这意味着在DataFrame指定多个过滤操作,将全部在内存中执行。

对于shuffle操作,即宽依赖转换,Spark会将结果写入磁盘。

惰性评估

惰性评估(lazy evaluation),即等到绝对需要才执行计算。具体而言,在Spark中,用户表达一些对数据的操作时,不是立即修改数据,而是建立一个作用到原始数据的转换计划。Spark首先会将计划编译为可在集群中高效执行的流水线式物理执行计划,然后等待,直到最后时刻才开始执行代码。因此,Spark可以优化了整个输入端到输出端的数据流。

动作操作

一个动作指示Spark在一系列转换操作后计算结果。

动作主要分为三类:

  • 在控制台中查看数据的动作
  • 在某个语言中将数据汇集为原生对象的动作
  • 写入输出数据源的动作
posted @ 2020-07-28 01:28  ganshuoos  阅读(348)  评论(0编辑  收藏  举报