Spark源码解析---Spark执行的架构
来源:互联网 发布:淘宝店家推广 编辑:程序博客网 时间:2024/05/14 07:51
Spark执行的架构
Spark应用程序作为独立的进程运行在集群上,由主程序(称为驱动程序Driver Program)中的SparkContext对象协调。
具体来说,要在集群上运行,SparkContext可以连接到几种类型的集群管理器(Spark自己的standalone cluster manager,Mesos或YARN),它们跨应用程序分配资源。 一旦连接,Spark将收集集群中的节点上的执行程序,这些进程是运行计算和存储应用程序数据的进程。 接下来,它将您的应用程序代码(由JAR或Python文件传递给SparkContext定义)发送给executors。 最后,SparkContext将任务发送给executors运行。
有关这种架构有几件有用的事情要注意:
1、每个应用程序都获得自己的执行程序进程,这些进程在整个应用程序的持续时间内保持不变,并在多线程中运行任务。 这有利于将应用程序彼此隔离,在 scheduling side (每个驱动程序安排其自己的任务)和executor side (来自不同应用程序的任务在不同的JVM中运行)。 但是,这也意味着数据不能在不写入外部存储系统的情况下在不同的Spark应用程序(SparkContext的实例)之间共享。
2、Spark与底层集群管理器无关。 只要可以获取executor 进程,并且彼此进行通信,即使在也支持其他应用程序(例如Mesos / YARN)的集群管理器上运行它也是比较容易的。
3、Driver必须在其生命周期中侦听并接收来自executor的传入连接(例如,请参阅网络配置部分中的spark.driver.port)。 因此,驱动程序必须能够从工作节点网络寻址。
4、因为驱动程序调度集群上的任务,所以它应该靠近工作节点运行,最好在同一个局域网上运行。 如果您想要远程发送请求到集群,最好是向驱动程序打开一个RPC,并从附近提交操作,而不是在远离工作节点的地方运行驱动程序。
Job Scheduling
Overview
Spark有几个用于在计算之间调度资源的功能。 首先,请记住,如集群模式概述所述,每个Spark应用程序(SparkContext的实例)运行一组独立的执行程序进程。 Spark运行的集群管理器提供了跨应用程序进行调度的功能。 第二,在每个Spark应用程序中,如果不同的线程提交了多个“作业”(Spark操作)可能会同时运行。 如果您的应用程序通过网络提供请求,这是很常见的。 Spark包括一个公平的调度程序来调度每个SparkContext中的资源。
阅读全文
0 0
- Spark源码解析---Spark执行的架构
- Spark源码走读之 -- sql的解析与执行
- Spark源码解析-spark-shell
- Spark执行模式解析
- Spark执行模式解析
- spark架构解析
- spark的任务执行流程解析
- spark源码解析1
- spark rdd 源码解析
- Spark源码解析
- Spark源码解析:RDD
- Spark源码解析:DStream
- [spark] Checkpoint 源码解析
- spark源码阅读二-spark job执行
- spark worker的原理和源码解析
- Spark技术内幕:Worker源码与架构解析
- Apache Spark源码走读之11 -- sql的解析与执行
- Spark源码-SparkContext源码解析
- A. Snacktower
- 作为前端人员,css的这3个新特性你掌握了吗?
- 程序猿职业生涯的迷惘与野望
- Spark性能优化指南——基础篇
- 单片机外设LCD1602液晶屏的介绍
- Spark源码解析---Spark执行的架构
- 两种实现CircleImageView的方式
- ld: warning: cannot find entry symbol _start; defaulting to 00000000004002a0
- 重构大型业务型写接口-并行处理注意点
- DWZ 实现批量修改功能。
- 使用Ionic2开发跨平台App(一)
- linux下IPTABLES配置详解
- 软件开发概述
- Android模拟按键