赞
踩
通常,Spark中计算的数据可以来自多个数据源,如Local File、HDFS等。最常用的是HDFS,用户可以一次读取大规模的数据进行并行计算。在计算完成后,也可以将数据存储到HDFS。
分解来看,Spark分成控制端(Driver)和执行端(Executor)。控制端负责任务调度,执行端负责任务执行。
读取文件的过程如图1 读取文件过程所示。
图1 读取文件过程
读取文件步骤的详细描述如下所示:
写入文件的过程如图2 写入文件过程所示。
图2 写入文件过程
HDFS文件写入的详细步骤如下所示:
Spark的计算调度方式,可以通过YARN的模式实现。Spark共享YARN集群提供丰富的计算资源,将任务分布式的运行起来。Spark on YARN分两种模式:YARN Cluster和YARN Client。
运行框架如图3 Spark on yarn-cluster运行框架所示。
图3 Spark on yarn-cluster运行框架
Spark on yarn-cluster实现流程:
首先由客户端生成Application信息,提交给ResourceManager。
ResourceManager为Spark Application分配第一个Container(ApplicationMaster),并在该Container上启动Driver。
ApplicationMaster向ResourceManager申请资源以运行Container。
ResourceManager分配Container给ApplicationMaster,ApplicationMaster和相关的NodeManager通讯,在获得的Container上启动Executor,Executor启动后,开始向Driver注册并申请Task。
Driver分配Task给Executor执行。
Executor执行Task并向Driver汇报运行状况。
运行框架如图4 Spark on yarn-client运行框架所示。
图4 Spark on yarn-client运行框架
Spark on yarn-client实现流程:(说明:在yarn-client模式下,Driver部署在Client端,在Client端启动。yarn-client模式下,不兼容老版本的客户端。推荐使用yarn-cluster模式。)
客户端向ResourceManager发送Spark应用提交请求,ResourceManager为其返回应答,该应答中包含多种信息(如ApplicationId、可用资源使用上限和下限等)。Client端将启动ApplicationMaster所需的所有信息打包,提交给ResourceManager上。
ResourceManager收到请求后,会为ApplicationMaster寻找合适的节点,并在该节点上启动它。ApplicationMaster是Yarn中的角色,在Spark中进程名字是ExecutorLauncher。
根据每个任务的资源需求,ApplicationMaster可向ResourceManager申请一系列用于运行任务的Container。
当ApplicationMaster(从ResourceManager端)收到新分配的Container列表后,会向对应的NodeManager发送信息以启动Container。
ResourceManager分配Container给ApplicationMaster,ApplicationMaster和相关的NodeManager通讯,在获得的Container上启动Executor,Executor启动后,开始向Driver注册并申请Task。(说明:正在运行的container不会被挂起释放资源。)
Driver分配Task给Executor执行。Executor执行Task并向Driver汇报运行状况。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。