大数据之Spark 知识体系完整解读

本文详细解读了Spark作为BDAS的核心组件,如何实现快速集群计算。讲解了Spark在YARN上的运行流程,从客户端提交作业到YARN集群的整个过程,包括ApplicationMaster的启动和Executor的分配。此外,还介绍了Spark中的驱动器和执行器节点的角色,以及SparkContext的初始化和RDD的工作原理,如转化操作和行动操作。文章深入探讨了SparkSQL的解析过程,以及如何与Hive集成进行数据查询。
摘要由CSDN通过智能技术生成

Spark 简介

Spark 是整个 BDAS 的核心组件,是一个大数据分布式编程框架,不仅实现了MapReduce的算子map 函数和reduce函数及计算模型,还提供更为丰富的算子,如filter、join、groupByKey等。是一个用来实现快速而同用的集群计算的平台。 Spark将分布式数据抽象为弹性分布式数据集(RDD),实现了应用任务调度、RPC、序列化和压缩,并为运行在其上的上层组件提供API。其底层采用Scala这种函数式语言书写而成,并且所提供的API深度借鉴Scala函数式的编程思想,提供与Scala类似的编程接口。

 

Sparkon Yarn

 

 

 

从用户提交作业到作业运行结束整个运行期间的过程分析。

 

一、客户端进行操作

 

1.根据yarnConf来初始化yarnClient,并启动yarnClient

 

2.创建客户端Application,并获取Application的ID,进一步判断集群中的资源是否满足executor和ApplicationMaster申请的资源,如果不满足则抛出IllegalArgumentException;

 

3. 设置资源、环境变量:其中包括了设置Application的Staging目录、准备本地资源(jar文件、log4j.properties)、设置Application其中的环境变量、创建Container启动的Context等;

 

4. 设置Application提交的Context,包括设置应用的名字、队列、AM的申请的Container、标记该作业的类型为Spark;

 

5. 申请Memory,并最终通过yarnClient.submitApplication向ResourceManager提交该Application。

 

当作业提交到YARN上之后,客户端就没事了,甚至在终端关掉那个进程也没事,因为整个作业运行在YARN集群上进行,运行的结果将会保存到HDFS或者日志中。

 

二、提交到YARN集群,YARN操作

 

1.运行ApplicationMaster的run方法;

 

2.设置好相关的环境变量。

 

3.创建amClient,并启动;

 

4.在Spark UI启动之前设置Spark UI的AmIpFilter;

 

5.在startUserClass函数专门启动了一个线程(名称为Driver的线程)来启动用户提交的Application,也就是启动了Driver。在Driver中将会初始化SparkContext;

 

6.等待SparkContext初始化完成,最多等待spark.yarn.applicationMaster.waitTries次数(默认为10),如果等待了的次数超过了配置的,程序将会退出;否则用SparkContext初始化yarnAllocator;

 

7.当SparkContext、Driver初始化完成的时候,通过amClient向ResourceManager注册ApplicationMaster

 

8.分配并启动Executeors。在启动Executeors之前,先要通过yarnAllocator获取到numExecutors个Container,然后在Container中启动Executeors。

 

那么这个Application将失败,将Application Status标明为FAILED,并将关闭SparkContext。其实,启动Executeors是通过ExecutorRunnable实现的,而ExecutorRunnable内部是启动CoarseGrainedExecutorBackend的。

 

9.最后,Task将在CoarseGrainedExecutorBackend里面运行,然后运行状况会通过Akka通知CoarseGrainedScheduler,直到作业运行完成。

 

Spark节点的概念

 

一、Spark驱动器是执行程序中的main()方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值