Spark实践项目4:Spark基本概念
2016-08-07 16:33
351 查看
[align=left]Spark基本概念[/align]
RDD——Resillient Distributed Dataset A Fault-Tolerant Abstraction for In-Memory Cluster Computing弹性分布式数据集。
Operation——作用于RDD的各种操作分为transformation和action。
Job——作业,一个JOB包含多个RDD及作用于相应RDD上的各种operation。
Stage——一个作业分为多个阶段。
Partition——数据分区, 一个RDD中的数据可以分成多个不同的区。1个Partition默认对应一个block,是128M左右,由于最后一条记录一般跨2个BLOCK.,不会是刚好128M。
DAG——Directed Acycle graph,有向无环图,反应RDD之间的依赖关系。
Narrow dependency——窄依赖,子RDD依赖于父RDD中固定的data partition。
Wide Dependency——宽依赖,子RDD对父RDD中的所有data partition都有依赖。
Caching Managenment——缓存管理,对RDD的中间计算结果进行缓存管理以加快整 体的处理速度。
10. Spark:Spark包含多个组件,核心是:一个对由很多计算任务组成的、运行在多个工作机器或者是一个计算机集群上的应用进行调度、分发以及监控的计算引擎。
[align=left]
[/align]
[align=left]Spark的程序的运行有两种模式:Client和Cluster(在集群上获取资源的外部服务)。[/align]
[align=left] 默认是client,可以看到更多的运行信息。Cluster模式默认情况下spark集群有一台电脑专门用来提交spark程序,一般一定与sparkcluster在同一个网络环境中,因为driver频繁与executor通信,其配置和普通worker一致。[/align]
[align=left]
[/align]
[align=left]Spark Cluster:包含Master[/align]
Master:接受用户提交的程序并发送指令给Worker为当前程序分配资源,每个Worker所在节点默认为当前节点分配一个Executor,在Executor中通过线程池并发进行。Master通知Worker按照要求启动Executor。
[align=left]
[/align]
[align=left]但不可以用IDEA或Eclipse作Client,也不可以用IDE直接发布Spark程序到Spark集群中:[/align]
[align=left]第一:[/align]
[align=left] 内存和Cores的限制,默认情况下Spark程序的Driver会在提交Spark程序的机器上,所以如果在IDE中提交程序的话,那IDE机器就必须非常强大[/align]
[align=left]第二:[/align]
[align=left] Driver要指挥Workers的运行并频繁的发生通信,如果开发环境IDE和Spark集群不在同样一个网络下,就会出现任务丢失,运行缓慢等多种不必要的问题;[/align]
第三:
这是不安全的。
[align=left][/align]
[align=left]Application:[/align]
[align=left] 基于Spark的用户,包含一个Driver Program和若干Executor。运行不依赖clusterManager,可以有多个Jobs。[/align]
Driver Program:
每个Spark应用都由一个Driver Program来发起集群上的各种并行操作。一般要管理多个执行器Executor节点。Driver Program包含应用的main函数,并且定义了集群上的分布式数据集,并进行了相关操作。运行Application的main(),并创建Spark
Context对象,这个对象代表对计算集群的一个连接,同时也是Executor的核心。
SparkContext:
Application的入口,负责调度各个运算资源,协调各Worker Node上的Executor。创建DAGScheduler、TaskScheduler、SchedulerBackend,在实例化的过程中Register当前程序给Master,Master接受注册,如果没有问题,Master会为当前程序分配AppID并分配计算资源。一般情况下,当通过Action来触发Job时,SparkContext会通过DAGScheduler来把Job中的RDD划分成不同的Stage。通过资源调度模块和Executer通信。
WorkerNode:
集群中人任何可以运行Application代码的节点,可以运行一个或多个Executor。不会运行程序的代码 是管理当前节点的资源,并接受Master的指令在新的进程中来分配具体的计算资源Executor。但Worker不会向Master发送资源,worker进程通过一个proxy为ExecutorRunner的对象实例来远程启动ExecutorBackend进程。
Executor:
Application运行在WorekNode上的一个进程,该进程负责运行Task。并负责将数据存在内存或磁盘上。每个Application都会申请各自独立的Executor来处理任务。为Executor进程里有线程池,它是一个进程里的工作对象。Executor负责执行任务,运行Executer的机器称为Worker节点
Task:
运行在Executor上的工作单元。
Job:
SparkContext提交的具体Action操作,常和Action对应,由Action触发。包含了一系列的Task并行计算。有一系列的RDD,不过本身不会产生RDD。一般1个Action操作对应一个Job。CheckPoint也对应Job.排序的Range也会触发Job.
Stage:
每个Job会被拆分成很多组Task,每组任务称为Stage,每个Stage内部是一系列业务逻辑相同但处理数据不同的Tasks,构成了TaskSet。Stage内部是基于内存计算的。最后一个Stage中的Task称为ResultTask,产生Job的结果;前面的Task都是ShuffleMapTask,为下一阶段的Stage做数据准备。
DAGScheduler:
根据Job构建于Stage的DAG,并提交Stage给TaskScheduler。
TaskScheduler:
将TaskSet提交给WorkerNode集群运行并返回结果。负责具体Task的运行,遵循数据本地性。
ExecutorBackend:ExecutorBackend进程里有Executor,实际在工作中会通过TaskRunner来封装Task,然后从线程池中获取一条线程执行Task,执行完后线程被回收复用。
SchedulerBackend:负责具体Task的运行,遵循数据本地性。
RDD——Resillient Distributed Dataset A Fault-Tolerant Abstraction for In-Memory Cluster Computing弹性分布式数据集。
Operation——作用于RDD的各种操作分为transformation和action。
Job——作业,一个JOB包含多个RDD及作用于相应RDD上的各种operation。
Stage——一个作业分为多个阶段。
Partition——数据分区, 一个RDD中的数据可以分成多个不同的区。1个Partition默认对应一个block,是128M左右,由于最后一条记录一般跨2个BLOCK.,不会是刚好128M。
DAG——Directed Acycle graph,有向无环图,反应RDD之间的依赖关系。
Narrow dependency——窄依赖,子RDD依赖于父RDD中固定的data partition。
Wide Dependency——宽依赖,子RDD对父RDD中的所有data partition都有依赖。
Caching Managenment——缓存管理,对RDD的中间计算结果进行缓存管理以加快整 体的处理速度。
10. Spark:Spark包含多个组件,核心是:一个对由很多计算任务组成的、运行在多个工作机器或者是一个计算机集群上的应用进行调度、分发以及监控的计算引擎。
[align=left]
[/align]
[align=left]Spark的程序的运行有两种模式:Client和Cluster(在集群上获取资源的外部服务)。[/align]
[align=left] 默认是client,可以看到更多的运行信息。Cluster模式默认情况下spark集群有一台电脑专门用来提交spark程序,一般一定与sparkcluster在同一个网络环境中,因为driver频繁与executor通信,其配置和普通worker一致。[/align]
[align=left]
[/align]
[align=left]Spark Cluster:包含Master[/align]
Master:接受用户提交的程序并发送指令给Worker为当前程序分配资源,每个Worker所在节点默认为当前节点分配一个Executor,在Executor中通过线程池并发进行。Master通知Worker按照要求启动Executor。
[align=left]
[/align]
[align=left]但不可以用IDEA或Eclipse作Client,也不可以用IDE直接发布Spark程序到Spark集群中:[/align]
[align=left]第一:[/align]
[align=left] 内存和Cores的限制,默认情况下Spark程序的Driver会在提交Spark程序的机器上,所以如果在IDE中提交程序的话,那IDE机器就必须非常强大[/align]
[align=left]第二:[/align]
[align=left] Driver要指挥Workers的运行并频繁的发生通信,如果开发环境IDE和Spark集群不在同样一个网络下,就会出现任务丢失,运行缓慢等多种不必要的问题;[/align]
第三:
这是不安全的。
[align=left][/align]
[align=left]Application:[/align]
[align=left] 基于Spark的用户,包含一个Driver Program和若干Executor。运行不依赖clusterManager,可以有多个Jobs。[/align]
Driver Program:
每个Spark应用都由一个Driver Program来发起集群上的各种并行操作。一般要管理多个执行器Executor节点。Driver Program包含应用的main函数,并且定义了集群上的分布式数据集,并进行了相关操作。运行Application的main(),并创建Spark
Context对象,这个对象代表对计算集群的一个连接,同时也是Executor的核心。
SparkContext:
Application的入口,负责调度各个运算资源,协调各Worker Node上的Executor。创建DAGScheduler、TaskScheduler、SchedulerBackend,在实例化的过程中Register当前程序给Master,Master接受注册,如果没有问题,Master会为当前程序分配AppID并分配计算资源。一般情况下,当通过Action来触发Job时,SparkContext会通过DAGScheduler来把Job中的RDD划分成不同的Stage。通过资源调度模块和Executer通信。
WorkerNode:
集群中人任何可以运行Application代码的节点,可以运行一个或多个Executor。不会运行程序的代码 是管理当前节点的资源,并接受Master的指令在新的进程中来分配具体的计算资源Executor。但Worker不会向Master发送资源,worker进程通过一个proxy为ExecutorRunner的对象实例来远程启动ExecutorBackend进程。
Executor:
Application运行在WorekNode上的一个进程,该进程负责运行Task。并负责将数据存在内存或磁盘上。每个Application都会申请各自独立的Executor来处理任务。为Executor进程里有线程池,它是一个进程里的工作对象。Executor负责执行任务,运行Executer的机器称为Worker节点
Task:
运行在Executor上的工作单元。
Job:
SparkContext提交的具体Action操作,常和Action对应,由Action触发。包含了一系列的Task并行计算。有一系列的RDD,不过本身不会产生RDD。一般1个Action操作对应一个Job。CheckPoint也对应Job.排序的Range也会触发Job.
Stage:
每个Job会被拆分成很多组Task,每组任务称为Stage,每个Stage内部是一系列业务逻辑相同但处理数据不同的Tasks,构成了TaskSet。Stage内部是基于内存计算的。最后一个Stage中的Task称为ResultTask,产生Job的结果;前面的Task都是ShuffleMapTask,为下一阶段的Stage做数据准备。
DAGScheduler:
根据Job构建于Stage的DAG,并提交Stage给TaskScheduler。
TaskScheduler:
将TaskSet提交给WorkerNode集群运行并返回结果。负责具体Task的运行,遵循数据本地性。
ExecutorBackend:ExecutorBackend进程里有Executor,实际在工作中会通过TaskRunner来封装Task,然后从线程池中获取一条线程执行Task,执行完后线程被回收复用。
SchedulerBackend:负责具体Task的运行,遵循数据本地性。
相关文章推荐
- (SerialPort)串口编程知识整理:(一)基本概念和项目实践概述
- (SerialPort)串口编程知识整理:(一)基本概念和项目实践概述
- Asp.Net大型项目实践(4)-用NHibernate保存和查询我们的业务领域对象之实现基本的数据库访问(附源码)
- GCC基本概念及实践(2)
- 项目管理实践-----基本工具
- 行为树(Behavior Tree)实践(1)– 基本概念
- 软件项目管理实践(上)--项目管理的概念及项目的过程管理
- Spark1.0.0 运行架构基本概念
- GCC基本概念及实践(3)
- GCC基本概念及实践(2)
- NHibernate3.2+Asp.net MVC3+Extjs 4.0.2项目实践(一):基本概要
- 行为树(Behavior Tree)实践(1)– 基本概念
- SOA:原理•方法•实践,第 1 部分: SOA 的基本概念
- 项目管理基本概念(笔记)
- 敏捷开发基本流程概念的理解与实践(转)
- “四快一慢”与ERP实施项目管理2--基本概念和综合评述
- Asp.Net大型项目实践(4)-用NHibernate保存和查询我们的业务领域对象之实现基本的数据库访问(附源码)
- SCA概念与应用实践(2. SCA基本概念)
- SubVersion基本概念与快速流程,做大项目必备
- 负载均衡原理与实践详解 第三篇 服务器负载均衡的基本概念-网络基础