微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Spark

Spark

Spark Core:最低层的组件

Spark sql查询计算

Spark Streaming:进行流计算

MLlib:机器学习算法库

GraphX:编写图计算算法

Hadoop表达能力有限,磁盘开销大

spark+Hadoop大数据框架

Spark概述

运行速度快,内存计算

有向无环图的计算

容易使用Java,Scala,python,R语言

完整的软件栈,独立的集群模式

1.Spark的计算模式也属于MapReduce,但不局限于Map和Reduce操作,还提供多种数据集操作类型,编程模型比Hadoop MapReduce更灵活。 2.Spark提供了内存计算,可将中间结果放到内存中,对于迭代运算效率更高 3.Spark基于DAG的任务调度执行机制,要优于Hadoop MapReduce的迭代执行机制。

基本概念:

  • Application:用户编写的Spark应用程序。

  • Driver:Spark中的Driver即运行上述Application的main函数并创建

  • SparkContext,创建SparkContext的目的是为了准备Spark应用程序的运行环境,在Spark中有SparkContext负责与ClusterManager通信,进行资源申请、任务的分配和监控等,当Executor部分运行完毕后,Driver同时负责将SparkContext关闭

  • Executor:是运行在工作节点(WorkerNode)的一个进程,负责运行Task。

  • RDD:弹性分布式数据集,是分布式内存的一个抽象概念,提供了一种高度受限的共享内存模型。

  • DAG:有向无环图,反映RDD之间的依赖关系。

  • Task:运行在Executor上的工作单元。

  • Job:一个Job包含多个RDD及作用于相应RDD上的各种操作。

  • Stage:是Job的基本调度单位,一个Job会分为多组Task,每组Task被称为Stage,或者也被称为TaskSet,代表一组关联的,相互之间没有Shuffle依赖关系的任务组成的任务集。

  • Cluter Manager:指的是在集群上获取资源的外部服务。目前有三种类型 1) Standalon : spark原生的资源管理,由Master负责资源的分配 2) Apache Mesos:与hadoop MR兼容性良好的一种资源调度框架 3) Hadoop Yarn: 主要是指Yarn中的ResourceManager

应用场景

 

 

复杂的批量数据处理

基于历史数据的交互式查询

基于时实数据流的数据处理

spark运行架构

RDD:弹性,数据可大可小,分区可以变化,最核心的数据抽象

DAG:有向无环图,反应RDD之间的依赖关系

Executor:进程》工作节点,每个工作节点运行一个Executor,派生出线程

Application:程序

一组多重架构

 

 

 

集群资源管理器

 

 

应用--》分成多个作业--》每个作业又被分成多个任务

spark运行基本流程

 

 

Spark运行架构特点

每个Application都有自己专属的Executor进程,并且该进程在Application运行期间一直驻留。Executor进程以多线程的方式运行Task。 Spark运行过程与资源管理器无关,只要能够获取Executor进程并保存通信即可。 Task采用数据本地性和推测执行等优化机制。

流程

  1. 为应用构建起基本的运行环境,即由Driver创建一个SparkContext进行资源的申请、任务的分配和监控

  2. 资源管理器为Executor分配资源,并启动Executor进程

  3. SparkContext根据RDD的依赖关系构建DAG图,DAG图提交给DAGScheduler解析成Stage,然后把一个个TaskSet提交给底层调度器TaskScheduler处理。 Executor向SparkContext申请Task,TaskScheduler将Task发放给Executor运行并提供应用程序代码

  4. Task在Executor上运行把执行结果反馈给TaskScheduler,然后反馈给DAGScheduler,运行完毕后写入数据并释放所有资源。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