2.5.1 数据流与控制流
考虑到信息资源的碎片化过程和集成化处理中的计算模式的多样性(如流计算、用户交互、图计算等),本平台推荐采用基于Spark和YARN的集群管理技术,而不是Hadoop的集群管理技术。从Spark和YARN的集成角度看,Spark Driver(以下简称Driver)可以部署在YARN的AM,也可以运行在YARN的客户端。但是,从云计算环境下的信息资源集成与服务,尤其是碎片化阅读与传播角度看,用户往往需要的是瘦客户端,因此,本平台推荐将Driver部署在YARN的AM上,而不是部署在客户端上。图2-16给出了本平台中的主要数据流与控制流的设计方案。
图2-16 本平台中的主要数据流与控制流的设计方案
(1)用户通过自己的客户端向YARN的RM(资源管理器)提交数据和程序。在此,用户提交的数据可以是完整资源(待碎片化处理的信息资源)、碎片信息资源(待集成处理的信息资源);用户提交的程序可以是以下代码:
•复杂的碎片化处理或集成化处理代码。
•简单的碎片化处理或集成化处理代码,如处理类型标识。
•无程序代码:按此云平台的默认处理代码(先碎片化处理,后集成处理)。
(2)YARN的RM选择一个YARN的NM(节点管理器),并将此NM指定为YARN的AM。
(3)NM启动AM,并完成作业的初始化工作。
(4)AM采用Spark Context创建一个Driver,Driver的本质是运行main函数并且创建Spark Context的程序。Driver采用基于DAG的执行引擎,根据DAG中RDD之间的世系关系(lineage)进一步将用户提交的作业转换为Stages以及更小粒度的任务。
(5)Driver向YARN的RM申请运行任务需要的资源。
(6)YARN的RM为任务分配满足要求的NM,并在NM上创建Spark Executor(以下简称Executor)。
(7)已创建的Executor向Driver注册自己的信息。
(8)Driver将应用程序的代码和文件传送给对应的Executor。
(9)Executor运行任务,完成后将结果返回给Driver或者写入HDFS或其他介质。