赞
踩
首先通过Spark客户端提交任务到Spark集群,然后Spark任务在执行的时候会读取数据源HDFS中的数据,将数据加载到内存中,转化为RDD,然后针对RDD调用一些高阶函数对数据进行处理,中间可以调用多个高阶函数,最终把计算出来的结果数据写到HDFS中。
RDD通常通过Hadoop上的文件,即HDFS文件进行创建,也可以通过程序中的集合来创建
RDD是Spark提供的核心抽象,全称为Resillient Distributed Dataset,即弹性分布式数据集
RDD的特点:
在Standalone模式下,在Spark集群中主要包含以下进程。
工作原理:如果所示
(1)在Spark客户节点上启动Driver进程,创建SparkContext,开始执行spark代码。
(2)Driver进程启动后做一些初始化操作,它会找到集群的Master节点,对Spark任务进程注册。
(3)Master节点收到Spark任务的注册申请后,会发送请求给Worker节点,进行资源的调度和分配。
(4)Worker节点在收到Master节点的请求后,会为Spark任务启动Executor进程,会启动一个或多个Executor。具体启动多少,由任务的参数配置决定的
(5)Executor在启动之后,会向Driver进行反注册,这样Driver就知道哪些Executor在为它服务了。
(6)Driver会根据在spark任务中对RDD定义的操作,提交一堆的Task到Executor上执行。Task中执行的其实就是flatMap、map这些高阶函数。
ON YARN 模式下的Spark架构,可以细分为:
YARN-Client模式下的 Spark ON YARN 架构
YARN-Cluster模式下的Spark ON YARN 架构
YARN-Client模式下的 Spark ON YARN 架构如图所示:
(1)Spark客户端节点向YARN中提交Spark任务:首先向YARN的ResourceManager申请启动AppMaster(Application Master),然后在Driver进程中创建SparkContext
(2)ResourceManager在收到请求后,会在集群中选择一个NodeManager为应用程序分配第一个Container,并且在这个Container中启动应用程序的AppMaster。YARN-Client模式中的AppMaster只会联系SparkContext进行资源的分配。
(3)AppMaster向ResourceManager进行注册,根据任务信息向ResourceManager申请资源(Container)
(4)AppMaster在申请到资源(Container)后。会与对应的NodeManager进行通信,创建Container,启动Executor。
(5)在Driver进程中的SparkContext会分配Task给Executor去执行,Executor运行Task并向Driver汇报执行的状态和进度,从而可以在任务失败的时候重新启动任务。
(6)在Spark运行任务完成后,SparkContext向ResourceManager申请注销并关闭自己。
注意:在YARN-Client模式和YARN-Cluster模式下,Spark ON YARN 架构的区别是:Driver进程运行的位置不同
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。