一、三种任务提交方式
1. 第一种,standalone模式
基于Spark自己的standalone集群。指定–master spark://bigdata01:7077
2. 第二种,是基于YARN的client模式。
指定–master yarn --deploy-mode client
使用场景:这种方式主要用于测试,查看日志方便一些,部分日志会直接打印到控制台上面,因为driver进程运行在本地客户端,就是提交Spark任务的那个客户端机器,driver负责调度job,会与yarn集群产生大量的通信,一般情况下Spark客户端机器和Hadoop集群的机器是无法内网通信,只能通过外网,这样在大量通信的情况下会影响通信效率,并且当我们执行一些action操作的时候数据也会返回给driver端,driver端机器的配置一般都不高,可能会导致内存溢出等问题。
3. 第三种,是基于YARN的cluster模式。【推荐】
指定–master yarn --deploy-mode cluster
使用场景:这种方式driver进程运行在集群中的某一台机器上,这样集群内部节点之间通信是可以通过内网通信的,并且集群内的机器的配置也会比普通的客户端机器配置高,所以就不存在yarn-client模式的一些问题了,只不过这个时候查看日志只能到集群上面看了,这倒没什么影响。
二、三种提交方式的区别
(1)左边是standalone模式,现在我们使用的提交方式,driver进程是在客户端机器中的,其实针对standalone模式而言,这个Driver进程也是可以运行在集群中的
(2) 中间的值yarn client模式,由于是on yarn模式,所以里面是yarn集群的进程,此时driver进程就在提交spark任务的客户端机器上了
(3)最右边这个是yarn cluster模式,driver进程就会在集群中的某一个节点上面。