几个基本概念:
(1)job:包含多个task组成的并行计算,往往由action催生。
(2)stage:job的调度单位。
(3)task:被送到某个executor上的工作单元。
(4)taskSet:一组关联的,相互之间没有shuffle依赖关系的任务组成的任务集。
一个应用程序由一个driver program和多个job构成。一个job由多个stage组成。一个stage由多个没有shuffle关系的task组成。
spark应用程序的运行架构:
(1)简单的说:
由driver向集群申请资源,集群分配资源,启动executor。driver将spark应用程序的代码和文件传送给executor。executor上运行task,运行完之后将结果返回给driver或者写入外界。
(2)复杂点说:
提交应用程序,构建sparkContext,构建DAG图,提交给scheduler进行解析,解析成一个个 stage,提交给集群,由集群任务管理器进行调度,集群启动spark executor。driver把代码和文件传给executor。executor进行各种运算完成task任务。driver上的block tracker记录executor在各个节点上产生的数据块。task运行完之后,将数据写入HDFS上或者其他类型数据库里。
(3)全面点说:
spark应用程序进行各种transformation的计算,最后通过action触发job。提交之后首先通过 sparkContext根据RDD的依赖关系构建DAG图,DAG图提交给DAGScheduler进行解析,解析时是以shuffle为边界,反向解 析,构建stage,stage之间也有依赖关系。这个过程就是对DAG图进行解析划分stage,并且计算出各个stage之间的依赖关系。然后将一个 个TaskSet提交给底层调度器,在spark中是提交给taskScheduler处理,生成TaskSet manager,最后提交给executor进行计算,executor多线程计算,计算完反馈给TaskSetmanager,再反馈给 taskScheduler,然后再反馈回DAGScheduler。全部运行完之后写入数据。
(4)更加深入理解:
应用程序提交后,触发action,构建sparkContext,构建DAG图,提 交给DAGScheduler,构建stage,以stageSet方式提交给TaskScheduler,构建taskSet Manager,然后将task提交给executor运行。executor运行完task后,将完成信息提交给schedulerBackend,由 它将任务完成的信息提交给TaskScheduler。TaskScheduler反馈信息给TaskSetManager,删除该task任务,执行下 一个任务。同时TaskScheduler将完成的结果插入到成功队列里,加入之后返回加入成功的信息。TaskScheduler将任务处理成功的信息 传给TaskSet Manager。全部任务完成后TaskSet Manager将结果反馈给DAGScheduler。如果属于resultTask,交给JobListener。如果不属于resultTask,保 存结果。
相关推荐
lApplication:SparkApplication的概念和HadoopMapReduce中的类似,指的是用户编写的Spark应用程序,包含了一个Driver功能的代码和分布在集群中多个节点上运行的Executor代码;lDriver:Spark中的Driver即运行上述...
这是第12次上海 Spark Meetup的分享资料.本文回顾NUMA的技术要点以及它如何影响内存密集型Spark应用程序的性能。然后将介绍识别NUMA性能问题的工具和方法,以及作者团队为Spark任务调度添加NUMA感知方面的工作。
在本书中将深入浅出地讲解Spark的编程模型、作业运行机制、存储原理和运行架构等内容,通过这些内容的学习,可以编写出更加高效的应用程序。 (3) Spark运维人员 作为一名Spark运维人员,适当了解Spark的设计原理...
Spark 是在 Scala 语言中实现的,它将 Scala 用作其应用程序框架。与 Hadoop 不同,Spark 和 Scala 能够紧密集成,其中的 Scala 可以像操作本地集合对象一样轻松地操作分布式数据集。 尽管创建 Spark 是为了支持...
待办事项清单 这是使用Spark Java微框架轻松完成的列表应用程序构建。 内置:Java 8(Spark)和PostgreSQL。... 运行应用程序 $ ./gradlew run # or 'gradlew run' in Windows 作者 布赖恩·马瑞特(Brian Marete)
与此同时,它也兼容批处理和流式处理,对于程序吞吐量和延迟都有较高要求,因此GC参数的调优在Spark应用实践中显得尤为重要。Spark是时下非常热门的大数据计算框架,以其卓越的性能优势、独特的架构、易用的用户接口...
该演示还使用IBM Message Hub(kafka)将应用程序事件推送到主题,在IBM BigInsights(hadoop)上运行的Spark Streaming作业将其消费。 快速开始 如果您想尝试该Web应用程序的实时演示,请访问。 这也是的概述视频...
SPARKEND :sparkles: :elephant: 用于SPARK-HADOOP中的多节点集群的Angular-Material Web应用程序 对这个项目有兴趣吗? 请访问我的该存储库是作为昆卡大学大数据学科的最终项目而创建的。 目的是通过开发查询美国...
阐述了 Spark 的五大组件,研究了 Spark 数据处理应用和运行架构。Spark 通过优化传统的 MapReduce 模型来满足之前 HDFS 以及 MapReduce 无法解决的问题, 大大提高了效率, 为处理流式数据以及 其他需求提供了捷径...
2.2.3 运行 Spark 程序········ ············ · ··········· ·············· ········ ······ 42 2. 3 Spark Web UI ···············...
直接进行以下操作: 使用准备Hadoop群集获取从准备配置文件使用运行二进制文件在了解可调用的REST API端点开发人员也可以将Oryx 2用作构建自定义应用程序的框架。 遵循以下架构概述,继续以了解如何创建新应用程序...
Cloudflow使您可以轻松地将流式应用程序分解为较小的可组合组件,并将它们与基于架构的合同捆绑在一起。 Cloudflow与流行的流引擎集成在一起,例如Akka,Spark和Flink。 它还带有强大的CLI工具,可在运行时轻松管理...
通过解耦底层基础架构来实现应用程序的可移植性; 在开发中可以更快地创建应用程序的服务和工具; 将Hadoop生态系统的组件集成到一个平台中; 自动捕获元数据和沿袭的元数据管理; 具有集成UI的CDAP管道,用于...
YARN是开源项目Hadoop的一个资源管理系统,最初设计是为了解决Hadoop中MapReduce计算框架中的资源管理问题,但是现在它已经是一个更加通用的资源管理系统,可以把MapReduce计算框架作为一个应用程序运行在YARN系统之...
基于示例开发的应用程序来自: : Java Maven 项目使用 Rest 架构与 Spark 和 Db4o 与客户端。 将项目作为 Maven 项目导入并运行 Test 类后,从浏览器的客户端文件夹中运行 moviesdbclient.html 文件。 基于示例...
我建议在此处使用 DSE AMI: : 在 cql 文件夹中有一个名为 schema.cql 的文件,确保在您的 cassandra 集群上执行它以设置应用程序的架构 在您的 cassandra 集群上运行这些语句以准备它接受您的数据更新 src/main/...
我们也希望能够为他们提供最理想的方式以构建基于微服务架构的应用程序。而Kubernetes-Mesos正是我们基于这一理念所开发出的技术成果,其能够将Kubernetes作为原生Mesos框架处理并运行在DCOS之上。Kubernetes-Mesos ...