Driver返回码和RM WebUI上应用状态显示不一致
问题
ApplicationMaster与ResourceManager之间通信发生长时间异常时,为什么Driver返回码和RM WebUI上应用状态显示不一致?
回答
在yarn-client模式下,Spark的Driver和ApplicationMaster作为两个独立的进程在运行。当Driver完成任务退出时,会通知ApplicationMaster向ResourceManager注销自身,即调用unregister方法。
由于是远程调用,则存在发生网络故障的可能性。当发生网络故障时,ApplicationMaster会使用Yarn客户端的重试机制进行重试。在达到最大重试次数之前网络恢复正常,则ApplicationMaster会正常退出。
如果超过重试次数和重试时长,则ApplicationMaster注销失败,ResourceManager会认为ApplicationMaster异常退出并尝试重新启动ApplicationMaster。新启动的ApplicationMaster在尝试连接已经退出的Driver失败后,会在ResourceManager页面上标记此次Application为FAILED状态。
这种情况为小概率事件且不影响Spark SQL对外展现的应用完成状态。也可以通过增大Yarn客户端连接次数和连接时长的方式减少此事件发生的概率。
配置详情请参见:
MRS 3.2.0之前版本:http://hadoop.apache.org/docs/r3.1.1/hadoop-yarn/hadoop-yarn-common/yarn-default.xml
MRS 3.2.0及之后版本:https://hadoop.apache.org/docs/r3.3.1/hadoop-yarn/hadoop-yarn-common/yarn-default.xml