我在客户模式下运行spark-on-yarn。驱动程序被负载平衡器从applicationmaster中分离出来,负载平衡器在5分钟后终止非活动的tcp连接。这甚至会在5分钟后杀死活跃的Yarn作业。
这是因为applicationmaster打开到驱动程序的rpc连接并发送registerclustermanager消息。然后,它只在执行者的数量增加或减少时通过这个连接发送消息。这可能不是每五分钟发生一次。在最后一次rpc调用五分钟后,负载平衡器由于不活动而终止rpc连接,并且对rpc连接调用ondisconnected方法,终止作业。
这是一个公司环境,我无法更改有关删除非活动tcp会话的负载平衡器行为。我可以忍受Yarn作业超时后,他们是不活动的5分钟,但运行作业不应终止。
我怀疑正确的方法是对连接使用操作系统级的tcp keepalive。然而,我使用的spark版本还没有提供这个特性。
有没有什么方法可以解决这个问题而不用在rpc会话中手动实现keepalive或heartbeat机制的spark版本呢?
1条答案
按热度按时间eni9jsuy1#
我可以通过路由流量通过负载均衡器来解决这个问题。