Spark大数据开发与应用案例(视频教学版)(三)--第一章下

作者:余辉

       简介:余辉,硕士毕业于中科院,从事IT行业12年。专注于大数据和机器学习。在数据团队担任过的角色:研发、架构师、负责人、讲师。数据知识产权:出版大数据书籍【1】本,论文【2】篇,软著【6】篇,专利【65】篇。

第1章 Spark 简介

1.3 Spark运行模式

       Spark具有多种运行模式,以满足不同场景下的需求。具体来说,Spark的运行模式可以分为以下几种:
       1)本地模式(Local Mode)
用于在单机上运行Spark应用程序,通常用于教学、调试和演示。
本地模式可以进一步细分为Local、Local[K]和Local[]三种,其中Local表示只启动一个executor,Local[K]表示启动K个executor,Local[]表示启动与CPU数目相同的executor。
       2)独立模式(Standalone Mode)
StandAlone模式是spark自带的集群运行模式,不依赖其他的资源调度框架,部署起来简单。
StandAlone模式分为client模式和cluster模式,本质区别是Driver运行在哪里,如果Driver运行在SparkSubmit进程中就是Client模式,如果Driver运行在集群中就是Cluster模式。
       3)Yarn模式(Spark on Yarn)
使用Yarn作为资源管理器,在Yarn集群上运行Spark应用程序。
Yarn模式分为Yarn-client和Yarn-cluster两种模式,其中Yarn-client模式适用于交互和调试,客户端能看到应用程序的输出;Yarn-cluster模式通常用于生产环境,Driver运行在Application Master中,用户提交作业后可以关闭客户端,作业会继续在Yarn上运行。
此外,Spark还支持在Mesos和Kubernetes等资源管理系统上运行,即Spark on Mesos和Spark on K8s模式。总的来说,Spark的多种运行模式使其能够灵活适应不同的应用场景和需求。
       1. Local模式
如图1-7所示为Spark Local模式,就是指的只在一台计算机上来运行Spark。通常用于测试的目的来使用Local模式,实际的生产环境中不会使用Local模式。Local模式执行步骤如下:
       1)客户端向Driver提交任务。
       2)Driver开始运行,初始化SparkContext,任务划分、任务调度。
       3)Driver向资源管理者,注册应用程序。
       4)资源管理者启动Executor。
       5)Executor执行任务且反向与Driver进行注册连接。
在这里插入图片描述

图1-7 Spark Local模式

       Local模式启动命令如下:

$SPARK_HOME/bin/spark-submit \
--master local[n]  \
--class <主类> \
--conf <配置属性>=<值> \
  <应用的jar路径> \
  [应用参数]

       2. standalone client模式
       如图1-8展示Spark的standAlone Clinet模式,执行步骤如下:
       1)客户端Node-5向Master节点Node-1提交任务。
       2)Master根据客户端提交的任务,计算那些Worker符合执行任务的条件,找到符合执行条件的Worker然后和Worker进行RPC通信,通知Worker启动Executor,并且会将一些Driver端的信息告诉给Executor,Executor启动之后会向Driver端反向注册,建立链接。
       3)Driver端和Executor端建立链接之后,Driver端会创建RDD调用Transformation和Action,然后构建DAG切分Stage,生产Task,然后将Task放到TaskSet中,通过TaskSchedule,将TaskSet序列化,发送到指定的Executor中。
在这里插入图片描述

图1-8 Spark的standAlone Clinet模型执行步骤

       Spark的standAlone Clinet模式启动命令如下:

