spark学习笔记(1)

来源:互联网 发布:基本网络知识 编辑:程序博客网 时间:2024/06/05 18:17

基础概念

1.Application:与Hadoop MapReduce 类似,指的是用于编写的Spark应用程序,其中包含了一个Driver功能代码和分布在集群上多个节点上运行Exector代码。

2.Driver:运行上述Application的main()函数并创建SparkContext,为了准备Spark 应用程序的运行环境。由SparkContext负责与ClusterManager通信,运行资源的申请,任务的分配和监控等。当Executor部分运行完毕后,Driver同时负责将SparkContext关闭。通常用SparkContext代替Driver。

3.Executor:某个Application运行在worker节点上的一个进程,该进程负责运行某些Task,并且负责将数据存在内存或磁盘上

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

(1)Standalone:Spark原生的资源管理,有master负责资源符、的分配,可以在亚马逊的EC2上运行

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

(3)Hadoop Yarn:YARN的ResourceManager

5.Worker:集群中任何可以运行Application代码的节点,在Standalone中是指通过salve文件配置的worker节点;在Spark  on yarn中指的是NodeManager.

6.Task:被送往某个Executor上的工作单元,与Hadoop mapreduce中的map task 和reduce task概念一样,是运行application的基本单位,多个task组成一个stage

7.job:包含多个task组成的并行计算,往往由spark action 触发产生。一个application 可能产生多个job

8.RDD:spark的基本计算单元,可以通过一系列的算子进行操作。同时RDD是Spark最核心的部分,他表示已被分区的,被序列化的,不可变的,有容错机制的,并且能够并行操作的数据集合。其存储可以是内存,u、也可以是磁盘,也可以通过spark.storage.StorageLevel属性变量

9.stage:每个job会被拆分成许多组task,称为Stage。stage的划分及调度由DAGScheduler负责。stage分为非最终的Stage和最终的stage。stage的边界是发生shuffle的地方。

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

11.宽依赖与窄依赖:(参考:http://blog.csdn.net/houmou/article/details/52531205)

  • 窄依赖是指父RDD的每个分区只被子RDD的一个分区所使用,子RDD分区通常对应常数个父RDD分区(O(1),与数据规模无关)
  • 相应的,宽依赖是指父RDD的每个分区都可能被多个子RDD分区所使用,子RDD分区通常对应所有的父RDD分区(O(n),与数据规模有关)
  • 相比于宽依赖,窄依赖对优化很有利 ,主要基于以下两点:
    (1)宽依赖往往对应着shuffle操作,需要在运行过程中将同一个父RDD的分区传入到不同的子RDD分区中,中间可能涉及多个节点之间的数据传输;而窄依赖的每个父RDD的分区只会传入到一个子RDD分区中,通常可以在一个节点内完成转换。
    当RDD分区丢失时(某个节点故障),spark会对数据进行重算。
    (2)对于窄依赖,由于父RDD的一个分区只对应一个子RDD分区,这样只需要重算和子RDD分区对应的父RDD分区即可,所以这个重算对数据的利用率是100%的;
       对于宽依赖,重算的父RDD分区对应多个子RDD分区,这样实际上父RDD 中只有一部分的数据是被用于恢复这个丢失的子RDD分区的,另一部分对应子RDD的其它未丢失分区,这就造成了多余的计算;更一般的,宽依赖中子RDD分区通常来自多个父RDD分区,极端情况下,所有的父RDD分区都要进行重新计算。
    如下图所示,b1分区丢失,则需要重新计算a1,a2和a3,这就产生了冗余计算(a1,a2,a3中对应b2的数据)。

  • 12.DAGScheduler:根据job构建基于stage的DAG,并提交stage给TaskScheduler。其划分stage的依据是RDD之间的依赖关系

  • 13.TaskScheduler:将TaskSet提交给Worker(集群)运行,每个executor运行什么task就是在此处分配的

原创粉丝点击