Spark架构与组件

Spark遵循主从架构。它的集群由一个主服务器和多个从服务器组成。
Spark架构依赖于两个抽象:

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

RDD

RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是 Spark 中最基本的数据处理模型。代码中是一个抽象类,它代表一个弹性的、不可变、可分区、里面的元素可并行计算的集合。

弹性:1.存储 2.容错 3.计算 4.分片
分布式:数据存储在集群上
数据集:RDD封装了计算逻辑,并不保存数据
数据抽象:RDD是一个抽象类,需要子类实现
不可变:RDD 封装了计算逻辑,是不可以改变的,想要改变,只能产生新的 RDD,在新的 RDD 里面封装计算逻辑

实例:WordCount

object Spark03_WordCount {
  def main(args: Array[String]): Unit = {
    // 装饰者模式
    // HadoopRDD.textFile -> MapPartitionsRDD(flatMap) -> MapPartitionsRDD(map) -> ShuffledRDD
    // 只有在最后的collect才会真正的执行业务逻辑,前面的都是功能的扩展
    // RDD是不报存数据的,IO保存数据
    // RDD有分区的概念
    // RDD 代码中是一个抽象类,是Spark中最基本的数据处理模型,代表弹性,不可变,分区元素可并行计算的集合
    val sparkConf = new SparkConf().setMaster("local[*]").setAppName("wc")
    val sc = new SparkContext(sparkConf)
    val lines:RDD[String] = sc.textFile("E:\\atguiguDemo03\\leet-code\\spark01\\src\\main\\resources\\1.txt")
    val result = lines.flatMap(_.split(" "))
        .map(word => (word, 1))
        .reduceByKey(_ + _)
        .collect()
      .foreach(println)
    sc.stop()
  }

}

在这里插入图片描述

有向无环图(DAG)

将整个程序计算的执行过程用图形表示出来,这样更直观,更便于理解,可以用于表示程序的拓扑结构
在这里插入图片描述

spark架构

Spark 框架的核心是一个计算引擎,整体来说,它采用了标准 master-slave 的结构。如下图所示,它展示了一个 Spark 执行时的基本结构。图形中的 Driver 表示 master,负责管理整个集群中的作业任务调度。图形中的 Executor 则是 slave,负责实际执行任务。
在这里插入图片描述

组件

Driver:Client

Executor:Server

Mastor/Worker

ApplicationMastor

猜你喜欢

转载自blog.csdn.net/qq_43141726/article/details/121571919