$SPARK_HOME/bin/spark-submit \
--master spark://IP:7077 
--deploy-mode client
--class <主类> \
--conf <配置属性>=<值> \
  <应用的jar路径> \
  [应用参数]

       3. standalone cluster模式
       图1-9展示Spark的standAlone Cluster模型执行步骤:
       1)spark集群中任意找一台安装了spark并且有spark脚本的机器就可以向集群中提交任务,首先和master进行通信。
       2)master会在worker中找一台符合条件的worker,然后在worker中启动一个DriverWapper进程,其中driver端就是在DriverWapper进程中。
       3)mater会在driver启动完成之后,继续和其他worker进行通信,然后让worker启动executor,executor启动完成之后就会反向向driver进行注册。
       4)executor启动完成之后就会反向向driver进行注册完成之后DriverWapper端就会有SparkContext,创建RDD,调用transformation和action算子生成DAG,之后切分stage,再成task,最后放在taskSet中序列化通过网络传输到对应的Executor中。
在这里插入图片描述

图1-9 Spark的standAlone Cluster模型执行步骤
       Spark的standAlone Cluster模式启动命令如下:
$SPARK_HOME/bin/spark-submit \
--master spark://IP:7077 
--deploy-mode cluster
--class <主类> \
--conf <配置属性>=<值> \
  <应用的jar路径> \
  [应用参数]

       4. Spark On YARN cluster模式
       图1-10展示Spark On Yarn Cluster模型执行步骤:
       1)client向ResourceManager申请资源,返回一个applicationID。
       2)client上传spark jars下面的jar包、自己写的jar和配置。
       3)ResourceManager随机找一个资源充足的NodeManager。
       4)然后通过RPC让NodeManager从HDFS上下载jar包和配置,启动ApplicationMaster;
       5)ApplicationMaster向ResourceManager申请资源。
       6)ResourceManager中的ResourceScheduler找到符合条件的NodeManager,将NodeManager的信息返回给ApplicationMaster。
       7)AppllcationMaster跟返回的NodeManager进行通信。
       8)NodeManager从HDFS下载依赖。
       9)NodeManager启动Executor。
       10)Executor启动之后反向向ApplicationMaster【Driver】注册。
在这里插入图片描述

图1-10 Spark On Yarn Cluster模型执行步骤
Spark的Yarn模式启动命令如下:
$SPARK_HOME/bin/spark-submit \
--master cluster 
--deploy-mode yarn
--class <主类> \
--conf <配置属性>=<值> \
  <应用的jar路径> \
  [应用参数]

1.4 Spark执行流程

       从Spark的架构角度来看,RDD是Spark的运行逻辑的载体。一个Spark应用的执行过程可以分为五个步骤,如图1-11所示。
       1)RDD Object构建DAG有向无环图DAG(Directed Acyclic Graph)。
       2)DAGScheduler将DAG切分Stage,将Stage中生成的Task以TaskSet的形式给TaskScheduler。
       3)TaskScheduler向集群管理发射Task,根据资源情况将Task分发给Worker中的Executor。
       4)如果集群管理中,发射task失败,则向DAGScheduler返回失败信息。
       5)如果集群管理中,发射task成功,Worker启动Executor,Executor启动线程池用于执行Task。
在这里插入图片描述

图1-11 Spark的执行过程

