集群角色:

  1. Master:负责资源的分配,类似yarnresourceManager<br /> Worker: 资源节点,类似yarnnodemanager<br /> spark集群中内置的资源调度器就是MasterWorker<br /> MasterWorker是随着spark集群的启动而启动,随着集群的停止而关闭<br /> Driver: <br /> 1、负责运行main方法,将程序转成job执行<br /> 2、负责任务的调度<br /> 3、负责任务执行过程中webui界面,所以停止后hadoop102:4040会关闭网页<br /> 4、负责任务的切分、提交等<br /> Driver类似MRApplicationMaster,Driver随着任务的提交而创建,任务完成而消失
  2. Executor: 任务的执行进程,executor中可以执行多个task<br /> executor随着任务的提交而创建,任务完成而消失

1、standalone模式: 使用spark自带的资源调度器[Master、Worker]
任务提交:

  1. bin/spark-submit --master spark://master ip:7077,... --total-executor-cores N --executor-cores M --executor-memory U --class 带有main方法的主类 xxx.jar 参数 参数 ...
  1. standalone运行模式: client模式与cluster模式<br /> client模式与cluster模式的区别: Driver的位置不一样<br /> client模式: Driverclient端,此时不能关闭client端,因为关闭clientDriver会消失,Driver消失就不能进行任务调度,整个程序会终止【一般用于测试】<br /> client模式运行流程:<br /> 1、通过bin/spark-submit脚本提交spark程序,此时会创建一个SparkSubmit进程,在SparkSubmit进程中创建clientDriver<br /> 2DriverMaster注册任务,申请资源<br /> 3Master会筛选资源充足的Worker,让Worker启动executor<br /> 4executorDriver反向注册,申请计算任务<br /> 5Drivertask提交到executor中执行<br /> 6、等到所有task都执行完成,此时任务完成,释放资源<br /> Cluster模式: Driver在任意一个Worker上,可以关闭client端,不能影响Driver的执行,任务调度正常进行【一般用于生产】<br /> cluster模式运行流程:<br /> 1、通过bin/spark-submit脚本提交spark程序,此时会创建一个SparkSubmit进程,在SparkSubmit进程中创建client<br /> 2clientMaster申请启动Driver<br /> 3Master在一个Worker中启动Driver<br /> 4DriverMaster注册任务,申请资源<br /> 5Master会筛选资源充足的Worker,让Worker启动executor<br /> 6executorDriver反向注册,申请计算任务<br /> 7Drivertask提交到executor中执行<br /> 8、等到所有task都执行完成,此时任务完成,释放资源

2、yarn模式: 使用yarn作为资源调度器
任务提交:

  1. bin/spark-submit --master yarn --num-executor N --executor-cores M --executor-memory T --class 带有main方法的主类 xxx.jar 参数 参数 ...
  1. yarn运行模式: client模式与cluster模式<br /> client模式与cluster模式的区别: Driver的位置不一样<br /> client模式: Driverclient端,此时不能关闭client端,因为关闭clientDriver会消失,Driver消失就不能进行任务调度,整个程序会终止【一般用于测试】<br /> client模式运行流程:<br /> 1、通过bin/spark-submit脚本提交spark程序,此时会创建一个SparkSubmit进程,在SparkSubmit进程中创建clientDriver<br /> 2DriverResourceManager注册任务,申请启动ApplicationMaster<br /> 3RM会在其中一个NodeManager中启动ApplicationMaster<br /> 4ApplicationMasterRM申请资源<br /> 5RM会将资源列表返回给ApplicationMaster<br /> 6ApplicationMasterNM发起请求,要求启动executor<br /> 7NM启动executorexecutor启动之后会向Driver反向注册,申请任务计算<br /> 8Driver提交taskexecutor中执行<br /> 9、等到所有task都执行完成,此时任务完成,ApplicationMaster注销自己释放资源<br /> cluster模式: DriverApplicationMaster进程中,可以关闭client端,不能影响Driver的执行,任务调度正常进行【一般用于生产】<br /> cluster模式运行流程:<br /> 1、通过bin/spark-submit脚本提交spark程序,此时会创建一个SparkSubmit进程,在SparkSubmit进程中创建client<br /> 2client会向RM申请启动ApplicationMaster<br /> 3RM会在启动一个NM上启动ApplicationMaster,同时在ApplicationMaster进程中启动Driver线程<br /> 5ApplicationMasterRM申请资源<br /> 6RM会将资源列表返回给ApplicationMaster<br /> 7ApplicationMasterNM发起请求,要求启动executor<br /> 8NM启动executorexecutor启动之后会向Driver反向注册,申请任务计算<br /> 9Driver提交taskexecutor中执行<br /> 10、等到所有task都执行完成,此时任务完成,ApplicationMaster注销自己释放资源