Spark

    xiaoxiao2022-07-02  174

    基本概念

    *  RDD:是弹性分布式数据集(Resilient Distributed Dataset)的简称,是分布式内存的一个抽象概念,提供了一种高度受限的共享内存模型; *  DAG:是Directed Acyclic Graph(有向无环图)的简称,反映RDD之间的依赖关系; *  Executor:是运行在工作节点(Worker Node)上的一个进程,负责运行任务,并为应用程序存储数据; *  应用:用户编写的Spark应用程序; *  任务:运行在Executor上的工作单元; *  作业:一个作业包含多个RDD及作用于相应RDD上的各种操作; *  阶段:是作业的基本调度单位,一个作业会分为多组任务,每组任务被称为“阶段”,或者也被称为“任务集”。

    特点

    一、高级 API 剥离了对集群本身的关注,Spark 应用开发者可以专注于应用所要做的计算本身。

    二、Spark 很快,支持交互式计算和复杂算法。

    三、Spark 是一个通用引擎,可用它来完成各种各样的运算,包括 SQL 查询、文本处理、机器学习等,而在 Spark 出现之前,我们一般需要学习各种各样的引擎来分别处理这些需求。

    性能特点

    更快的速度

    内存计算下,Spark 比 Hadoop 快100倍。

    易用性

    Spark 提供了80多个高级运算符。

    通用性

    Spark 提供了大量的库,包括SQL、DataFrames、MLlib、GraphX、Spark Streaming。 开发者可以在同一个应用程序中无缝组合使用这些库。

    支持多种资源管理器

    Spark 支持 Hadoop YARN,Apache Mesos,及其自带的独立集群管理器

    架构设计

    Spark运行基本流程图

    Spark运行架构具有以下特点:

    (1)每个应用都有自己专属的Executor进程,并且该进程在应用运行期间一直驻留。Executor进程以多线程的方式运行任务,减少了多进程任务频繁的启动开销,使得任务执行变得非常高效和可靠; (2)Spark运行过程与资源管理器无关,只要能够获取Executor进程并保持通信即可; (3)Executor上有一个BlockManager存储模块,类似于键值存储系统(把内存和磁盘共同作为存储设备),在处理迭代计算任务时,不需要把中间结果写入到HDFS等文件系统,而是直接放在这个存储系统上,后续有需要时就可以直接读取;在交互式查询场景下,也可以把表提前缓存到这个存储系统上,提高读写IO性能; (4)任务采用了数据本地性和推测执行等优化机制。数据本地性是尽量将计算移到数据所在的节点上进行,即“计算向数据靠拢”,因为移动计算比移动数据所占的网络资源要少得多。而且,Spark采用了延时调度机制,可以在更大的程度上实现执行过程优化。比如,拥有数据的节点当前正被其他的任务占用,那么,在这种情况下是否需要将数据移动到其他的空闲节点呢?答案是不一定。因为,如果经过预测发现当前节点结束当前任务的时间要比移动数据的时间还要少,那么,调度就会等待,直到当前节点可用。

    最新回复(0)