Spark原理篇之工作原理

1 Spark背景

      Spark是一个加州大学伯克利分校(UC Berkeley AMP)开发的一个分布式数据快速分析项目。它的核心技术是弹性分布式数据集(Resilient distributed datasets),提供了比Hadoop更加丰富的MapReduce模型,可以快速在内存中对数据集进行多次迭代,来支持复杂的数据挖掘算法和图计算算法。

2 Spark工作原理

2.1 Spark专业术语定义

(1)Application:Spark应用程序
      指的是用户编写的Spark应用程序,包含Driver功能代码和分布在集群中多个节点上运行的Executor代码。Spark应用程序,由一个或多个作业Job组成,如下图所示: 在这里插入图片描述
(2)Driver:驱动程序
      Spark中的Driver即运行上述Application的Main()函数并且创建SparkContext,其中创建SparkContext的目的是为了准备Spark应用程序的运行环境。在Spark中由SparkContext负责和ClusterManager通信,进行资源的申请、任务的分配和监控等;当Executor部分运行完毕后,Driver负责将SparkContext关闭。通常SparkContext代表Driver,如下图所示:
在这里插入图片描述
(3)Cluster Manager:资源管理器
      指的是在集群上获取资源的外部服务,常用的有:Local,Spark单机运行,一般用于开发测试;Standalone,Spark原生的资源管理器,由Master负责资源的分配;Hadoop Yarn,由Yarn中的ResearchManager负责资源的分配;由Messos中的Messos Master负责资源管理。
(4)Executor:执行器
      Application运行在Worker节点上的一个进程,该进程负责运行Task,并且负责将数据存在内存或者磁盘上,每个Application都有各自独立的一批Executor,如下图所示:
在这里插入图片描述
(5)Worker:计算节点
      集群中任何可以运行Application代码的节点,类似于Yarn中的NodeManager节点。在Standalone模式中指的是通过Slave文件配置的Worker节点,在Spark on Yarn模式汇总指的就是NodeManager节点,在Spark on Messos模式中指的就是Messos Slave节点,如下图所示:
在这里插入图片描述
(6)RDD (Resilient distributed datasets):弹性分布式数据集
      Spark的基本计算单元,可以通过一系列算子进行操作(主要有Transformation和Action操作),如下图所示:
在这里插入图片描述
(7)窄依赖
      父RDD每一个分区最多被一个子RDD的分区所用;表现为一个父RDD的分区对应于一个子RDD的分区,或两个父RDD的分区对应于一个子RDD的分区。如图所示: 在这里插入图片描述
      一个Stage内的窄依赖进行pipeline操作(Spark为了加快计算,做的优化),举例:
      ① 优化:1+1+1+1=4;
      ② 未优化:1+1=2,2+1=3,3+1=4。
(8)宽依赖
      父RDD的每个分区都可能被多个子RDD分区所使用,子RDD分区通常对应所有的父 RDD分区。如图所示: 在这里插入图片描述
      常见的宽窄依赖有:map、filter、union、mapPartitions、mapValues、join(父RDD是hash-partitioned:如果joinAPI之前被调用的RDD API是宽依赖【存在shuffle】,而且两个join的RDD的分区数量一致,join结果的RDD分区数量也一样,这个时候join API是窄依赖)。
      常见的宽依赖有:groupByKey、partitionBy、reduceByKey、join(父RDD不是hash-partitioned:除此之外的,RDD的join API都是宽依赖)。
      对hash-partitioned想要更详细的理解,请参考文章[4][5]。
(9)DAG (Directed Acycl

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值