第一章 Spark概述

第一章 Spark概述_第1张图片

文章目录

    • 1.1 Spark核心组件
    • 1.2 Spark架构
    • 1.3 Spark三种环境
      • 1.3.1 单机环境
      • 1.3.2 伪分布式环境
      • 1.3.3 完全分布式环境
    • 1.4 Spark核心数据集RDD
      • 1.4.1 RDD常用操作
      • 1.4.2 RDD的懒操作特性
      • 1.4.3 宽依赖与窄依赖
      • 1.4.4 Stage的划分

1.1 Spark核心组件

第一章 Spark概述_第2张图片
  1. Spark Core : spark 核心,提供底层框架及核心支持;

  2. Spark SQL : 可以对多个数据源执行SQL查询;

  3. Spark Streaming : 流式计算(实时);

  4. MLBase : 机器学习;

  5. MLlib : 数据挖掘,属于 MLBase ;

  6. GraphX : 图计算;

  7. SparkR : 数学计算,使 R 摆脱单机运行;

1.2 Spark架构

  1. 客户端程序:用户提交作业。
  2. Driver : 运行 Application 的 main 函数并创建 SparkContext 。Application 指的是用户编写的 Spark 应用程序。
  3. SparkContext : 应用上下文,控制整个生命周期。
  4. Cluster Manager :资源管理器。
  5. Spark Worker:集群中任何可以运行 Application 的结点。
  6. Executor:运行在 Worker 的 Task 执行器。
  7. Task:具体工作任务。

具体流程如图:

第一章 Spark概述_第3张图片

1.3 Spark三种环境

1.3.1 单机环境

  1. 也被称为 Local[N] 模式,N代表线程数;

  2. 多线程;

  3. 用于验证应用程序逻辑上是否有问题

1.3.2 伪分布式环境

  1. 多进程;
  2. 也用于验证应用程序逻辑上是否有问题

1.3.3 完全分布式环境

  1. 最常用 Standalone 模式,分为 Driver、Executor、Master、Worker 四种进程;
  2. Driver:运行 Spark 应用程序;
  3. Executor:通过启动多个线程(Task)来执行对RDD的 partitions 进行并行计算;
  4. Master:负责资源调度和分配;
  5. Worker:用自己的内存存储RDD的某些 Partitions 并执行并行计算

具体流程如图:

第一章 Spark概述_第4张图片

1.4 Spark核心数据集RDD

  1. RDD可以理解为一个提供了许多操作接口的数据集合;
  2. RDD数据可以分为一至多个 partitions ,存储在不同机器中;

1.4.1 RDD常用操作

  1. 转换算子(Transformation):将原始数据集转换为RDD,或将一个RDD转换为另一个RDD;
第一章 Spark概述_第5张图片
  1. 行动算子(Action):将RDD存储到硬盘,或触发转换操作的执行;
第一章 Spark概述_第6张图片

1.4.2 RDD的懒操作特性

所有转换操作都是懒惰(Lazy)操作,即只做记录,并不执行;

1.4.3 宽依赖与窄依赖

  1. 宽依赖(一对一):子RDD的每个分区只依赖于父RDD的一个分区;
  2. 窄依赖(多对一):子RDD的每个分区都依赖于父RDD的多个分区;

1.4.4 Stage的划分

  1. 一个 Job 会被划分成一定数量的 Stage ,每个 Stage 按顺序执行;
  2. Spark 有两类 Task,包括 ShuffleMapTask 和 ResultTask;
  3. ShuffleMapTask 输出的是 Shuffle 所需的数据,ResultTask 输出的是最终的结果;
  4. 每个 Shuffle 之前都是一个 Stage;

如图:

第一章 Spark概述_第7张图片

groupBy() 和 join() 为 Shuffle 操作,得到 Stage1 和 Stage2,join() 操作本身是 Stage3

你可能感兴趣的:(spark,大数据,数据挖掘)