当前位置: 首页 > news >正文

Spark2.0

目录

10.3 Spark运行架构

10.3.1 基本概念

10.3.2 架构设计

​编辑

10.3.3 Spark运行基本流程

Spark运行架构特点


10.3 Spark运行架构

10.3.1 基本概念

RDD :是 Resillient Distributed Dataset (弹性分布式数据集)的简称,是分布式内存的一个抽象概念, 提供了一种高度受限的共享内存模型
DAG :是 Directed Acyclic Graph (有向无环图)的简称,反映 RDD 之间的依赖关系
Executor :是运行在工作节点( WorkerNode )的一个进程,负责运行 Task

Application :用户编写的 Spark 应用程序
Task :运行在 Executor 上的工作单元
Job :一个 Job 包含多个 RDD 及作用于相应 RDD 上的各种操作
Stage :是 Job 的基本调度单位,一个 Job 会分为多组 Task ,每组 Task 被称为 Stage ,或者也被称为 TaskSet ,代表了一组关联的、相互之间没有 Shuffle 依赖关系的任务组成的任务

10.3.2 架构设计

Spark 运行架构包括集群资源管理器( Cluster Manager )、运行作业任务的工作 节点 Worker Node )、每个应用的任务控制 节点 Driver )和每个工作节点上负责具体任务的执行进程( Executor 。其中,集群管理器 可以自带 使用 Mesos YARN 等资源管理框架。

Hadoop MapReduce计算框架相比,Spark所采用的Executor有两个优点:

Ø 一是利用多线程来执行具体的任务,减少任务的启动 开销。
Ø 二是 Executor 中有一个 BlockManager 存储模块,会将内存和磁盘共同作为存储设备,有效减少 IO 开销。
一个 Application 由一个 Driver 和若干个 Job 构成,一个 Job 由多个 Stage 构成,一个 Stage 由多个没有 Shuffle 关系的 Task 组成
当执行一个 Application 时, Driver 会向集群管理器申请资源,启动 Executor ,并向 Executor 发送应用程序代码和文件,然后在 Executor 上执行 Task ,运行结束后,执行结果会返回给 Driver 或者写到 HDFS 或者其他数据库

10.3.3 Spark运行基本流程

1)首先为应用构建起基本的运行环境,即由Driver创建一个SparkContext,进行资源的申请、任务的分配和监控

2)资源管理器为Executor分配资源,并启动Executor进程

3SparkContext根据RDD的依赖关系构建DAG图,DAG图提交给DAGScheduler解析成Stage,然后把一个个TaskSet提交给底层调度器TaskScheduler处理;ExecutorSparkContext申请TaskTask SchedulerTask发放给Executor运行,并提供应用程序代码

4TaskExecutor上运行,把执行结果反馈给TaskScheduler,然后反馈给DAGScheduler,运行完毕后写入数据并释放所有资源

Spark运行架构特点

总体而言,Spark运行架构具有以下特点:

1)每个Application都有自己专属的Executor进程,并且该进程在Application运行期间一直驻留。Executor进程以多线程的方式运行Task

2Spark运行过程与资源管理器无关,只要能够获取Executor进程并保持通信即可

3Task采用了数据本地性和推测执行等优化机制

数据本地 性,指的是尽量计算移动到数据所在的节点,即“计算向数据靠拢”,因为移动计算比移动数据比所占的网络资源要少的多。
Spark 还采用了延时调度机制,可以在更大程度上实现执行过程优化。比如数据节点当前正被其他的任务占用,那么在这种情况下是否需要将数据移动到其他的空闲节点上?不一定。

相关文章:

  • 简单爬虫案例——爬取快手视频
  • BMA530 运动传感器
  • 【LeetCode】976. 三角形的最大周长
  • Kafka 位移
  • rpm包下载
  • 自然语言处理基本知识(1)
  • 【CSS】深入探讨 CSS 的 `calc()` 函数
  • 熊猫烧香是什么?
  • 什么是CC攻击,如何防止网站被CC攻击的方法
  • Spring Cloud LoadBalancer基础入门与应用实践
  • 如何获得更高质量的回答-chatgpt
  • vue为啥监听不了@scroll
  • word2016中新建页面显示出来的页面没有页眉页脚,只显示正文部分。解决办法
  • 事务的特性-原子性(Atomicity)、一致性(Consistency)、隔离性(Asolation)、持久性(Durability)
  • [ROS 系列学习教程] 建模与仿真 - 使用 ros_control 控制差速轮式机器人
  • AWS实战 - 利用IAM对S3做访问控制
  • CentOS6 编译安装 redis-3.2.3
  • Django 博客开发教程 8 - 博客文章详情页
  • golang 发送GET和POST示例
  • Javascript基础之Array数组API
  • js算法-归并排序(merge_sort)
  • php面试题 汇集2
  • React-flux杂记
  • React-生命周期杂记
  • vuex 学习笔记 01
  • 基于组件的设计工作流与界面抽象
  • ------- 计算机网络基础
  • 讲清楚之javascript作用域
  • 解决jsp引用其他项目时出现的 cannot be resolved to a type错误
  • 解析带emoji和链接的聊天系统消息
  • 每天10道Java面试题,跟我走,offer有!
  • 思考 CSS 架构
  • 为物联网而生:高性能时间序列数据库HiTSDB商业化首发!
  • - 语言经验 - 《c++的高性能内存管理库tcmalloc和jemalloc》
  • 怎样选择前端框架
  • LIGO、Virgo第三轮探测告捷,同时探测到一对黑洞合并产生的引力波事件 ...
  • 容器镜像
  • ​Linux Ubuntu环境下使用docker构建spark运行环境(超级详细)
  • (14)学习笔记:动手深度学习(Pytorch神经网络基础)
  • (iPhone/iPad开发)在UIWebView中自定义菜单栏
  • (pojstep1.1.2)2654(直叙式模拟)
  • (附源码)ssm基于微信小程序的疫苗管理系统 毕业设计 092354
  • (规划)24届春招和25届暑假实习路线准备规划
  • (蓝桥杯每日一题)平方末尾及补充(常用的字符串函数功能)
  • (四)TensorRT | 基于 GPU 端的 Python 推理
  • (转)关于pipe()的详细解析
  • .[hudsonL@cock.li].mkp勒索加密数据库完美恢复---惜分飞
  • .net安装_还在用第三方安装.NET?Win10自带.NET3.5安装
  • .NET处理HTTP请求
  • @JSONField或@JsonProperty注解使用
  • [ JavaScript ] JSON方法
  • [ vulhub漏洞复现篇 ] Jetty WEB-INF 文件读取复现CVE-2021-34429
  • [⑧ADRV902x]: Digital Pre-Distortion (DPD)学习笔记
  • [ai笔记4] 将AI工具场景化,应用于生活和工作
  • [BZOJ3223]文艺平衡树