Spark内核

1. Spark 内核概述

1.1核心组件

1.1.1 Driver  master(唯一的一个)

Spark驱动节点,用于 Spark 任务中的 main 方法,fuze实际代码的执行工作. Driver 在 Spark 作业执行时主要负责:

1. 将用户程序转化为作业( job );

2. 在 Executor 之间调度任务( task );

3. 跟踪 Executor 的执行情况;

4.通过 UI 展示查询运行情况;

1.1.2 Executor   worker(多个)

Spark Executor节点是一个JVM进程,负责在 Spark 作业中运行具体任务,任务彼此之间相互独立。Spark 应用启动时,Executor节点被同时启动,并且始终伴随着整个 Spark 应用的生命周期而存在。如果有Executor节点发生了故障或崩溃,Spark 应用也可以继续执行,会将出错节点上的任务调度到其他Executor节点上继续运行。spark的容错机制

Executor有两个核心功能:

1. 负责运行组成Spark应用的任务,并将结果返回给驱动器进程;

2. 它们通过自身的块管理器(Block Manager)为用户程序中要求缓存的 RDD 提供内存式存储。RDD 是直接缓存在Executor进程内的,因此任务可以在运行时充分利用缓存数据加速运算。

1.2运行流程

如图 Spark 的运行流程不论Spark以何种模式进行部署,任务提交后,都会先启动Driver.进程.随后Driver进程向集群管理器注册应用程序,之后集群管理器根据此任务的配置文件分配Executor并启动,当Driver所需的资源全部满足后,Driver开始执行main函数,Spark查询为懒执行,当执行到action算子时开始反向推算,根据宽依赖进行stage的划分,随后每一个stage对应一个taskset,taskset中有多个task,根据本地化原则,task会被分发到指定的Executor去执行,在任务执行的过程中,Executor也会不断与Driver进行通信,报告任务运行情况。

2.部署模式

Spark支持3种集群管理器(Cluster Manager),分别为:

1. Standalone:(测试中)独立模式,Spark原生的简单集群管理器,自带完整的服务,可单独部署到一个集群中,无需依赖任何其他资源管理系统,使用Standalone可以很方便地搭建一个集群;

2. Apache Mesos:一个强大的分布式资源管理框架,它允许多种不同的框架部署在其上,包括yarn;

3.Hadoop YARN:统一的资源管理机制,在上面可以运行多套计算框架,如map reduce、storm等,根据driver在集群中的位置不同,分为yarn client(测试中)和yarn cluster(实际工作中,只能用这种模式)部署在hadoop集群中,由yarn来管理资源分配。

Spark内部也提供了一些方便用户测试和学习的简单集群部署模式。由于在实际工厂环境下使用的绝大多数的集群管理器是Hadoop YARN,因此我们关注的重点是Hadoop YARN模式下的Spark集群部署。

用户在提交任务给Spark处理时,以下两个参数共同决定了Spark的运行方式。

· –master MASTER_URL :决定了Spark任务提交给哪种集群处理。

· –deploy-mode DEPLOY_MODE:决定了Driver的运行方式,可选值为Client或者Cluster。

2.1Standalone模式运行机制

Standalone集群有四个重要组成部分:

  1. Driver:是一个进程,我们编写的Spark应用程序就运行在Driver上,由Driver进程执行;
  2. Master(RM):是一个进程,主要负责资源的调度和分配,并进行集群的监控等职责;
  3. Worker(NM):是一个进程,一个Worker运行在集群中的一台服务器上,主要负责两个职责,一个是用自己的内存存储RDD的某个或某些partition;另一个是启动其他进程和线程(Executor),对RDD上的partition进行并行的处理和计算。
  4. Executor:是一个进程,一个Worker上可以运行多个Executor,Executor通过启动多个线程(task)来执行对RDD的partition进行并行计算,也就是执行我们对RDD定义的例如map、flatMap、reduce等算子操作。

 

2.1.1Standalone Client模式

 在Standalone Client模式下,Driver在任务提交的本地机器上运行,Driver启动后向Master注册应用程序,Master根据submit脚本的资源需求找到内部资源至少可以启动一个Executor的所有Worker,然后在这些Worker之间分配Executor,Worker上的Executor启动后会向Driver反向注册,所有的Executor注册完成后,Driver开始执行main函数,之后执行到Action算子时,开始划分stage,每个stage生成对应的taskSet,之后将task分发到各个Executor上执行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Spark内核设计的艺术是指在Spark计算引擎的设计中,涉及了许多精心的考量和优化来提高性能和可扩展性。 首先,Spark内核设计中充分考虑了分布式计算的特点。Spark使用弹性分布式数据集(RDD)作为基本的计算模型,RDD是可分区的、可并行操作的数据集合,有助于将数据分布在集群中的不同节点上进行并发处理。这种设计能够更好地适应大规模数据处理的需求。 其次,Spark内核设计充分利用了内存计算的优势。Spark引入了内存计算的概念,并提供了内存管理机制,使得数据可以驻留在内存中,加速了数据处理的速度,尤其是对于迭代计算和交互式查询等工作负载。 此外,Spark内核设计还考虑到了任务调度和资源管理的问题。Spark使用了多阶段的任务调度器,将任务划分为不同的阶段,并优化了数据的本地性以减少数据传输的开销。同时,Spark还提供了动态资源分配的功能,根据任务的需求动态地分配和回收资源,提高资源利用率。 最后,Spark内核设计还注重了用户友好性和可扩展性。Spark提供了易用的API,如Spark SQL、Spark Streaming、Spark MLlib等,使得用户可以方便地进行大数据处理和机器学习等任务。同时,Spark还支持丰富的扩展功能,如自定义的数据源和函数,以及与其他大数据生态系统的无缝集成,使得Spark可以灵活地适应各种应用场景。 综上所述,Spark内核设计的艺术体现在它在分布式计算、内存计算、任务调度和资源管理、用户友好性和可扩展性等方面的优化和创新,使得Spark成为了当前大数据处理领域最受欢迎和广泛应用的计算引擎之一。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值