3.1 Yarn 模式运行机制

3.1.1 YARN Cluster 模式

观看 ppt

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

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

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

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

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

  6. AMRM注册,申请资源;

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

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

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

注意:

  • SparkSubmitApplicationMasterCoarseGrainedExecutorBacken是独立的进程;

  • ClientDriver是独立的线程;

  • Executor是一个对象。


3.1.2 Yarn Client 模式

观看 ppt

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

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

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

  4. YarnClientSchedulerBackendRM发送指令:bin/java ExecutorLauncher

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

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

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

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

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

注意:SparkSubmitExecutorLauncherCoarseGrainedExecutorBacken是独立的进程;ClientDriver是独立的线程;Executor是一个对象。

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

results matching ""

    No results matching ""