Spark on YARN有两种运行模式,如下
1、yarn-cluster:适合于生产环境。
Spark的Driver运行在ApplicationMaster中,它负责向YARN ResourceManager申请资源,并监督作业的运行状况。当用户提交了作业之后,
就可以关掉Client(启动Spark作业的客户端不需要一直存在于整个Spark作业运行生命周期),作业会继续在YARN上运行。yarn-cluster不适合
交互式应用。
2、yarn-client:适合于交互式应用、调试查看输出。
Spark的Driver运行在初始化Spark作业的客户端中,例如在用户输入或调试时,需要Spark作业的Driver运行在初始化作业的客户端进程中。这时候ApplicationMaster只是从
YARN中请求Executor,客户端会和请求的Container通信来调度作业。发行版的Spark二进制包中的bin/spark-shell就是一个很好交互式工具。
这两种模式主要区别在于任务调度taskschedule的区别,yarn-client是将任务调度的功能放在客户端,而yarn-cluster将任务放在资源管理器中。
参考官方文献:http://spark.apache.org/docs/latest/running-on-yarn.html