Spark十二 集群运行

1 运行时架构


1) 驱动器节点Driver

    驱动器程序的两个功能

    > 把用户程序转化为任务

        (1) 驱动器程序把用户程序转为多个物理执行单元,称为任务   

        (2) 程序从输入数据创建一系列RDD,转化操作生成新的RDD,最后执行行动操作

        (3) 由操作隐式创建逻辑有向无环图,驱动器运行时把DAG转为物理执行计划

        (4) Spark把DAG转为一系列步骤,每个步骤由多个任务组成,任务是Spark的最小工作单元

    > 为执行器节点调度任务

        (1) 驱动器程序在各执行器进程间协调任务的调度

扫描二维码关注公众号,回复: 2047792 查看本文章

        (2) 执行器进程启动后,在驱动器进程注册自己,每个执行器节点代表一个能够处理任务和存储RDD的进程

        (3) 驱动器程序根据当前执行器节点集合位置,分配合适的执行器进程

        (4) 执行器进程将数据缓存后,驱动器程序会跟踪缓存数据的位置,并继续调度之后的任务,减少网络传输

2) 执行器节点

    > 是工作进程,负责在Spark中运行任务,任务相互独立 

    > 所有执行器节点同时启动,伴随Spark应用的声明周期

    > 两大作用

        (1) 运行任务,将结果返回给驱动器程序

        (2) 通过块管理器(Block Manager)为RDD提供内存式存储

3) 集群管理器

    > 集群管理器是可插拔的,独立调度器,YARN,Mesos

    > 申请资源启动执行器节点,有时用来启动驱动器节点

总结:

(1) 用户使用spark-submit脚本提交应用

(2) 脚本启动驱动器程序,调用用户定义的main()

(3) 驱动器程序与集群管理器通信,申请资源启动执行器节点

(4) 集群管理器为驱动器程序启动执行器节点

(5) 驱动器进程执行引用操作,根据定义的转化操作和行动操作,把工作以任务的方式发送到执行器进程

(6) 任务在执行器进程中计算并保存结果

(7) 退出main(),或者调用SparkContext.stop(),驱动器程序终止执行器进程,通过集群管理器释放资源


2 spark-submit部署应用

    1) 提交用户作业的统一工具 spark-submit

    2) 控制应用运行细节,一调度信息,二运行时依赖

3 打包代码和依赖

    如果依赖多个库,需要打包成一个大的jar包,使用:

    1) Maven

    2) sbt

    3) 依赖冲突

        > 修改应用依赖库的版本

        > "shading"

4 应用间和应用内调度

    配置调度策略,如公平调度器

5 集群管理器

    独立集群调度器,YARN, EC2, Mesos

猜你喜欢

转载自blog.csdn.net/weixin_42129080/article/details/80950755
今日推荐