集群角色:
Master:负责资源的分配,类似yarn的resourceManager<br /> Worker: 资源节点,类似yarn的nodemanager<br /> spark集群中内置的资源调度器就是Master、Worker<br /> Master、Worker是随着spark集群的启动而启动,随着集群的停止而关闭<br /> Driver: <br /> 1、负责运行main方法,将程序转成job执行<br /> 2、负责任务的调度<br /> 3、负责任务执行过程中webui界面,所以停止后hadoop102:4040会关闭网页<br /> 4、负责任务的切分、提交等<br /> Driver类似MR的ApplicationMaster,Driver随着任务的提交而创建,任务完成而消失
Executor: 任务的执行进程,executor中可以执行多个task<br /> executor随着任务的提交而创建,任务完成而消失
1、standalone模式: 使用spark自带的资源调度器[Master、Worker]
任务提交:
bin/spark-submit --master spark://master ip:7077,... --total-executor-cores N --executor-cores M --executor-memory U --class 带有main方法的主类 xxx.jar 参数 参数 ...
standalone运行模式: client模式与cluster模式<br /> client模式与cluster模式的区别: Driver的位置不一样<br /> client模式: Driver在client端,此时不能关闭client端,因为关闭client端Driver会消失,Driver消失就不能进行任务调度,整个程序会终止【一般用于测试】<br /> client模式运行流程:<br /> 1、通过bin/spark-submit脚本提交spark程序,此时会创建一个SparkSubmit进程,在SparkSubmit进程中创建client、Driver<br /> 2、Driver向Master注册任务,申请资源<br /> 3、Master会筛选资源充足的Worker,让Worker启动executor<br /> 4、executor向Driver反向注册,申请计算任务<br /> 5、Driver将task提交到executor中执行<br /> 6、等到所有task都执行完成,此时任务完成,释放资源<br /> Cluster模式: Driver在任意一个Worker上,可以关闭client端,不能影响Driver的执行,任务调度正常进行【一般用于生产】<br /> cluster模式运行流程:<br /> 1、通过bin/spark-submit脚本提交spark程序,此时会创建一个SparkSubmit进程,在SparkSubmit进程中创建client<br /> 2、client向Master申请启动Driver<br /> 3、Master在一个Worker中启动Driver<br /> 4、Driver向Master注册任务,申请资源<br /> 5、Master会筛选资源充足的Worker,让Worker启动executor<br /> 6、executor向Driver反向注册,申请计算任务<br /> 7、Driver将task提交到executor中执行<br /> 8、等到所有task都执行完成,此时任务完成,释放资源
2、yarn模式: 使用yarn作为资源调度器
任务提交:
bin/spark-submit --master yarn --num-executor N --executor-cores M --executor-memory T --class 带有main方法的主类 xxx.jar 参数 参数 ...
yarn运行模式: client模式与cluster模式<br /> client模式与cluster模式的区别: Driver的位置不一样<br /> client模式: Driver在client端,此时不能关闭client端,因为关闭client端Driver会消失,Driver消失就不能进行任务调度,整个程序会终止【一般用于测试】<br /> client模式运行流程:<br /> 1、通过bin/spark-submit脚本提交spark程序,此时会创建一个SparkSubmit进程,在SparkSubmit进程中创建client、Driver<br /> 2、Driver向ResourceManager注册任务,申请启动ApplicationMaster<br /> 3、RM会在其中一个NodeManager中启动ApplicationMaster<br /> 4、ApplicationMaster向RM申请资源<br /> 5、RM会将资源列表返回给ApplicationMaster<br /> 6、ApplicationMaster向NM发起请求,要求启动executor<br /> 7、NM启动executor,executor启动之后会向Driver反向注册,申请任务计算<br /> 8、Driver提交task到executor中执行<br /> 9、等到所有task都执行完成,此时任务完成,ApplicationMaster注销自己释放资源<br /> cluster模式: Driver在ApplicationMaster进程中,可以关闭client端,不能影响Driver的执行,任务调度正常进行【一般用于生产】<br /> cluster模式运行流程:<br /> 1、通过bin/spark-submit脚本提交spark程序,此时会创建一个SparkSubmit进程,在SparkSubmit进程中创建client<br /> 2、client会向RM申请启动ApplicationMaster<br /> 3、RM会在启动一个NM上启动ApplicationMaster,同时在ApplicationMaster进程中启动Driver线程<br /> 5、ApplicationMaster向RM申请资源<br /> 6、RM会将资源列表返回给ApplicationMaster<br /> 7、ApplicationMaster向NM发起请求,要求启动executor<br /> 8、NM启动executor,executor启动之后会向Driver反向注册,申请任务计算<br /> 9、Driver提交task到executor中执行<br /> 10、等到所有task都执行完成,此时任务完成,ApplicationMaster注销自己释放资源