1.5 Spark专有名词

  1. Cluster Manager(集群管理器)
    在集群上获取资源的拓展服务,Spark主要支持三种类型:standalone(Spark自带的集群管理模式)、mesos(Apache Mesos是一个集群管理器,用于在分布式环境中运行应用程序)、yarn(Hadoop YARN是Hadoop 2.x中的资源管理系统)。
  2. Master(主节点)
    在Spark的standalone集群管理模式中,Master是一个关键的组件,它负责接收来自客户端的Spark作业请求,管理集群中的Worker节点,以及进行资源分配和作业调度。
  3. Worker(工作节点)
    集群中任何可以运行Spark应用的节点。在standalone模式中,worker节点通过Spark的conf目录下的slave文件配置;在Spark on yarn模式中,worker节点对应的是nodemanager节点。
  4. SparkSubmit(spark任务提交)
    SparkSubmit是Spark提供的一个命令行工具,用于提交Spark应用程序到集群上运行。通过SparkSubmit,用户可以指定应用程序的主类、依赖的jar包、运行模式(如standalone、yarn等)、以及各种配置参数。
  5. Application(应用程序)
    用户编写的Spark代码,包含了运行在Driver端的代码和运行在各个节点上的Executor代码。
  6. Job(作业)
    由Spark的action操作触发,包含多个RDD及作用于RDD上的各种操作。一个Job由多个Stage组成,每个Stage包含多个Task。
  7. Driver(驱动程序)
    运行用户程序的main()函数,并创建SparkContext,它是Spark程序的入口点。Driver负责初始化Spark应用程序的运行环境,与Cluster Manager进行通信,进行资源的申请、任务的分配和监控等。
  8. SparkContext(Spark上下文)
    Spark应用程序的上下文,控制应用的生命周期。它负责与Cluster Manager进行通信,进行资源的申请、任务的分配和监控等。
  9. Executor(执行器)
    在工作节点上为Spark应用所启动的一个进程,负责运行任务,并可以在内存或磁盘中保存数据。每个应用都有属于自己的独立的一批Executor。
  10. Task(任务)
    被送到某个Executor上的工作单元,是运行Spark应用的基本单元。
  11. TaskSet(任务集合)
    TaskSet是Spark中的一个概念,它代表了一个Stage中所有任务的集合。每个TaskSet中的任务是并行执行的,每个任务对应着RDD中的一个分区的数据处理。
  12. TaskScheduler(任务调度器)
    接收DAGScheduler提交过来的TaskSets,然后把一个个Task提交到Worker节点运行,每个Executor运行什么Task也是在此处分配的。
  13. DAG(Directed Acyclic Graph,有向无环图)
    在Spark中,DAG是用来表示Spark作业执行计划的一个重要数据结构。DAG中的节点代表RDD(Resilient Distributed Dataset,弹性分布式数据集)的转换操作(如map、filter、reduce等),而边则代表数据之间的依赖关系。
  14. DAGScheduler(有向无环图调度器)
    负责接收Spark应用提交的Job,根据RDD的依赖关系划分Stage,并提交Stage给TaskScheduler。
  15. Stage(阶段)
    DAGScheduler根据RDD之间的依赖关系(宽依赖或窄依赖)对Job进行阶段划分的结果。一个Stage包含多个Task,这些Task会在Executor上并行执行。
  16. RDD(弹性分布式数据集)
    Spark的编程模型,是已被分区、被序列化的、不可变的、有容错机制的,并且能够并行操作的数据集合。RDD是Spark中数据的基本抽象,所有对数据的操作都是基于RDD进行的。
  17. Narrow Dependency(窄依赖)
    父RDD的一个分区会被子RDD的一个分区依赖。窄依赖允许RDD的分区在多个不同的任务之间并行计算。
  18. Wide Dependency(宽依赖)
    父RDD的一个分区会被子RDD的多个分区所依赖。宽依赖通常会导致shuffle操作,需要将数据重新分布到集群中的不同节点上。

1.6 本章小结

       本章作为Spark的入门篇章,全面而简洁地介绍了Spark的基本概念及特点、技术生态系统、运行模式、执行流程以及专有名词。通过“Spark是什么”这一小节,读者能够迅速了解Spark的起源、定义及其在大数据处理领域的地位。紧接着,Spark的特点被详细阐述,包括其高速、易用、通用和容错性强等显著优势。技术生态系统的介绍则让读者对Spark的组件和工具链有了初步认识。此外,本章还深入探讨了Spark的运行模式和执行流程,帮助读者理解Spark任务是如何在集群中分布式执行的。最后,通过介绍Spark的专有名词,本章为读者后续深入学习Spark奠定了坚实的术语基础。总体而言,本章是理解Spark全貌的绝佳起点。

历史目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

辉哥大数据

你的鼓舞将是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值