下载网站站开发,菏泽建设公司网站,原神移动端,中国百强企业Spark是大批量分布式计算引擎框架#xff0c;scale语言开发的#xff0c;核心技术是弹性分布式数据集#xff08;RDD#xff09;可以快速在内存中对数据集进行多次迭代#xff0c;支持复杂的数据挖掘算法及图形计算算法#xff0c;spark与Hadoop区别主要是spark多个作业之…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 其名称为StageStage的划分和调度是有DAGScheduler来负责的Stage有非最终的StageShuffle Map Stage和最终的StageResult Stage两种Stage的边界就是发生shuffle的地方
DAG
flink架构
https://nightlies.apache.org/flink/flink-docs-release-1.13/zh/docs/concepts/flink-architecture/