码迷,mamicode.com
首页 > 其他好文 > 详细

01 Spark架构与运行流程

时间:2021-03-16 13:21:18      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:调度   解决   min   loading   管理器   height   exec   资源   bsp   

1. 阐述Hadoop生态系统中,HDFS, MapReduce, Yarn, Hbase及Spark的相互关系,为什么要引入Yarn和Spark。

HDFS是Hadoop体系中数据存储管理的基础,它是一个高度容错的系统,能检测和应对硬件故障,在低成本的通用硬件上运行。

HBase构建在HDFS之上的分布式,面向列的NoSQL数据库。HBase中保存的数据可以使用MapReduce来处理,它将数据存储和并行计算完美地结合在一起。

Yarn是一个分布式资源统一管理器,可以在上面运行各种计算框架(包括MapReduce、Spark、Storm、MPI等)。

Spark是一个快速、通用的大规模数据处理引擎,和MapReduce在同一个层级,主要解决分布式计算框架的问题。Spark可以说是对Hadoop MapReduce的改进,同时又兼容Hadoop家族,它可以运行在Yarn之上,负责存储的仍然是HDFS,它替代的是MapReduce计算框架,获取更高更快更强的计算速度。

Hadoop虽然已成为大数据技术的事实标准,但其本身还存在诸多缺陷,最主要的缺陷是MapReduce计算模型延迟过高,无法胜任实时、快速计算的需求,因而只适用于离线批处理的应用场景。Spark最大的特点就是将计算数据、中间结果都存储在内存中,大大减少了I/O开销。因此,Spark更适合于迭代运算比较多的数据挖掘与机器学习运算。

 

2. Spark已打造出结构一体化、功能多样化的大数据生态系统,请简述Spark生态系统。

Spark的生态系统主要包含了Spark Core、Spark SQL、Spark Streaming、Structured Streaming、MLlib和GraphX等组件,各个组件的具体功能如下:

Spark Core:Spark Core包含Spark最基础和最核心的功能,如内存计算、任务调度、部署模式、故障恢复、存储管理等,主要面向批数据处理。

Spark SQL:Spark SQL是用于结构化数据处理的组件,允许开发人员直接处理RDD,同时也可查询Hive,HBase等外部数据源。

Spark Streaming:Spark Streaming是一种流计算框架,可以支持高吞吐量、可容错处理的实时流数据处理,其核心思路是将流数据分解成一系列短小的批处理作业,每个短小的批处理作业都可以使用Spark Core进行快速处理。

Structrued Streaming:Structured Streaming是一种基于Spark SQL引擎构建的、可扩展且容错的流处理引擎。

MLlib:MLlib提供了常用机器学习算法的实现,包括聚类、分类、回归、协同过滤等,降低了机器学习的门槛,开发人员只需具备一定的理论知识就能进行机器学习的工作。

GraphX:GraphX是Spark中用于图计算的API,可认为是Pregel在Spark上的重写和优化,GraphX性能良好,拥有丰富的功能和运算符,能在海量数据上自如地运行复杂的图算法。

 

3. 用图文描述你所理解的Spark运行架构,运行流程。

Spark运行架构由四部分组成:

1.集群资源管理器(Cluster Manager):YARN或者Mesos等资源管理框架

2.运行作业任务的工作节点(Worker Node)

3.每个应用的任务控制节点(Driver Program/Driver)

4.每个工作节点上负责具体任务的执行进程(Executor)

技术图片

Spark的运行基本流程 :

1、当一个Spark应用被提交时,首先需要为这个应用构建起基本的运行环境,即由任务控制节点(Driver)创建一个SparkContext对象,由Sparkcontext负责和资源管理器的通信以及进行资源的申请、任务的分配和监控等,SparkContext会向资源管理器注册并申请运行Executor的资源,SparkContext可以看成是应用程序连接集群的通道。

2、资源管理器为Executor分配资源,并启动Executor进程,Executor运行情况将随着"心跳"发送到资源管理器上。

3、SparkContext根据RDD的依赖关系构建DAG图,DAG图提交给DAG调度器进行解析,将DAG图分解成多个‘阶段’(每个阶段都是一个任务集),并且计算出各个阶段之间的依赖关系,然后把一个个“任务集”提交给底层的任务调度器进行处理;Executor向SparkContext申请任务,任务调度器将任务分发给Executor运行,同时,SparkContext将应用程序代码发放给Executor。

4、任务在Executor上运行,把执行结果反馈给任务调度器,然后反馈给DAG调度器,运行完毕后写入数据并释放所有资源。

技术图片

01 Spark架构与运行流程

标签:调度   解决   min   loading   管理器   height   exec   资源   bsp   

原文地址:https://www.cnblogs.com/pclw/p/14533238.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!