• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
导航菜单
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx
您的位置:首页 > 服务器 >云计算 > 【Spark】Spark应用执行机制,spark执行机制

【Spark】Spark应用执行机制,spark执行机制

作者:网友 字体:[增加 减小] 来源:互联网

本文主要包含spark原理 机制及应用,spark运行机制,spark工作机制,spark sql的执行计划,spark执行流程等服务器相关知识,网友希望可以进行参考

【Spark】Spark应用执行机制,spark执行机制


Spark应用概念

Spark应用(Application)是用户提交的应用程序。执行模式又Local、Standalone、YARN、Mesos。根据Spark Application的Driver Program是否在集群中运行,Spark应用的运行方式又可以分为Cluster模式和Client模式。
下面是Spark应用涉及的一些基本概念:

  • Application:Spark 的应用程序,用户提交后,Spark为App分配资源,将程序转换并执行,其中Application包含一个Driver program和若干Executor
  • SparkContext:Spark 应用程序的入口,负责调度各个运算资源,协调各个 Worker
    Node 上的 Executor
  • Driver Program:运行Application的main()函数并且创建SparkContext
  • RDD Graph:RDD是Spark的核心结构, 可以通过一系列算子进行操作(主要有Transformation和Action操作)。当RDD遇到Action算子时,将之前的所有算子形成一个有向无环图(DAG)。再在Spark中转化为Job,提交到集群执行。一个App中可以包含多个Job
  • Executor:是为Application运行在Worker node上的一个进程,该进程负责运行Task,并且负责将数据存在内存或者磁盘上。每个Application都会申请各自的Executor来处理任务
  • Worker Node:集群中任何可以运行Application代码的节点,运行一个或多个Executor进程

下面介绍Spark Application运行过程中各个组件的概念:

  • Job:一个RDD Graph触发的作业,往往由Spark Action算子触发,在SparkContext中通过runJob方法向Spark提交Job
  • Stage:每个Job会根据RDD的宽依赖关系被切分很多Stage, 每个Stage中包含一组相同的Task, 这一组Task也叫TaskSet
  • Task:一个分区对应一个Task,Task执行RDD中对应Stage中包含的算子。Task被封装好后放入Executor的线程池中执行
  • DAGScheduler:根据Job构建基于Stage的DAG,并提交Stage给TaskScheduler
  • TaskScheduler:将Taskset提交给Worker node集群运行并返回结果

Spark执行机制概况

Spark应用转换

RDD的Action算子触发Job的提交,提交到Spark中的Job生成RDD DAG,由DAGScheduler转化为Stage DAG,每个Stage中产生相应的Task集合,TaskScheduler将任务分发到Executor执行。 每个任务对应相应的一个数据块,使用用户定义的函数处理数据块。

Spark执行的底层实现

在Spark的底层实现中,通过RDD进行数据的管理,RDD中有一组分布在不同节点的数据块,当Spark的应用在对这个RDD进行操作时,调度器将包含操作的任务分发到指定的机器上执行,在计算节点通过多线程的方式执行任务。一个操作执行完毕,RDD便转换为另一个RDD,这样,用户的操作依次执行。Spark为了系统的内存不至于快速用完,使用延迟执行的方式执行,即只有操作累计到Action(行动),算子才会触发整个操作序列的执行,中间结果不会单独再重新分配内存,而是在同一个数据块上进行流水线操作。

Spark实现了分布式计算和任务处理,并实现了任务的分发、跟踪、执行等工作,最终聚合结果,完成Spark应用的计算。
对RDD的块管理通过BlockManger完成,BlockManager将数据抽象为数据块,在内存或者磁盘进行存储,如果数据不在本节点,则还可以通过远端节点复制到本机进行计算。
在计算节点的执行器Executor中会创建线程池,这个执行器将需要执行的任务通过线程池并发执行。

应用提交和执行方式

应用的提交包含以下两种方式:
* Driver进程运行在客户端,对应用进行管理监控
* 主节点指定某个Worker节点启动Driver,负责整个应用的监控

Driver进程是应用的主控进程,负责应用的解析、切分Stage并调度Task到Executor执行,包含DAGScheduler等重要对象。
下面是具体的介绍:

Driver进程运行在客户端


该方式应用执行流程:

Driver进程在Worker节点运行


该方式应用执行流程:

转载请注明作者Jason Ding及其出处
GitCafe博客主页(http://jasonding1354.gitcafe.io/)
Github博客主页(http://jasonding1354.github.io/)
CSDN博客(http://blog.csdn.net/jasonding1354)
简书主页(http://www.jianshu.com/users/2bd9b48f6ea8/latest_articles)
Google搜索jasonding1354进入我的博客主页

版权声明:本文为博主原创文章,未经博主允许不得转载。

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 【Spark】Spark应用执行机制,spark执行机制

相关文章

  • 与Greenplum度过的三个星期,greenplum三个星期
  • RPC原理,rpc
  • HIVE以及OOZIE添加第三方JAR包的方法,hiveoozie
  • hive之实现列转行,hive列转行
  • Spark性能优化:shuffle调优
  • apache hadoop-2.6.0-CDH5.4.1 安装笔记,hadoop2.6.0安装
  • 一步一步跟我学习hadoop(4)----hadoop Map/Reduce教程(1),hadoop----hadoop
  • hadoop-2.6.0 Unhealthy Nodes 问题,hadoop2.6.0安装
  • HIVE动态分区实战,hive动态实战
  • Hadoop之——Java操作HBase,hadoopjavahbase

文章分类

  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx

最近更新的内容

    • hive grouping sets 和 cube 用法,hivegrouping
    • Centos 64下实现socket通信,centos64下
    • [Sqoop]利用sqoop对mysql执行DML操作,sqoopdml
    • 2015年中国的云计算标准有哪些?,2015年中国标准
    • 云计算资源分享与下载,资源分享
    • 在linux下制作libxxx.so 动态库,linuxlibxxx.so
    • MongoDB Query 的几个方法,mongodbquery
    • sbt pom reader,sbtpom
    • NOSQL(六)集群并发计算模型Map-Reduce,nosqlmap-reduce
    • 你真的很熟分布式处理和事务吗?,事务

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有