打好基础,别小瞧它!

  spark的运行模式多种多样,在单机上既可以本地模式运行,也可以伪分布模式运行。而当以分布式的方式在集群中运行时。底层的资源调度可以使用Mesos或者Yarn,也可使用spark自带的Standalone模式。

  1、Application : Application的概念和Hadoop MapReduce中的类似,都是用户编写的Spark应用程序,其中包含了一个Driver功能的代码和分布在集群中多个节点上运行的Executor代码。

  

  2、Driver : 使用Driver这一概念的分布式框架很多,比如Hive等。 Spark中的Driver即运行Application的main()函数并创建SparkContext,创建SparkContext的目的是为了准备Spark应用程序的运行环境。在Spark中由SparkContext负责与ClusterManager通信,进行资源的申请、任务的分配和监控等。当Executor部分运行完毕后,Driver同时负责将SparkContext关闭。通常用SparkContext代表Driver。

  3、Executor : 某个Application运行在Worker节点上的一个进程,该进程负责运行某些Task,并且负责将数据存在内存或者磁盘上,每个Application都有各自独立的一批Executor。 在Spark on Yarn模式下其进程名称为CoarseGrainedExecutor Backend,类似于Hadoop MapReduce中的YarnChild。一个CoarseGrainedExecutor  Backend进程有且仅有一个executor对象,它负责将Task包装成taskRunner,并从线程池抽取出一个空闲线程运行Task。这样,每个CoarseGrainedExecutor  Backend能并行运行Task的数量就取决于分配给它的CPU的个数了。

  

  4、Cluster Manager : 指的是在集群上获取资源的外部服务,目前有三种类型:

    Standalone : Spark原生的资源管理,由Master负责资源的分配,可以在亚马逊的EC2上运行。

    Apache Mesos : 与Hadoop MapReduce兼容性良好的一种资源调度框架。

      Hadoop Yarn  : 主要是指的Yarn中的ResourceManager。

  5、Worker  : 集群中任何可以运行Application代码的节点,类似于Yarn中的NodeManager节点。在Standalone模式中指的就是通过slave文件配置的Worker节点,在Spark on Yarn模式中指的就是NodeManager节点。

  6、Task  :  被送到某个Executor上的工作单元,和Hadoop MapReduce中的MapTask和ReduceTask概念一样,是运行Application的基本单元多个Task组成一个Stage,而Task的调度和管理等由下面的TaskScheduler负责。

  7、Job  : 包含多个Task组成的并行计算,往往由Spark Action触发产生。一个Application中可能会产生多个Job

  8、Stage : 每个Job会拆分很多组Task,作为一个TaskSet,其名称为Stage。Stage的划分或调度由下面的DAGScheduler负责。Stage有非最终的Stage(即 Shuffle Map Stage)和最终的Stage(即Result Stage)两种。Stage的边界就是发生Shuffle的地方。

  9、RDD :Spark的基本计算单元,可以通过一系列算子进行操作(主要有Transformation 和Action操作)。同时,RDD是Spark最核心的东西,它表示已被分区、被序列化的、不可变的、有容错机制的,并且能够被并行操作的数据集合。其存储级别可以是内存,也可以是磁盘,可通过spark.storage.StorageLevel属性配置。

  10、共享变量 :在Spark Application运行时,可能需要一些变量,提供给Task 或Driver等使用。 Spark提供了两种共享变量,一种是可以缓存到各个节点的广播变量,另一种是只支持加法操作,可以实现求和的累加变量。

  11、宽依赖 : 与Hadoop MapReduce中Shuffle的数据依赖相同,宽依赖需要计算好所有父RDD对应分区的数据,然后在节点之间进行Shuffle。

  12、窄依赖: 指某个具体的RDD,其分区partitoin a最多被子RDDD中的一个分区partitoin b依赖。此种情况只有Map任务,是不需要发生Shuffle过程的。

  13、DAGScheduler : 根据Job构建基于Stage的DAG,并提交Stage给TaskScheduler。其划分Stage的依据是RDD之间的依赖关系。

  14、TaskScheduler : 将Taskset提交给Worker(集群)运行,每个Executor运行什么Task就是在此处分配的。

最新文章

  1. HDU 1754 I Hate It
  2. oracle报错:ORA-28000: the account is locked
  3. Servlet 过滤器
  4. SQL SERVER大数据分页
  5. 客户端技术:Cookie 服务端技术:HttpSession
  6. 简单的webservice
  7. android命令行网络时间同步
  8. oracle 处理时间和金额大小写的相关函数集合
  9. caffe+GPU︱AWS.G2+Ubuntu14.04+GPU+CUDA8.0+cudnn8.0
  10. Mac上使用虚拟机搭建Hadoop集群
  11. bzoj千题计划275:bzoj4817: [Sdoi2017]树点涂色
  12. Batch训练的反向传播过程
  13. git rebase之前需要commit才行
  14. Linux下定时备份文件
  15. 3537. 【NOIP2013提高组day2】华容道(搜索 + 剪枝)
  16. 我的mac下有关php扩展的安装
  17. eclispe集成Scalas环境后,导入外部Spark包报错:object apache is not a member of package org
  18. cdn贝四层协议配置端口映射TCP端口转发
  19. Visual Stuido插件大全
  20. Android+Servlet+MySql+JSON实现简单的数据查询操作--C/S架构

热门文章

  1. 1031. Hello World for U
  2. Mozilla新特性只支持https网站
  3. 有一张表里面有上百万的数据,在做查询的时候,如何优化?从数据库端,java端和查询语句上回答
  4. jQuery WeUI 组件下拉刷新和滚动加载的实现
  5. 【tomcat】如何修改tomcat的默认项目
  6. 【Nginx】进程模型
  7. 【Cocos2dx游戏开发】CCNotificationCenter传递消息和数据
  8. 金典 SQL笔记(6)
  9. hdu 1024 Max Sum Plus Plus (子段和最大问题)
  10. jedis 2.7.2 jar