天天看点

Standalone-client|cluster

Standalone-client

1.任务提交

./spark-submit 	
	--master spark://node1:7077 	#master在那个节点上
	--deploy-mode client 		#任务提交方式,client cluster两种,不写的情况下默认是client
	--class org.apache.spark.examples.SparkPi 	#类名
	../examples/jars/spark-examples_2.11-2.3.1.jar #类所在的jar包
	1000 #可写可不写,1000个application执行
           

2.执行流程图

Standalone-client|cluster

3.执行流程

3.1 客户端提交任务Application,并开启Driver
3.2 Driver向Master申请Application需要的资源
3.3 在Master返回对应的资源后,Driver会将任务task发送到对应的worker上执行
3.4 Worker将task的执行结果返回给Driver
           

4.注意:

client使用与任务测试阶段。Driver是在客户端启动的,即提交任务的节点。在Driver端可以看到任务的执行流程和任务结果。在生产环境不能使用,如果有一百个application提交到集群,则会有100个Driver在客户端执行,每个客户端都会与任务有交互,这样就会使客户端的流量急剧增加。

Standalone-cluster

1.提交任务

./spark-submit 	
	--master spark://node1:7077 	#master在那个节点上
	--deploy-mode cluster 		#任务提交方式,client cluster两种,不写的情况下默认是client
	--class org.apache.spark.examples.SparkPi 	#类名
	../examples/jars/spark-examples_2.11-2.3.1.jar #类所在的jar包
	1000 #可写可不写,1000个application执行
           

2.任务执行流程图

Standalone-client|cluster

3.执行流程

3.1 客户端提交任务Application
3.2 向Master申请启动Driver
3.3 Master会随机找一台任务不忙的节点启动Driver
3.4 Driver会向Master申请Application需要的资源
3.5 Driver将申请的worker分发task
3.6 Worker将任务执行情况和执行结果返回给Driver
           

4.注意

Driver是分散在集群中的,这样客户端的网卡流量激增问题就被解决了。但这时在客户端则无法查看到任务的执行情况

Driver与集群之间的通信

1.Driver向Master资源的申请

2.Driver向Worker分发任务

3.Worker向Driver汇报任务运行情况

4.Worker向Driver汇报任务结果

继续阅读