一 yarn-cluster模式
1. 发送请求到ResourceManager,请求启动ApplicationMaster。
2. 在某个NodeManager上启动ApplicationMaster。
3. ApplicationMaster向ResourceManager申请container,启动executor。
4. 分配一批container,用于启动executor。
5. AM连接其它NM,启动executor。
6. executor启动后,向AM反向注册。
二 yarn-client模式
1. 发送请求到ResourceManager,请求启动ApplicationMaster。
2. 在某个NodeManager上分配一个container,启动ApplicationMaster。这里的AM其实只是一个ExecutorLanucher。
3. ApplicationMaster向ResourceManager申请container,启动executor。
4. 分配一批container,用于启动executor。
5. AM连接其它NM,启动executor。
6. executor启动后,反向注册到本地的Driver上。
注:红色字体为区分点。
yarn-cluster与yarn-client用途建议:
A. yarn-claster用于生产环境。Driver运行在nodemanager,不需要通过网络传输到提交机器,没有网卡流量激增的问题。
缺点在于,调试不方便。本地spark-submit后,看不到log,只能通过yarn application logs application_id这种命令来查看,很麻烦。
B. yarn-client用于测试环境。Driver运行在本地客户端,负责调度application,会与yarn集群产生超大量网络通信,从而导致网卡流量激增。
好处在于,可以在本地看到所有log,方便调试。