Spark学习(1)-架构原理

2019-06-11  本文已影响0人  奔跑地蜗牛

Spark是什么

Spark是基于HDFS等分布式存储之上的数据处理分析框架,它擅长批量数据处理,处理流工作负载,交互式查询,机器学习等;它可以通过standalone模式,yarn-client或者yarn-cluster等模式在hadoop集群中运行;而依托在spark数据处理之上的有Spark Sql,Spark Stream,MLlib,Graphx等组件;
其具体架构示意图如下:


Spark示意图.png

上图中最上层最组件说明如下:

接下来说下Spark架构,Spark架构组成图如下:


Spark组成.png

如上图,在Spark架构中有以下几个组成:

Spark怎么运行

Spark运行流程图如下:


Spark运行.png

流程讲解如下:

流程术语如下:

将流程术语串起来就得到了Spark 运行层次图如下:


Spark运行.png

一个spark可以有多个stage,每个stage由同种task构成,task可以分为shuffleMapTask和ResultTask,其中
Dependency也分为ShuffleDependency和NarrowDependency;

Spark运行模式有哪些

Spark运行模式比较丰富,运行在单机上可以有:本地模式和伪分布式模式;运行在分布式环境下,根据结合的资源调度框架又有不同的划分,本文就介绍:Spark内建的Standalone模式和Yarn-client模式和Yarn-cluster模式

Standalone模式(独立模式)

Standalone模式是Spark内建的一种资源调度框架,它采用Master/Slave模式,通过zookeeper来保证Master的高可用,其框架图如下:(参考https://www.cnblogs.com/cxxjohnson/p/8909578.html)

Standalone模式架构.png

该模式中有Master节点,slave节点,worker节点,其中Driver既可以运行在Master节点上也可以运行在本地客户端,如果通过spark-shell提交job,则Diver运行在master节点上,如果通过spark-submit提交job或者在Eclips、IDEA等开发平台上使用”new SparkConf.setManager(“spark://master:7077”)”方式运行Spark任务时,Driver是运行在本地Client端上的;
具体运行过程如下:

Standalone.png
运行说明如下:

yarn-client模式

Spark on yarn运行模式根据Driver运行位置可以分为:yarn-client模式和yarn-cluster模式(也就是Yarn-standalone模式)
其yarn-client模式是因为Driver运行在本地,所以client可以和Spark Application进行交互,通过WebUI进行访问;
yarn-client运行过程图如下:


Yarn-client.png

过程说明如下:

Yarn-cluster模式

客户端通过向Yarn cluster提交应用程序的方式来执行数据处理,那么Yarn会将该Application作为两个步骤来完成:

其具体执行流程如下图:


Yarn-cluster.png

流程说明如下:

Yarn-client和Yarn-cluster模式区别:
Yarn-client和Yarn-cluster模式最大区别在于是否有ApplicationMaster运行Driver,在Yarn-client中由Client运行Driver,而ApplicationMaster主要用来向ResourceManager申请Containers来作Executor,之后由Client和相应的Executor所在Container进行通信,这样用户可以直接查看程序进行情况,比较适合交互式任务执行;
而在Yarn-cluster中,Driver是运行在ApplicationMaster中,ApplicationMaster不仅要和ResourceManager保持联系,并申请资源,同时还需要和containers保持联系,并下发任务和监视任务执行情况;

上一篇 下一篇

猜你喜欢

热点阅读