Spark 概念

名词

  • RDD
    • 弹性分布式数据集
  • DAG
    • 有向无环图
  • Application

    • 每个 Spark 程序,称为一个 Application。
  • Driver

    • 每个 Spark 程序 运行一个 Driver 进程;用来协调、统计任务进度。

      *类似 JobTracker

  • Worker

    • 每个 Spark 程序 运行多个 Worker 进程;运行在一个或多个节点上,包含多个 Executor 子进程。

      *类似 TaskTracker

  • Executor

    • 每个 Spark 程序 运行多个 Executor 进程;用来承担具体计算任务。

计算抽象

  • Job
    • 程序每次调用 Action,逻辑上生成一个 Job,一个 Job 包含多个 Stage。
  • Stage
    • 程序调用了需要 Shuffle 计算的 Operator,如 GroupByKey,则以 Shuffle 为边界分成:
      • ShuffleMapStage
      • ResultStage
  • TaskSet
    • Stage 可以直接映射为 TaskSet,一个任务集 封装了一次需要运算的、具有相同处理逻辑的 Task;
    • 这些 Task 可以并行运算;粗粒度的调度是以 TaskSet 为单位的。
  • Task
    • 物理节点上运行的基本单位;包含两类,分别对应 Stage 中的 ShuffleMapStage、ResultStage 中的执行基本单元
      • ShuffleMapTask
      • ResultTask

运行模式

  • Local
    • 本地运行;单个进程,无并行计算能力;
  • Local [K]
    • 本地运行;K个进程;通常 K = 机器的CPU核心数;
  • Local [*]
    • 本地运行;工作进程数 = 机器的CPU核心数;
  • spark://host:port
    • 以单机模式运行;Spark 的集群运行模式;默认端口:7077;
  • mesos://host:port
    • Mesos 集群上运行;Driver 和 Worker 进程在 Mesos 集群上;
  • Yarn-Client
    • Yarn 集群上运行;Driver 进程在本地,Worker 进程在 Yarn 集群上;
  • Yarn-Cluster
    • Yarn 集群上运行;Driver 和 Worker 进程在 Yarn 集群上;

Shuffle

触发 Shuffle 的操作

操作 算子
repartition repartition、coalesce(重分区、合并)
*ByKey groupByKey、reduceByKey、combineByKey、aggregateByKey 等
join cogroup、join
  • Spark Shuffle 算法
    • hash
    • sort
    • tungsten-sort

持久化级别

  • MEMORY_ONLY(默认持久化策略)
    • 仅在内存中保存未序列化的对象格式;
    • 如果内存不足,则数据可能不会进行持久化;
    • 下次执行 RDD 的算子操作时,没有持久化的数据将重新计算。
  • MEMORY_AND_DISK
    • 保存未序列化的对象格式;
    • 优先尝试保存数据到内存;内存不足。则写入磁盘文件;
    • 下次执行 RDD 的算子操作时,读取磁盘中的持久化数据。
  • MEMORY_ONLY_SER、MEMORY_AND_DISK_SER
    • 将 RDD 中的数据进行序列化;
    • RDD 的每个分区将被序列化为一个字节数组;
    • 更节省内存,避免持久化数据过多占用内存,导致频繁 GC。
  • DISK_ONLY
    • 保存未序列化的对象格式;
    • 数据全部写入磁盘文件。
  • MEMORY_ONLY_2、MEMORY_AND_DISK_2 等等
    • 将每个持久化数据,复制一份副本,保存到其他节点;
    • 该机制主要用于容错。

你可能感兴趣的:(Spark 概念)