首页技术文章正文

Spark工作原理【黑马大数据培训】

更新时间:2023年02月14日 11时42分58秒 来源:黑马程序员论坛

黑马中级程序员课程

基本概念 理解Spark的运行模式涉及一系列概念: (1)Cluster Manager:在集群上获取资源的外部服务。目前有三种类型:1. Standalone, Spark原生的资源管理;2. Apache Mesos, 和Hadoop Mapreduce兼容性良好  的资源调度框架;3. Hadoop Yarn, 主要指YARN中的ResourceManager. (2)Application: 用户编写的应用应用程序。 (3)Driver: Application中运行main函数并创建的SparkContext, 创建SparkContext的目的是和集群的ClusterManager通讯,进行资源的申请、任务的分配和监控等。所 以,可以用SparkContext代表Driver。 (4)Worker:集群中可以运行Application代码的节点。 (5)Executor: 某个Application在Worker上面的一个进程,该进程负责执行某些Task,并负责把数据存在内存或者磁盘上。每个Application都各自有一批属于自己的      Executor。 (6)Task:被送到Executor执行的工作单元,和Hadoop MapReduce中的MapTask和ReduceTask一样,是运行Application的基本单位。多个Task组成一个Stage,而      Task的调度和管理由TaskScheduler负责。 (7)Job:包含多个Task组成的并行计算,往往由Spark Action触发产生。一个Application可以产生多个Job。 (8)Stage:每个Job的Task被拆分成很多组Task, 作为一个TaskSet,命名为Stage。Stage的调度和划分由DAGScheduler负责。Stage又分为Shuffle Map Stage和Result Stage两种。Stage的边界就在发生Shuffle的地方。 (9)RDD:Spark的基本数据操作抽象,可以通过一系列算子进行操作。RDD是Spark最核心的东西,可以被分区、被序列化、不可变、有容错机制,并且能并行操作的数    据集合。存储级别可以是内存,也可以是磁盘。 (10)DAGScheduler:根据Job构建基于Stage的DAG(有向无环任务图),并提交Stage给TaskScheduler。 (11)TaskScheduler:将Stage提交给Worker(集群)运行,每个Executor运行什么在此分配。 (12)共享变量:Spark Application在整个运行过程中,可能需要一些变量在每个Task中都使用,共享变量用于实现该目的。Spark有两种共享变量:一种缓存到各个节点    的广播变量;一种只支持加法操作,实现求和的累加变量。 (13)宽依赖:或称为ShuffleDependency, 宽依赖需要计算好所有父RDD对应分区的数据,然后在节点之间进行Shuffle。 (14)窄依赖:或称为NarrowDependency,指某个RDD,其分区partition x最多被其子RDD的一个分区partion y依赖。窄依赖都是Map任务,不需要发生shuffle。因    此,窄依赖的Task一般都会被合成在一起,构成一个Stage。 运行模式       Spark的运行模式多种多样,在单机上既可以以本地模式运行,也可以以伪分布式模式运行。而当以分布式的方式运行在Cluster集群中时,底层的资源调度可以使用Mesos 或者是Hadoop Yarn ,也可以使用Spark自带的Standalone Deploy模式。       基本上,Spark的运行模式取决于传递给SparkContext的MASTER环境变量的值,个别模式还需要辅助的程序接口来配合使用,目前支持的Master字符串及URL包括: local 本地模式 ./bin/spark-submit --master local       # 只以单进程(没有并行化)运行 ./bin/spark-submit --master local[N]    # 以N(数字)个线程本地运行 ./bin/spark-submit --master local    # 以CPU个数个线程本地运行 spark://HOST:PORT Spark独立部署模式,需要部署Spark到相关节点,默认7077端口。 spark.master --master spark://xx:7077 mesos://HOST:PORT Mesos模式,需要部署Spark和Mesos到相关节点。 spark.master --master mesos://xx:5055 yarn-client SparkConext运行在本地,task运行在Yarn集群中,集群在HADOOP_CONF_DIR 中设置。 ./bin/spark-submit --master yarn-client yarn-cluster SparkContext和任务都运行在Yarn集群中,集群在HADOOP_CONF_DIR 中设置。 ./bin/spark-submit --master yarn-cluster 常用的模式一般是local和yarn-cluster,local用于本地调试,而yarn-cluster用于在YARN集群上生产环境跑作业。工作流程 无论运行在哪种模式下,Spark作业的执行流程都是相似的,主要有如下八步: 1.客户端启动,提交Spark Application, 一般通过spark-submit来完成。 2.Driver程序创建SparkContext,将其作为调度的总入口。 3.SparkContext在初始化过程中分别创建DAGScheduler(进行Stage调度)和TaskScheduler(进行Task调度)两个模块。 4.DAGScheduler进行Job的Stage划分。 5.DAGScheduler将Stage提交给TaskScheduler。 6.TaskScheduler向Executor发送命令,执行Task。 7.Driver管理Task状态。 8.Task完成,Stage完成,作业完成。

推荐了解热门学科

java培训Python人工智能Web前端培训PHP培训
区块链培训影视制作培训C++培训产品经理培训
UI设计培训新媒体培训软件测试培训Linux运维
大数据培训智能机器人软件开发




传智播客是一家致力于培养高素质软件开发人才的科技公司“黑马程序员”是传智播客旗下高端IT教育品牌。自“黑马程序员”成立以来,教学研发团队一直致力于打造精品课程资源,不断在产、学、研3个层面创新自己的执教理念与教学方针,并集中“黑马程序员”的优势力量,针对性地出版了计算机系列教材50多册,制作教学视频数+套,发表各类技术文章数百篇。

传智播客从未停止思考

传智播客副总裁毕向东在2019IT培训行业变革大会提到,“传智播客意识到企业的用人需求已经从初级程序员升级到中高级程序员,具备多领域、多行业项目经验的人才成为企业用人的首选。”

中级程序员和初级程序员的差别在哪里?
项目经验。毕向东表示,“中级程序员和初级程序员最大的差别在于中级程序员比初级程序员多了三四年的工作经验,从而多出了更多的项目经验。“为此,传智播客研究院引进曾在知名IT企业如阿里、IBM就职的高级技术专家,集中研发面向中高级程序员的课程,用以满足企业用人需求,尽快补全IT行业所需的人才缺口。

何为中高级程序员课程?

传智播客进行了定义。中高级程序员课程,是在当前主流的初级程序员课程的基础上,增加多领域多行业的含金量项目,从技术的广度和深度上进行拓展“我们希望用5年的时间,打造上百个高含金量的项目,覆盖主流的32个行业。”传智播客课程研发总监于洋表示。




黑马程序员热门视频教程

Python入门教程完整版(懂中文就能学会)零起点打开Java世界的大门
C++| 匠心之作 从0到1入门学编程PHP|零基础入门开发者编程核心技术
Web前端入门教程_Web前端html+css+JavaScript软件测试入门到精通


分享到:
在线咨询 我要报名
和我们在线交谈!