ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

01 Spark架构与运行流程

2021-03-14 17:33:34  阅读:160  来源: 互联网

标签:SparkContext 01 架构 MapReduce Streaming Executor Spark 运行


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调度器,运行完毕后写入数据并释放所有资源。

标签:SparkContext,01,架构,MapReduce,Streaming,Executor,Spark,运行
来源: https://www.cnblogs.com/pclw/p/14533238.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有