如何解决负载均衡器后面的Spark yarn-client模式,可丢弃无效的TCP连接
我正在客户端模式下在YARN上运行Spark。通过负载平衡器将驱动程序与ApplicationMaster隔离,该负载平衡器会在5分钟后终止无效的TCP连接。 5分钟后,这甚至会杀死活动的YARN作业。
这是因为ApplicationMaster opens an RPC connection to the driver and sends the RegisterClusterManager message。之后,仅当执行者的数量增加或减少时,它才通过此连接发送消息。每五分钟可能不会发生一次。在上一次RPC调用之后五分钟,负载平衡器由于不活动而终止了RPC连接,并且在RPC连接上调用了onDisconnected方法,从而终止了YARN作业。
这是一个公司环境,我无法更改有关丢弃非活动TCP会话的负载平衡器行为。在YARN作业处于非活动状态5分钟后,我可以忍受它们超时,但是正在运行的作业不应终止。
我怀疑正确的方法是使用OS-level TCP keepalive for the connections。但是,我正在使用的Spark版本尚未提供此功能。
是否有任何方法可以解决此问题而无需滚动我自己的版本的Spark,该版本在该RPC会话中手动实现keepalive或心跳机制?
解决方法
我能够通过将流量路由通过负载均衡器来解决此问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。