zoukankan      html  css  js  c++  java
  • spark基本概念与运行架构

    Apache Spark是一个分布式计算框架,旨在简化运行于计算机集群上的并行程序的编写。

    RDD:弹性分布式数据集(Resilient Distributed Dataset)是分布式内存的一个抽象概念,提供了一个高度受限的共享内存模型。一个RDD包含多个分区(Partition)。

    DAG:有向无环图(Directed Acyclic Graph)反应RDD之间的依赖关系。

    Executor:运行在工作节点(WorkNode)的一个进程,负责运行Task。

    Application:用户编写的Spark程序。

    Task:运行在Executor上的工作单元。

    Job:一个Job包含多个RDD及作用于相应RDD上的各种操作。

    Stage:是Job的基本调度单位,一个Job会分为多组Task,每组Task被称为Stage,或者也被称为TaskSet,代表了一组由关联的、相互之间没有shuffle依赖关系的任务组成的任务集。

    与MapReduce相比的优势:

    • 利用多线程来执行具体的任务,减少任务的启动开销
    • Executor中有一个BlockManager存储模块,会将内存和磁盘共同作为存储设备,减少IO开销

    1.  为应用构建起基本的运行环境,即由Driver创建一个SparkContext进行资源的申请、任务的分配和监控。
    2. 资源管理器为Executor分配资源,并Executor启动进程。
    3. SparkContext根据RDD的依赖关系构建DAG图,DAG图提交给DAGScheduler解析成Stage,然后把一个个TaskSet提交给底层调度器TaskScheduler处理;Executor向SparkContext申请Task,TaskScheduler将Task发放给Executor运行并提供应用程序代码。
    4. Task在Executor上运行把执行结果反馈给TaskSchedulor,然后反馈给DAGScheduler,运行完毕后写入数据并释放所有资源。

    Spark运行架构特点

    1. 每个Application都有自己专属的Executor进程,并且该进程在Application运行期间一直驻留。Executor进程以多线程的方式运行Task。
    2. Spark运行过程与资源管理器无关,只要能够获取Executor进程并保存通信即可。
    3. Task采用数据本地性和推测执行等优化机制。


    (厦门大学大数据公开课笔记)

  • 相关阅读:
    关于这个 blog
    P6499 [COCI2016-2017#2] Burza 题解
    CF1172F Nauuo and Bug 题解
    CF1479D Odd Mineral Resource 题解
    CF1442E Black, White and Grey Tree 题解
    CF1442D Sum 题解
    CF1025D Recovering BST 题解
    CF1056E Check Transcription 题解
    CF1025F Disjoint Triangles 题解
    红包算法的PHP实现
  • 原文地址:https://www.cnblogs.com/macyzhang/p/10054517.html
Copyright © 2011-2022 走看看