3.1 Yarn 模式运行机制

3.1.1 YARN Cluster 模式

观看 ppt

  1. 执行脚本提交任务,实际是启动一个 SparkSubmit 的 JVM 进程;

  2. SparkSubmit 类中的 main方法反射调用Client的main方法;

  3. Client创建Yarn客户端,然后向Yarn发送执行指令:bin/java ApplicationMaster;

  4. Yarn框架收到指令后会在指定的NM中启动ApplicationMaster;

  5. ApplicationMaster启动Driver线程,执行用户的作业;

  6. AM向RM注册,申请资源;

  7. 获取资源后AM向NM发送指令:bin/java CoarseGrainedExecutorBacken;

  8. ExecutorBackend进程会接收消息,启动计算对象Executor并跟Driver通信,注册已经启动的Executor;

  9. Driver分配任务并监控任务的执行。

注意:

  • SparkSubmit、ApplicationMaster和CoarseGrainedExecutorBacken是独立的进程;

  • Client和Driver是独立的线程;

  • Executor是一个对象。


3.1.2 Yarn Client 模式

观看 ppt

  1. 执行脚本提交任务,实际是启动一个SparkSubmit的 JVM 进程;

  2. SparkSubmit伴生对象中的main方法反射调用用户代码的main方法;

  3. 启动Driver线程,执行用户的作业,并创建ScheduleBackend;

  4. YarnClientSchedulerBackend向RM发送指令:bin/java ExecutorLauncher;

  5. Yarn框架收到指令后会在指定的NM中启动ExecutorLauncher(实际上还是调用ApplicationMaster的main方法);

    object ExecutorLauncher {
    
     def main(args: Array[String]): Unit = {
       ApplicationMaster.main(args)
     }
    
    }
    
  6. AM向RM注册,申请资源;

  7. 获取资源后AM向NM发送指令:bin/java CoarseGrainedExecutorBacken;

  8. ExecutorBackend进程会接收消息,启动计算对象Executor并跟Driver通信,注册已经启动的Executor;

  9. Driver分配任务并监控任务的执行。

注意:SparkSubmit、ExecutorLauncher和CoarseGrainedExecutorBacken是独立的进程;Client和Driver是独立的线程;Executor是一个对象。

Copyright © 尚硅谷大数据 2019 all right reserved,powered by Gitbook
该文件最后修订时间: 2019-06-08 08:43:33

results matching ""

    No results matching ""