2021-03-02

spark是一种快速,通用,可扩展的大数据计算引擎,由scala编写。spark是基于内存计算的大数据并行计算框架,由spark core,spark Streaming,spark SQL,MLib,GraghX,独立调度器,Yarn,Mesos组成。spark Core:实现了Spark的基本功能,包含任务调度,内存管理、错误恢复、与存储系统交互等模块。Spark Core 中还包含了对弹性分布式数据集(resilient distributed dataset,简称RDD)的 API 定义。Spark SQL:是 Spark 用来操作结构化数据的程序包。Spark Streaming:是 Spark 提供的对实时数据进行流式计算的组件。提供了用来操作数据流的 API,并且与 Spark Core 中的 RDD API 高度对应。Spark MLlib:提供常见的机器学习(ML)功能的程序库。包括分类、回归、聚类、协同过滤等,还提供了模型评估、数据导入等额外的支持功能。GraphX:提供一个分布式图计算框架,能高效进行图计算。集群管理器:Spark设计为可以高效地在一个计算节点到数千个计算节点之间伸缩计 算。spark的特点:快,易用,通用,兼容性。spark的用途::数据科学家和工程师。数据科学任务:主要是数据分析领域,数据科学家要负责分析数据并建模,具备 SQL、统计、预测建模(机器学习)等方面的经验,以及一定的使用 Python、 Matlab 或 R 语言进行编程的能力。数据处理应用:工程师定义为使用 Spark 开发 生产环境中的数据处理应用的软件开发者,通过对接Spark的API实现对处理的处理和转换等任务。spark的集群:1.集群角色主要有master和worker两个节点,Master节点主要运行集群管理器的中心化部分,Worker节点负责具体的业务运行。2.运行模式本地Local 集群3.常用术语Application:指的是用户编写的Spark应用程序,包含了Driver功能代码和分布在集群中多个节点上运行的Executor代码。Driver:驱动程序,运行上述Application的Main()函数并且创建SparkContext,SparkContext的目的是为了准备Spark应用程序的运行环境。在Spark中由SparkContext负责和ClusterManager通信,进行资源的申请、任务的分配和监控等;当Executor部分运行完毕后,Driver负责将SparkContext关闭Cluster Manager:资源管理器,指的是在集群上获取资源的外部服务Executor:执行器,Application运行在Worker节点上的一个进程,该进程负责运行Task,并且负责将数据存在内存或者磁盘上,每个Application都有各自独立的一批ExecutorWorker:计算节点RDD:弹性分布式数据集窄依赖:一对一宽依赖:一对多DAG:有向无环图DAGScheduler:有向无环图调度器,基于DAG划分Stage 并以TaskSet的形式提交Stage给TaskScheduler;负责将job拆分成不同stage的具有依赖关系的多批任务;最重要的任务之一就是:计算作业和任务的依赖关系,制定调度逻辑。TaskScheduler:任务调度器,将Taskset提交给worker(集群)运行并回报结果;负责每个具体任务的实际物理调度。Job:作业,由一个或多个调度阶段所组成的一次计算作业;包含多个Task组成的并行计算,往往由Spark Action催生,一个JOB包含多个RDD及作用于相应RDD上的各种OperationStage:调度阶段,一个任务集对应的调度阶段;每个Job会被拆分很多组Task,每组任务被称为Stage,也可称TaskSet,一个作业分为多个阶段;Stage分成两种类型ShuffleMapStage、ResultStage。TaskSet:任务集Task:任务,被送到某个Executor上的工作任务;一个分区数据集上的执行函数。Spark的RPC由RPCEnv(包含多个RpcEndpoint),RpcEndpointRef,RpcAddress组成RpcEnv为RpcEndpoint提供处理消息的环境。RpcEnv负责RpcEndpoint整个生命周期的管理,包括:注册endpoint,endpoint之间消息的路由,以及停止endpoint。RpcEndpoint表示一个个需要通信的个体(如master,worker,driver),主要根据接收的消息来进行对应的处理。一个RpcEndpoint经历的过程依次是:构建->onStart→receive→onStop。其中onStart在接收任务消息前调用,receive和receiveAndReply分别用来接收另一个RpcEndpoint(也可以是本身)send和ask过来的消息。RpcEndpointRef是对远程RpcEndpoint的一个引用。当我们需要向一个具体的RpcEndpoint发送消息时,一般我们需要获取到该RpcEndpoint的引用,然后通过该应用发送消息。RpcAddress表示远程的RpcEndpointRef的地址。
Spark任务运行机制:
(1)客户端启动后直接运行用户程序,启动Driver相关的工作:DAGScheduler和BlockManagerMaster等。(2)客户端的Driver向Master注册。(3)Master还会让Worker启动Exeuctor。Worker创建一个ExecutorRunner线程,ExecutorRunner会启动ExecutorBackend进程。(4)ExecutorBackend启动后会向Driver的SchedulerBackend注册。Driver的DAGScheduler解析作业并生成相应的Stage,每个Stage包含的Task通过TaskScheduler分配给Executor执行。(5)所有stage都完成后作业结束。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值