Spark 三种提交模式:Standalone | yarn-client | yarn-cluster



转载请注明 AIQ - 最专业的机器学习大数据社区  http://www.6aiq.com

AIQ 机器学习大数据 知乎专栏 点击关注

e7e7a2156c9e45a78d4df22666c29beb.png

一.Standalone 模式基于 spark 自己的 Master-Worker 集群。
就是之前的 spark-submit 提交的方式这里不再详细叙述。如果不清楚可以看这篇文章 如果要切换成第二种,第三种模式。将之前的 submit 脚本添加上–master 参数 设置为 yarn-cluster 或 yarn-client 即可。如果没有设置就是 Standalone 模式。
二. 基于 YARN 的 yarn-cluster 模式

1. 当我们使用 spark submit 提交到 yarn-cluster . 此时发送请求到 ResourceManager 。 请求启动 applicationMaster。applicationMaster 启动后会向 ResourceManager 请求 container,ResourceManager 接受到这个请求后会分配一个 container.

2. 然后在某个 NodeManager 上启动 ApplicationMaster.ApplicationMaster(相当于 driver)启动后会去和 ResourceManager 进行通信请求 container 。

3. 此时 ResourceManager 会给 ApplicationMaster 分配一定量的 container 去启动 executer. 然后 ApplicationMaster 去连接其他的 NodeManager。来启动 executer。然后 executer 启动后向 ApplicationMaster 反向注册。

三. 基于 YARN 的 yarn-client 模式
1. 当我们使用 spark submit 提交到 yarn-client . 本地会启动一个 driver 进程同时发送请求到 ResourceManager 。 请求启动 ExecutorLanucher。ExecutorLanucher 启动后会向 ResourceManager 请求 container,ResourceManager 接受到这个请求后会分配一个 container.

2. 然后在某个 NodeManager 上启动 ExecutorLanucher(其实类似与上文中的 ApplicationMaster,但是功能有限, 不同点在 1,3) .ExecutorLanucher 启动后会去和 ResourceManager 进行通信请求 container 。

3. 此时 ResourceManager 会给 ApplicationMaster 分配一定量的 container 去启动 executer. 然后 ExecutorLanucher 去连接其他的 NodeManager。来启动 executer。但是 executer 启动后向 spark 本地的 driver 进程反向注册。

总结:yarn-client 用于调试 driver 启动在本地。本地可以看到 log 方便调试。
而且本地调度会产生大量的网卡流量。
yarn-cluster 一般用于生产。但是调试不方便。
使用 yarn 需要在 spark-env.sh 中添加 Hadoop home


更多高质资源 尽在AIQ 机器学习大数据 知乎专栏 点击关注

转载请注明 AIQ - 最专业的机器学习大数据社区  http://www.6aiq.com