Spark实践项目4:Spark基本概念

5 篇文章 0 订阅
Spark基本概念
  1. RDD——Resillient Distributed Dataset A Fault-Tolerant Abstraction for In-Memory Cluster Computing弹性分布式数据集。
  2. Operation——作用于RDD的各种操作分为transformation和action。
  3. Job——作业,一个JOB包含多个RDD及作用于相应RDD上的各种operation。
  4. Stage——一个作业分为多个阶段。
  5. Partition——数据分区, 一个RDD中的数据可以分成多个不同的区。1Partition默认对应一个block,128M左右,由于最后一条记录一般跨2BLOCK.,不会是刚好128M。
  6. DAG——Directed Acycle graph,有向无环图,反应RDD之间的依赖关系。
  7. Narrow dependency——窄依赖,子RDD依赖于父RDD中固定的data partition。
  8. Wide Dependency——宽依赖,子RDD对父RDD中的所有data partition都有依赖。
  9. Caching Managenment——缓存管理,对RDD的中间计算结果进行缓存管理以加快整 体的处理速度。
     10. Spark:Spark包含多个组件,核心是:一个对由很多计算任务组成的、运行在多个工作机器或者是一个计算机集群上的应用进行调度、分发以及监控的计算引擎。

Spark的程序的运行有两种模式 Client Cluster(在集群上获取资源的外部服务 )。
      默认是 client,可以看到更多的运行信息。Cluster模式 默认情况下 spark 集群有一台电脑专门用来提交 spark 程序,一般一定与 sparkcluster 在同一个网络环境中,因为 driver 频繁与 executor 通信,其配置和普通 worker 一致。

Spark Cluster:包含Master
Master:接受用户提交的程序并发送指令给Worker为当前程序分配资源,每个Worker所在节点默认为当前节点分配一个Executor,在Executor中通过线程池并发进行。Master通知Worker按照要求启动Executor。

但不可以用IDEA或Eclipse作Client,也不可以用IDE直接发布Spark程序到Spark集群中:
第一:
     内存和 Cores 的限制,默认情况下 Spark 程序的 Driver 会在提交 Spark 程序的机器上,所以如果在 IDE 中提交程序的话,那 IDE 机器就必须非常强大
第二:
     Driver 要指挥 Workers 的运行并频繁的发生通信,如果开发环境 IDE Spark 集群不在同样一个网络下,就会出现任务丢失,运行缓慢等多种不必要的问题;
三:
     这是不安全的。  

Application:
     基于Spark的用户,包含一个 Driver Program和若干 Executor。运行不依赖 clusterManager,可以有多个 Jobs

Driver Program:
     每个Spark应用都由一个Driver Program来发起集群上的各种并行操作。一般要管理多个执行器Executor节点。Driver Program包含应用的main函数,并且定义了集群上的分布式数据集,并进行了相关操作。运行 Applicationmain(),并创建 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构建于 StageDAG,并提交 StageTaskScheduler

TaskScheduler:
     将 TaskSet提交给 WorkerNode集群运行并返回结果。负责具体Task的运行,遵循数据本地性。
 
ExecutorBackend:ExecutorBackend进程里有Executor,实际在工作中会通过TaskRunner来封装Task,然后从线程池中获取一条线程执行Task,执行完后线程被回收复用。

SchedulerBackend:负责具体Task的运行,遵循数据本地性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值