大数据开发之Spark 基础入门学习

2023-05-26 0 993

软件产业有关

Standalone:Spark 原生植物的资源管理,由 Master 负责管理天然资源的重新分配Apache Mesos:与 Hadoop MapReduce 相容性较好的一类天然资源运维架构Hadoop Yarn:主要就是指的 Yarn 中的 ResourceManager

Worker 指软件产业中的组织工作结点,开启并运转executor民主化,运转组织工作台标识符的结点

standalone商业模式下:Worker民主化所处结点yarn商业模式下: yarn的nodemanager民主化所处的结点

Deploy Mode 分成三种商业模式,client和cluster,差别是driver运转的边线

Client商业模式下driver运转在递交spark组织工作台的电脑上,能动态看见详尽的笔记信息方便快捷跟踪和摸查严重错误,用作试验cluster商业模式下,spark application递交到cluster manager,cluster manager(比如说master)负责管理在软件产业中某一结点上,启动driver民主化,用作制造自然环境一般来说情况下driver和worker在同两个互联网中是最合适的,而client很可能将是driver worker合二为一精心设计,这种互联网通讯很费时,cluster没这种的难题

Spark并行排序共同组成

Application

使用者撰写的Spark流程,透过两个有main方式的类继续执行,顺利完成两个排序各项任务的处置。它是由两个Driver流程和几组运转于Spark软件产业上的Executor共同组成

Driver

运转main方式的Java软件包民主化负责管理窃听spark application的executor民主化打来的通讯和相连将工程建设jar发送至大部份的executor民主化中driver运维task给executor继续执行Driver与Cluster Manager、Worker协同顺利完成Application民主化的开启DAG分割排序各项任务PCB重新分配task到executor上排序能力的重新分配等运维继续执行组织工作台等Driver运维task给executor继续执行,因此driver最合适和spark软件产业在一片片互联网内,便以通讯

Executor

运转在worker结点上,负责管理继续执行组织工作台的各项任务,并将数据保存在内存或磁盘中每个spark application,都有属于自己的executor民主化,spark application不会共享两个executor民主化executor在整个spark application运行的生命周期内,executor能动态增加/释放executor使用多线程运转SparkContext重新分配过来的task,来一批task就继续执行一批

使用者操作spark的入口

SparkContext是Spark的入口,负责管理相连Spark软件产业,创建RDD,累积量和广播量等

SparkContext是Spark的对外接口,负责管理向调用者提供Spark的各种功能driver program透过SparkContext相连到软件产业管理器来实现对软件产业中各项任务的控制每个JVM只有两个SparkContext,一台服务器能开启多个JVM

SparkSession

The entry point to programming Spark with the Dataset and DataFrame API.包含了SQLContext、HiveContext、sparkcontext

Spark排序切分有关

Job

两个spark application可能将会被分成多个job,每次调用Action时,逻辑上会生成两个Job两个Job包含了两个或多个Stage

Stage

每个job都会分割为两个或多个stage(阶段),每个stage都会有对应的一批task(即两个taskset),重新分配到executor上去继续执行Stage包括两类ShuffleMapStageResultStage

TaskSet

几组关联的,但相互之间没Shuffle依赖关系的Task集合Stage能直接映射为TaskSet,两个TaskSetPCB了一次需要运算的、具有相同处置逻辑的Task,这些Task能并行排序,粗粒度的运维是以TaskSet为单位的。两个stage对应两个taskset

Task

driver发送至executor上继续执行的排序单元,每个task负责管理在两个阶段(stage),处置一小片数据,排序出对应的结果Task是在物理结点上运转的基本单位,Task包含两类ShuffleMapTask =>对应于Stage中ShuffleMapStage中的两个继续执行基本单元ResultTask =>对应于Stage中ResultStage中的两个继续执行基本单元

Spark其他重要部分

数据结构

RDDDataFrame 引入了schema和off-heapDataSet 整合了rdd和dataframe的优点,支持结构化和非结构化数据,采用堆外内存存储,gc友好

核心运维器

DAGScheduler 根据Job构建基于Stage的DAG,并递交Stage给TaskScheduler。SparkEnv Spark 公共服务们相互交互,用来给 Spark 应用流程建立并行排序平台的运转时自然环境TaskScheduler 将Taskset递交给Worker node软件产业运转并返回结果。

Spark运维

递交方式

yarn-cluster商业模式,用作生产商业模式,driver运转在nodeManager,没网卡流量激增难题,但查看log麻烦,调试不方便快捷Yarn-client商业模式,yarn-client用作试验,driver运转在本地客户端,负责管理运维application,会与yarn软件产业产生超大量的互联网通讯,从而导致网卡流量激增,yarn-client能在本地看见大部份log,方便快捷调试yarn-client vs yarn-clusteryarn-client下,driver运转在spark-submit递交的电脑上,ApplicationMaster只是相当于两个ExecutorLauncher,仅仅负责管理申请开启executor;driver负责管理具体运维yarn-cluster下,ApplicationMaster是driver,ApplicationMaster负责管理具体运维

Spark通用各项任务继续执行过程

使用者透过 spark-submit 脚本递交应用spark-submit 脚本开启Driver,调用使用者定义的 main()方式构建sparkConf和sparkContext对象,在sparkContext入口做了三件事,创建了sparkEnv对象TaskSchedulerDAGSchedulerDriver与cluster manager通讯,申请天然资源以开启Executor;cluster manager为Driver开启Executor;在使用者应用中标识符遇到对RDD的action算子操作的时候,触发两个job,这时就会调用DAGScheduler对象进行Stage分割,将分割好的stage按照分区生成两个两个的task,并且PCB到TaskSet对象中TaskSet递交到TaskScheduler,TaskScheduler按照递交过来的TaskSet,拿到两个序列化器,将TaskSet序列化,将序列化好的TaskPCB并且递交到worker各项任务在Executor中进行排序并保存结果;如果Driver的 main()方式退出,或者调用了SparkContext.stop(),Driver会终止Executor,并且透过软件产业管理器释放天然资源。

大数据开发之Spark 基础入门学习

spark 递交过程分析standalone

SparkContext相连到Master,向Master注册并申请天然资源Master根据天然资源申请要求和Worker心跳周期内报告的重要信息决册,建立Executor线程池SparkContext将Applicaiton标识符发送给StandaloneExecutorBackendSparkContext解析Applicaiton标识符,构建Dge(或者称为TaskSet)递交给Task Scheduler,Task Scheduler负责管理将Task重新分配到相应的Worker,最后递交给StandaloneExecutorBackend继续执行StandaloneExecutorBackend会建立Executor线程池,开始继续执行Task,并向SparkContext报告,直至Task顺利完成。大部份Task顺利完成后,SparkContext向Master注销,释放天然资源。

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务