Spark与flink计算引擎工作原理

马肤
这是懒羊羊

Spark是大批量分布式计算引擎框架,scale语言开发的,核心技术是弹性分布式数据集(RDD)可以快速在内存中对数据集进行多次迭代,支持复杂的数据挖掘算法及图形计算算法,spark与Hadoop区别主要是spark多个作业之间数据通信是基于内存的,Hadoop是基于磁盘的

Spark运行架构:

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

Spark与flink计算引擎工作原理,在这里插入图片描述,词库加载错误:未能找到文件“C:\Users\Administrator\Desktop\火车头9.8破解版\Configuration\Dict_Stopwords.txt”。,程序,li,工具,第1张

Spark搭建模式:

Local本地模式:单机本地使用多线程实现分布式计算,一般测试环境使用

Spark与flink计算引擎工作原理,在这里插入图片描述,词库加载错误:未能找到文件“C:\Users\Administrator\Desktop\火车头9.8破解版\Configuration\Dict_Stopwords.txt”。,程序,li,工具,第2张

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。

Spark与flink计算引擎工作原理,在这里插入图片描述,词库加载错误:未能找到文件“C:\Users\Administrator\Desktop\火车头9.8破解版\Configuration\Dict_Stopwords.txt”。,程序,li,工具,第3张

cluster模式:spark的driver驱动程序,运行在Yarn集群上,和集群通信成本比较低

driver是提交给yarn管理的,如果失败会由Yarn重启,driver中的程序输出需要在Yarn日志查看

Spark与flink计算引擎工作原理,在这里插入图片描述,词库加载错误:未能找到文件“C:\Users\Administrator\Desktop\火车头9.8破解版\Configuration\Dict_Stopwords.txt”。,程序,li,工具,第4张

spark常用术语:

Spark与flink计算引擎工作原理,在这里插入图片描述,词库加载错误:未能找到文件“C:\Users\Administrator\Desktop\火车头9.8破解版\Configuration\Dict_Stopwords.txt”。,程序,li,工具,第5张

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/


文章版权声明:除非注明,否则均为VPS857原创文章,转载或复制请以超链接形式并注明出处。

发表评论

快捷回复:表情:
评论列表 (暂无评论,0人围观)

还没有评论,来说两句吧...

目录[+]

取消
微信二维码
微信二维码
支付宝二维码