RDD机制实现模型Spark初识

Spark简介

Spark是基于内存计算的大数据分布式计算框架。Spark基于内存计算,提高了在大数据环境下数据处理的实时性,同时保证了高容错性和高可伸缩性。
       在Spark中,通过RDD(Resilient Distributed Dataset,弹性分布式数据集)来进行计算,这些分布式集合,并行的分布在整个集群中。RDDs是Spark分发数据和计算的基础抽象类。

RDD属性:

  1. - A list of partitions
  2. - A function for computing each split
  3. - A list of dependencies on other RDDs
  4. - Optionally, a Partitioner for key-value RDDs (e.g. to say that the RDD is hash-partitioned)
  5. - Optionally, a list of preferred locations to compute each split on (e.g. block locations for an HDFS file)

Spark术语

Application:用户自定义的Spark程序,用户提交后,Spark为App分配资源将程序转换并执行。
       Driver Program:运行Application的main()函数并且创建SparkContext。
       SparkContext:是用户逻辑与Spark集群主要的交互接口,它会和Cluster Manager进行交互,负责计算资源的申请等。
       Cluster Manager:资源管理器,负责集群资源的管理和调度,支持的有:Standalone,Mesos和YARN。在standalone模式中即为Master主节点,控制整个集群,监控Worker。在YARN模式中为资源管理器。
       Worker Node:从节点,负责控制计算节点,启动Executor或Driver。在YARN模式中为NodeManager,负责计算节点的控制。
       Executor:执行器,是为某Application运行在worker node上的一个进程,该进程里面会通过线程池的方式负责运行任务,并负责将数据存在内存或者磁盘上。每个Application拥有独立的一组executors。
       RDD DAG:当RDD遇到Action算子,将之前的所有算子形成一个有向无环图(DAG)。再在Spark中转化为Job,提交到集群进行执行。一个App可以包含多个Job。
       Job:一个RDD Graph触发的作业,往往由Spark Action算子触发,在SparkContext中通过runJob()向Spark提交Job。
       Stage:每个Job会根据RDD的宽依赖关系被切分成很多Stage,每个Stage中包含一组相同的Task,这一组Task也叫TaskSet。
       Task:一个分区对应一个Task,Task执行RDD中对应Stage中所包含的算子。Task被封装好后放入Executor的线程池中执行。
       DAG Scheduler:根据Job构建基于Stage的DAG,并提交Stage给TaskScheduler。
       TaskScheduler:将Task分发给Executor执行。
       SparkEnv:线程级别的上下文,存储运行时的重要组件的引用。

Spark架构


        
       Client提交Application,用户程序中会创建一个SparkContext,新创建的SparkContext会根据用户在编程的时候设置的参数,或者是系统默认的配置连接到Cluster Manager上。
       Cluster Manager找到一个Worker启动Driver,Driver向Cluster Manager或者资源管理器申请资源,之后将应用转化为RDD Graph,再由DAGScheduler将RDD Graph转化为Stage的有向无环图(taskset)提交给TaskScheduler,由TaskScheduler提交任务(Task)给Executor进行执行。
       Executor在接收到Task之后,会下载Task的运行时依赖的包和库,准备好Task运行环境所需要的信息之后,就会在线程池中执行task。task在运行的时候会把状态以及结果汇报给Driver。
       Driver会根据收到的Task的运行状态处理不同的状态更新,Task分为两种,一种是Shuffle Map Task,它实现数据的从新洗牌,在所有stage中,除最后一个之外,所有的stage都成为Shuffle阶段,结果会保存在Executor的本地文件系统中,另一种,也就是最后一个stage称为:result Task,它负责生成结果数据。
       Driver会不断的调用Task,将Task发送到Executor执行,在所有的Task都正确执行或者超过执行次数的限制仍然没有执行成功时停止。

注意:Spark程序是在注册时完成资源分配的。在Worker上启动Executor,分配多少core,这些内容都是在程序启动初始化的时候完成的,而不是在工作过程中完成的。程序向Master注册,Master分配资源后交给 CoarseGrainedSchedulerBackend下的子类:SparkDeploySchedulerBackend 管理。然后是Driver的DAG的划分,然后交给DAG Scheduler(Standalone模式下就是TaskSchedulerImpl),TaskSchedulerImpl通过SchedulerBackend获得资源,把具体的任务分配到具体的机器(Executor)上。

时间: 2024-11-22 19:15:16

RDD机制实现模型Spark初识的相关文章

【Spark】RDD机制实现模型

RDD渊源 弹性分布式数据集(RDD),它是MapReduce模型一种简单的扩展和延伸,RDD为了实现迭代.交互性和流查询等功能,需要保证RDD具备在并行计算阶段之间能够高效地数据共享的功能特性.RDD运用高效的数据共享概念和类似于MapReduce的操作方式,使得所有的计算工作可以有效地执行,并可以在当前特定的系统中获得关键性的优化. RDD是一种有容错机制的特殊集合,可以分布在集群的节点上,以函数式编操作集合的方式,进行各种并行操作.可以将RDD理解为一个具有容错机制的特殊集合,它提供了一种

