Spark架构原理

前言

本文总结了Spark架构原理,其中主要包括五个组件:Driver、Master、Worker、Executor和Task,简要概括了每个组件是干啥的,并总结提交spark程序之后,这五个组件运行的详细步骤。

1、流程图

为了直观,就把流程图放在最前面了

2、Driver

driver是一个进程,我们编写的spark程序运行在driver上,由dirver进程执行,driver是作业的主进程,具有main函数,是程序的入口点,driver进程启动后,向master发送请求,进行注册,申请资源,在后面的executor启动后,会向dirver进行反注册,dirver注册了executor后,正式执行spark程序,读取数据源,创建rdd或dataframe,生成stage,提交task到executor

3、Master

Master是个进程,主要负责资源的调度和分配,集群的监控等。

4、Worker

worke是个进程,主要负责两个,一个是用自己的内存存储RDD的某个或某些partition,另一个是启动其他进程和线程,对RDD上的partition进行处理和计算。

5、Executor

Executor是个进程,一个Executor执行多个Task,多个Executor可以并行执行,可以通过–num-executors来指定Executor的数量,但是经过我的测试,Executor最大为集群可用的cpu核数减1。

6、Task

Task是个线程,具体的spark任务是在Task上运行的,某些并行的算子,有多少个分区就有多少个task,但是有些算子像take这样的只有一个task。

7、详细的流程

1、Driver进程启动之后,会进行一些初始化的操作,在这个过程中,会发送请求到master 2、Master,接收到Driver的注册之后,发送请求给Worker,进行资源的调度和分配,也就是Executor的分配 3、Worker接收到master的请求,启动Executor 4、Executor启动之后,会向Driver进行反注册 5、Driver注册了Executor之后,正式开始执行Spark程序,首先读取数据源,创建RDD 6、HDFS文件被读取到多个Worker节点,形成RDD 7、在worker上生成RDD之后,Driver会根据我们对RDD定义的操作,提交相应数量的Task到Executor上

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏行者悟空

Hadoop 2.x 伪分布式环境搭建

1062
来自专栏赵俊的Java专栏

Hadoop 伪分布式环境搭建

1462
来自专栏行者悟空

Spark之集群概述

1423
来自专栏L宝宝聊IT

案例:HDFS分布式文件系统

1925
来自专栏Hadoop实操

如何迁移CDH的opt目录

部分企业对OS的目录空间划分有严格的要求(如:/、/opt、/var等目录),CDH安装的安装目录默认是在/opt下,随着版本的升级和新组件的安装占用了大量的/...

1364
来自专栏AILearning

Apache Zeppelin 中 HDFS文件系统 解释器

概述 Hadoop文件系统是hadoop项目的分布式,容错文件系统的一部分,通常用作Hadoop MapReduce和Apache Spark或Allux...

2455
来自专栏Hadoop实操

如何使用curl命令调用CM的API动态配置Yarn资源池

在使用CDH集群大数据平台过程中,用户会有需求在自己的统一管理平台上通过API接口能够动态的设置Yarn资源池,Cloudera Manager提供了丰富的AP...

1391
来自专栏岑玉海

Spark硬件配置推荐

1、存储系统   如果可以的话,把Spark的hadoop的节点安装在一起,最容易的方式是用standalone的模式安装,用mapred.child.java...

3507
来自专栏Hadoop实操

如何在CDSW上调试失败或卡住的Spark应用

默认情况下,CDSW会话中的Spark应用程序只显示ERROR级别的日志,当作业出现异常或卡住时无法查看作业运行详细日志及异常堆栈信息,不能根据日志的上下文正确...

1313
来自专栏Hadoop实操

Impala动态资源池及放置规则使用

Fayson在前面的文章介绍了《如何启用Impala的动态资源池》。管理员可以通过Impala的动态资源池、放置规则及ACL控制不同的用户对Impala资源使用...

2504

扫码关注云+社区