Spark与flink计算引擎工作原理

Spark是大批量分布式计算引擎框架,scale语言开发的,核心技术是弹性分布式数据集(RDD)可以快速在内存中对数据集进行多次迭代,支持复杂的数据挖掘算法及图形计算算法,spark与Hadoop区别主要是spark多个作业之间数据通信是基于内存的,Hadoop是基于磁盘的
Spark运行架构:
Spark框架的核心是一个计算引擎,采用了标准master-slave的结构。如下图所示,它展示了一个 Spark 执行时的基本结构。图形中的Driver表示 master,负责管理整个集群中的作业任务调度。Executor则是 slave,负责实际执行任务。

在这里插入图片描述

Spark搭建模式:
Local本地模式:单机本地使用多线程实现分布式计算,一般测试环境使用
在这里插入图片描述
standalone:

spark ON Yarn 常用(推荐),在实际开发中,大数据任务都有统一的资源管理和任务调度工具进行管理,YARN比较成熟,支持多种调度策略,例如Capcity等,可以使用YARN调度管理MR/Hive/spark/flink
spark ON Yarn本质是spark任务的字class字节码文件打包成jar包,上传到YARN集群的JVM中去运行,Spark On Yarn根据Driver运行在哪里分为2种模式:client模式和cluster模式

client模式:
spark的driver驱动程序,运行在提交任务的客户端上,和集群通信成本比较高
因为driver的在客户端,所以driver中的程序结果输出可以在客户端控制台看到

ApplicationMaster介绍
Hadoop用户向YARN集群提交应用程序时,提交程序中包含ApplicationMaster,用于向资源调度器申请执行任务的资源容器Container,运行用户自己的程序任务job,监控整个任务的执行,跟踪整个任务的状态,处理任务失败等异常情况。ResourceManager(资源)和Driver(计算)之间的解耦合靠的就是ApplicationMaster。
在这里插入图片描述
cluster模式:spark的driver驱动程序,运行在Yarn集群上,和集群通信成本比较低
driver是提交给yarn管理的,如果失败会由Yarn重启,driver中的程序输出需要在Yarn日志查看

在这里插入图片描述

spark常用术语:
在这里插入图片描述

Application:是指用户编写的Spark应用程序,其中包括一个Driver功能的代码和分布在集群中多个节点上运行的Executor代码

Driver:Spark中的Driver是运行上述Application的main函数,运行main函数会创建SparkContext,创建SparkContext的目的是为了准备Spark应用程序的运行环境,在Spark中SparkContext负责与ClusterManager通信,进行资源申请、任务的分配和监控等,当Executor部分运行完毕后,Driver同时负责将SparkContext关闭,通常用SparkContext代表Driver

ClusterManager集群管理器,对于YARN模式就是resourceManager/ApplicationMaster,在集群上做统一资源管理

Worker:工作节点,是拥有CPU/内存等资源的机器,集群中任何可以运行Application代码的节点,在Standalone模式中指的是通过slave文件配置的Worker节点,在Spark on Yarn模式下就是NoteManager节点

Executor:Application运行在worker节点上的一个进程,该进程负责运行某些Task, 并且负责将数据存到内存或磁盘上,每个Application都有各自独立的一批Executor, 在Spark on Yarn模式下,其进程名称为CoarseGrainedExecutor Backend。一个CoarseGrainedExecutor Backend有且仅有一个Executor对象, 负责将Task包装成taskRunner,并从线程池中抽取一个空闲线程运行Task, 这个每一个oarseGrainedExecutor Backend能并行运行Task的数量取决与分配给它的cpu个数

Task:被送到某个Executor上的工作单元,hadoopMR中的MapTask和ReduceTask概念一样,是运行Application的基本单位,多个Task组成一个Stage,而Task的调度和管理等是由TaskScheduler负责

Job:包含多个Task组成的并行计算,往往由Spark Action触发生成, 一个Application中往往会产生多个Job

Stage:每个Job会被拆分成多组Task, 作为一个TaskSet, 其名称为Stage,Stage的划分和调度是有DAGScheduler来负责的,Stage有非最终的Stage(Shuffle Map Stage)和最终的Stage(Result Stage)两种,Stage的边界就是发生shuffle的地方

DAG:

flink架构

https://nightlies.apache.org/flink/flink-docs-release-1.13/zh/docs/concepts/flink-architecture/

相关推荐

  1. 计算引擎Flink核心概念

    2024-03-23 22:58:01       9 阅读
  2. Flink面试整理-Flink工作原理

    2024-03-23 22:58:01       10 阅读
  3. sparkflink的wordcount示例

    2024-03-23 22:58:01       10 阅读
  4. 基于SpringBoot+Spark搭建本地计算引擎服务

    2024-03-23 22:58:01       9 阅读
  5. InnoDB存储引擎工作原理

    2024-03-23 22:58:01       22 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-23 22:58:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-23 22:58:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-23 22:58:01       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-23 22:58:01       20 阅读

热门阅读

  1. 游戏幸存者学习VC源码

    2024-03-23 22:58:01       19 阅读
  2. 算法——排序

    2024-03-23 22:58:01       20 阅读
  3. 蓝桥杯刷题--python-27--全球变暖-dfs-bfs

    2024-03-23 22:58:01       18 阅读
  4. Zookeeper详解(zk)

    2024-03-23 22:58:01       20 阅读
  5. AndroidStudio开发 相关依赖

    2024-03-23 22:58:01       17 阅读
  6. linux修改ftp上传路径

    2024-03-23 22:58:01       18 阅读
  7. NSURLSessionConfiguration

    2024-03-23 22:58:01       18 阅读
  8. centos7 安装php82

    2024-03-23 22:58:01       17 阅读
  9. 编写人脸检测程序

    2024-03-23 22:58:01       21 阅读