spark初识

随笔说明:由于参加了上海交大组织的飞谷云项目,而且报名第三组:基于Spark的机器学习.于是打算先花时间把Spark的基础学习学习.这次学习的参考书选择的是Spark的官方文档(这个肯定是最权威的)和机械工业的<Spark大数据处理   技术.应用与性能优化>:届时肯定还有项目组提供的学习资料. 1.Spark简介 1.1概念 Spark是基于内存计算的大数据并行计算框架.它基于内存计算,提高了实时性,保证了高容错性和高可伸缩性,允许用户将它部署在大量廉价硬件之上,形成集群. Spark之于H

Scala学习之路 (一)Spark初识

一.官网介绍 官网地址:http://spark.apache.org/ Apache Spark™是用于大规模数据处理的统一分析引擎. 从右侧最后一条新闻看,Spark也用于AI人工智能 spark是一个实现快速通用的集群计算平台.它是由加州大学伯克利分校AMP实验室 开发的通用内存并行计算框架,用来构建大型的.低延迟的数据分析应用程序.它扩展了广泛使用的MapReduce计算 模型.高效的支撑更多计算模式,包括交互式查询和流处理.spark的一个主要特点是能够在内存中进行计算,及时依赖磁盘进

Spark学习(一) Spark初识

一.官网介绍 1.什么是Spark 官网地址:http://spark.apache.org/ Apache Spark™是用于大规模数据处理的统一分析引擎. 从右侧最后一条新闻看,Spark也用于AI人工智能 spark是一个实现快速通用的集群计算平台.它是由加州大学伯克利分校AMP实验室 开发的通用内存并行计算框架,用来构建大型的.低延迟的数据分析应用程序.它扩展了广泛使用的MapReduce计算 模型.高效的支撑更多计算模式,包括交互式查询和流处理.spark的一个主要特点是能够在内存中进

Spark学习之路 (一)Spark初识 [转]

官网介绍 什么是Spark 官网地址:http://spark.apache.org/ Apache Spark?是用于大规模数据处理的统一分析引擎. 从右侧最后一条新闻看,Spark也用于AI人工智能. spark是一个实现快速通用的集群计算平台.它是由加州大学伯克利分校AMP实验室 开发的通用内存并行计算框架,用来构建大型的.低延迟的数据分析应用程序.它扩展了广泛使用的MapReduce计算模型.高效的支撑更多计算模式,包括交互式查询和流处理.spark的一个主要特点是能够在内存中进行计算,

spark快速入门与WordCount程序机制深度解析 spark研习第二季

2.spark wordCount程序深度剖析 标签: spark 一.Eclipse(scala IDE)开发local和cluster (一). 配置开发环境 要在本地安装好java和scala. 由于spark1.6需要scala 2.10.X版本的.推荐 2.10.4,java版本最好是1.8.所以提前我们要需要安装好java和scala并在环境变量中配置好. 下载scala IDE for eclipse安装 连接:http://scala-ide.org/download/sdk.h

全栈项目|小书架|服务器开发-Koa2中间件机制洋葱模型了解一下

KOA2 是什么? Koa是一个新的 web 框架,由 Express 幕后的原班人马打造, 致力于成为 web 应用和 API 开发领域中的一个更小.更富有表现力.更健壮的基石. 通过利用 async函数,Koa帮你丢弃回调函数,并有力地增强错误处理. Koa 并没有捆绑任何中间件, 而是提供了一套优雅的方法,帮助您快速而愉快地编写服务端应用程序. 为什么产生? 笔者对这几个框架都不熟,这里就不误人子弟了.可以看看下面一些大佬的介绍. Koa是由Express的原班人马打造,那么他们为什么不将

Linux高并发机制——epoll模型

epoll是一个特别重要的概念,常常用于处理服务端的并发问题.当服务端的在线人数越来越多,会导致系统资源吃紧,I/O效率越来越慢,这时候就应该考虑epoll了.epoll是Linux内核为处理大批句柄而作改进的poll,是Linux特有的I/O函数.其特点如下: 1.epoll是Linux下多路复用IO接口select/poll的增强版本.其实现和使用方式与select/poll有很多不同,epoll通过一组函数来完成有关任务,而不是一个函数. 2.epoll之所以高效,是因为epoll将用户关

从头认识java-17.2 基本的线程机制(1)-初识多线程-2

接着上一个章节,我们这一章节介绍一下多线程的注意点. 线程间执行的顺序和时间是不同的 我们修改一下上一章节的代码: package com.ray.ch17; public class Test { public static void main(String[] args) { for (int i = 5; i < 8; i++) { DoneMission doneMission = new DoneMission(i); Thread thread = new Thread(doneMi