Spark2:运行架构

简介: Spark2:运行架构

一、运行架构

1.概念

• Application: 用户基于spark的代码,由一个Driver和多个Executor组成。

• Executor: 在工作节点(如standalone的Worker和yarn的NM)上的进程,可以运行task,也可以将数据保存在内存和磁盘中。每个应用程序都有自己的Executors。

• Task: 最小的工作单元,会被送往executor执行。它也是Stage 的子集,以并行度(分区数)来衡量,分区数是多少,则有多少个task,一个 task 对应一个RDD分区 ,如果数据来自HDFS,一个分区的数据就是一个 split 的数据。

• Job: 一个Job有许许多多的Task,每一个Action操作都会触发一个Job,可以在driver日志中观察到。

• Stage: 是Job的子集,一个job被拆分成许多的Stage,一个Stage包含多个Task。Stage是提交作业的最小单位,Stage之间彼此依赖。Stage回到shuffle会被拆分。可以在driver日志中观察到。

2.运行流程

Spark组件将用户的应用程序分解为内部执行任务并提供执行容器。

  • Driver Program (驱动程序)
  • Executor

资源管理为Spark组件提供资源管理和调度。

  • YARN(通用)
  • Standalone(Spark自带)

整体流程

当一个Spark应用被提交时,首先需要为这个应用构建起基本的运行环境,即由任务控制节点(Driver)创建一个SparkContext,由SparkContext负责和资源管理器(Cluster Manager)的通信以及进行资源的申请、任务的分配和监控等。SparkContext会向资源管理器注册并申请运行Executor的资源;

资源管理器为Executor分配资源,并启动Executor进程,Executor运行情况将随着“心跳”发送到资源管理器上;

SparkContext根据RDD的依赖关系构建DAG图,DAG图提交给DAG调度器(DAGScheduler)进行解析,将DAG图分解成多个“阶段”(每个阶段都是一个任务集),并且计算出各个阶段之间的依赖关系,然后把一个个“任务集”提交给底层的任务调度器(TaskScheduler)进行处理;Executor向SparkContext申请任务,任务调度器将任务分发给Executor运行,同时,SparkContext将应用程序代码发放给Executor;

任务在Executor上运行,把执行结果反馈给任务调度器,然后反馈给DAG调度器,运行完毕后写入数据并释放所有资源。

注意事项

二、Spark集群模式

集群模式Cluster Mode:将Spark运行应用在YARN集群或者框架自身集群Standalone,及Apache Mesos集群,启动多个JVM进程运行Task程序。 (http://spark.apache.org/docs/2.4.3

三、执行组件

Spark核心组件包括RDD、Scheduler、Storage、Shuffle四部分。

1.RDD

RDD是Spark最核心最精髓的部分,spark将所有数据都抽象成RDD。

持久化

2.Scheduler

Scheduler是Spark的调度机制,分为DAGScheduler和TaskScheduler。

3.Storage

Storage模块主要管理缓存后的RDD、shuffle中间结果数据和broadcast数据。

4.Shuffle

Shuffle分为Hash方式和Sort方式,两种方式的shuffle中间数据都写本地盘。

5.与Hadoop的区别

Reduce操作生成的结果,spark是存放在内存中的,MapReduce是写HDFS的。所以用户的操作中涉及到的reduce操作越多,Spark比MapReduce写HDFS的次数就越少,Spark的性能优势就越大。

参考

https://zhuanlan.zhihu.com/p/162713938

教授大数据内存的黄老师的PPT

目录
相关文章
|
2月前
|
运维 Linux Apache
LAMP架构调优(二)——修改Apache运行用户
LAMP架构调优(二)——修改Apache运行用户
208 1
|
1月前
|
分布式计算 DataWorks 网络安全
DataWorks操作报错合集之还未运行,spark节点一直报错,如何解决
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
2月前
|
分布式计算 资源调度 Spark
Spark的一些问题汇总 及 Yarn与Spark架构的对比
Spark的一些问题汇总 及 Yarn与Spark架构的对比
32 0
|
2月前
|
分布式计算 资源调度 监控
Spark架构
【4月更文挑战第26天】架构对于技术来说,是技术的灵魂。
|
2月前
|
缓存 负载均衡 应用服务中间件
【分布式技术专题】「分析Web服务器架构」Tomcat服务器的运行架构和LVS负载均衡的运行机制(修订版)
在本章内容中,我们将深入探讨 Tomcat 服务器的运行架构、LVS 负载均衡的运行机制以及 Cache 缓存机制,并提供相应的解决方案和指导。通过理解这些关键概念和机制,您将能够优化您的系统架构,提高性能和可扩展性。
230 4
【分布式技术专题】「分析Web服务器架构」Tomcat服务器的运行架构和LVS负载均衡的运行机制(修订版)
|
2月前
|
机器学习/深度学习 存储 算法
【GPU】深入理解GPU硬件架构及运行机制
【GPU】深入理解GPU硬件架构及运行机制
489 0
|
2月前
|
分布式计算 资源调度 Kubernetes
Spark集群部署与架构
Spark集群部署与架构
|
2月前
|
NoSQL Java 关系型数据库
基于java Swing 和 mysql实现的飞机订票系统(源码+数据库+ppt+ER图+流程图+架构说明+论文+运行视频指导)
基于java Swing 和 mysql实现的飞机订票系统(源码+数据库+ppt+ER图+流程图+架构说明+论文+运行视频指导)
441 0
|
4天前
|
运维 Kubernetes 监控
深入解析微服务架构的演进与实践
本文旨在探究微服务架构从诞生到成熟的发展历程,分析其背后的技术推动力和业务需求,并结合具体案例,揭示实施微服务过程中的挑战与解决策略。通过对微服务架构与传统单体架构的对比,阐明微服务如何优化现代应用开发流程,提高系统的可扩展性、可维护性和敏捷性。
14 0
|
2天前
|
监控 负载均衡 安全
探索微服务架构中的API网关模式
【7月更文挑战第13天】在微服务架构的海洋中,API网关犹如一座灯塔,指引着服务间的通信和客户端请求。本文将深入剖析API网关的核心作用、设计考量以及实现策略,为构建高效、可靠的分布式系统提供实践指南。
18 10