Spark On Yarn两种模式
引入
一、当一个MR应用提交运行到Hadoop YARN上时
包含两个部分:应用管理者AppMaster和运行应用进程Process(如MapReduce程序MapTask和ReduceTask任务),如下图所示:
二、当一个Spark应用提交运行在集群上时
应用架构有两部分组成:Driver Program(资源申请和调度Job执行)和Executors(运行Job中Task任务和缓存数据),都是JVM Process进程:
而Driver程序运行的位置可以通过--deploy-mode 来指定,
值可以是:
1.client:表示Driver运行在提交应用的Client上(默认)
2.cluster:表示Driver运行在集群中(Standalone:Worker,YARN:NodeManager)
补充Driver是什么:
The process running the main() function of the application and creating the SparkContext
运行应用程序的main()函数并创建SparkContext的进程
注意
cluster和client模式最最本质的区别是:Driver程序运行在哪里
企业实际生产环境中使用cluster
client 模式
DeployMode为Client,表示应用Driver Program运行在提交应用Client主机上,示意图如下:
运行圆周率PI程序,采用client模式,命令如下:
代码语言:javascript复制SPARK_HOME=/export/server/spark
${SPARK_HOME}/bin/spark-submit
--master yarn
--deploy-mode client
--driver-memory 512m
--executor-memory 512m
--num-executors 1
--total-executor-cores 2
--class org.apache.spark.examples.SparkPi
${SPARK_HOME}/examples/jars/spark-examples_2.11-2.4.5.jar
10
http://node1:8088/cluster
cluster 模式
DeployMode为Cluster,表示应用Driver Program运行在集群从节点某台机器上,示意图如下:
运行圆周率PI程序,采用cluster模式,命令如下:
代码语言:javascript复制SPARK_HOME=/export/server/spark
${SPARK_HOME}/bin/spark-submit
--master yarn
--deploy-mode cluster
--driver-memory 512m
--executor-memory 512m
--num-executors 1
--total-executor-cores 2
--class org.apache.spark.examples.SparkPi
${SPARK_HOME}/examples/jars/spark-examples_2.11-2.4.5.jar
10
http://node1:8088/cluster
总结
Client模式和Cluster模式最最本质的区别是:Driver程序运行在哪里。
- Client模式:学习测试时使用,开发不用,了解即可
1.Driver运行在Client上,和集群的通信成本高
2.Driver输出结果会在客户端显示
- Cluster模式:生产环境中使用该模式
1.Driver程序在YARN集群中,和集群的通信成本低
2.Driver输出结果不能在客户端显示
3.该模式下Driver运行ApplicattionMaster这个节点上,由Yarn管理,如果出现问题,yarn会重启ApplicattionMaster(Driver)