[第二章] spark-yarn原理分析

在上一篇文章里我们主要是分析了spark standlane内核的执行原理,本节主要是对spark在yarn上的执行原理进行分析。
spark在yarn上执行分两种:
1:spark yarn-cluster
2:spark yarn-client

我们先说下yarn-cluster,
1:我们把写好的程序打包在yarn集群的某一个客户端操作spark-submit提交(注意脚本里的参数与standalone不同)
这时,发送请求到ResourceManager(RM)请求启动ApplicationMaster(AM)

2:RM接收请求,分配Container,在某一个NodeManager(NM)上启动ApplicationMaster

3:NM接收到RM的通知,启动ApplicationMaster.这个时候其实这个NM就是我们说的Driver,ApplicationMaster反过来会找RM,请求Container,来启动Executor

4:RM会分配一批Container给ApplicationMaster用于启动executor,ApplicationMaster会连接其他NM,来启动executor,这里的NM相当于Worker
executor启动后,会向ApplicationMster反向注册。余下的原理与standalone一样

spark yarn-client

1:我们把写好的程序打包在yarn集群的某一个客户端操作spark-submit提交(注意脚本里的参数与standalone不同)
这时,发送请求到ResourceManager(RM)请求启动ApplicationMaster(AM)

2:RM接收请求,分配Container,在某一个NodeManager(NM)上启动ApplicationMaster,但是这里的AM是一个叫ExecutorLanuch进程。

3:NM接收到RM的通知,启动ApplicationMaster.这个时候其实这个NM就是我们说的Driver,ApplicationMaster反过来会找RM,请求Container,来启动Executor

4:RM会分配一批Container给ApplicationMaster用于启动executor,ApplicationMaster会连接其他NM,来启动executor,这里的NM相当于Worker
executor启动后,这里与yarn-cluster不一样,executor 要向本地(yarn集群的某一个客户端操作spark-submit提交)的机器反向注册,因为本地其实会启动一个Driver进程

总结:
yarn-client用于测试,因为,driver运行在本客户端,负责调度application,会与集群产生超大量的网络通信,从而导致网上流量增大。好处是本地执行,可以看到所有的log,方便调试
yarn-cluster用于生产中,driver运行在NM中,没有网网卡流量激增问题缺点:调试不方便,本地用spark-sumbit提交后,看不到log,只能通过yarn -application -id命令来查看,很不方便。

你可能感兴趣的:([第二章] spark-yarn原理分析)