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、Spark

day3-Akka实现RPC通信框架

代码: https://github.com/cyofeiyue/MyRPC 1.Akka配置信息 //Master akka.actor.provider ...

3318
来自专栏公有云大数据平台弹性MapReduce

多EMR-Presto集群共享EMR-Hive集群配置方案

EMR的某些客户的数据仓库使用EMR-Hive存储,presto连接hive快速ad-hoc查询,但是有些场景下不同的业务部门有各自不同的使用presto查询需...

2068
来自专栏Hadoop实操

如何指定Spark1作业中Driver和Executor使用指定范围内端口

在CDH集群中提交Spark作业,大家也都知道Spark的Driver和Executor之间通讯端口是随机的,Spark会随选择1024和65535(含)之间的...

925
来自专栏有困难要上,没有困难创造困难也要上!

使用docker-compose创建hadoop集群

1764
来自专栏Hadoop实操

如何使用Cloudera Manager禁用YARN的HA

前面Fayson写过《如何使用Cloudera Manager启用YARN的HA》。本篇文章主要讲述如何使用Cloudera Manager禁用YARN的HA。

3245
来自专栏Spark生态圈

Spark Streaming管理Kafka偏移量前言从ZK获取offset

为了让Spark Streaming消费kafka的数据不丢数据,可以创建Kafka Direct DStream,由Spark Streaming自己管理of...

693
来自专栏Hadoop实操

如何在CDH集群中部署Kafka Manager

为了能够方便的查看及管理Kafka集群,yahoo提供了一个基于Web的管理工具(Kafka-Manager)。这个工具可以方便的查看集群中Kafka的Topi...

1322
来自专栏Hadoop实操

如何查看集成Sentry后Hive作业的真实用户

在CDH集群启用Sentry服务后,需要关闭Hive的启用模拟功能,hive.server2.enable.impersonation设为false,这会导致任...

4415
来自专栏云计算

在Hadoop YARN群集之上安装,配置和运行Spark

Spark是一种通用的集群计算系统。它可以在从单个节点到数千个分布式节点的集群上部署和运行并行应用程序。Spark最初设计用于运行Scala应用程序,但也支持J...

541
来自专栏有困难要上,没有困难创造困难也要上!

Hive入门

3626

扫码关注云+社区