我有一个奇怪的问题,在kubernetes上运行的spark作业失败了,在有大量洗牌的作业中,出现了大量“丢失洗牌x的输出位置”的情况。增加执行器内存没有帮助。在本地[*]模式下,在kubernetes集群的一个节点上运行相同的作业运行得很好,但是我怀疑这与kubernetes或底层docker有关。当一个执行者死后,pod会立即被删除,所以我无法找出失败的原因。有没有一个选项,让失败的豆荚周围,我可以查看他们的日志?
我有一个奇怪的问题,在kubernetes上运行的spark作业失败了,在有大量洗牌的作业中,出现了大量“丢失洗牌x的输出位置”的情况。增加执行器内存没有帮助。在本地[*]模式下,在kubernetes集群的一个节点上运行相同的作业运行得很好,但是我怀疑这与kubernetes或底层docker有关。当一个执行者死后,pod会立即被删除,所以我无法找出失败的原因。有没有一个选项,让失败的豆荚周围,我可以查看他们的日志?
2条答案
按热度按时间rqqzpn5f1#
执行器在任何失败时都会被默认删除,除非您在k8s代码上自定义spark或使用一些高级k8s工具,否则您将无法对其执行任何操作。您可以做的(最简单的方法可能是开始)是配置一些外部日志收集器,例如grafana-loki,只需单击一下就可以部署到任何k8s集群,或者一些elk堆栈组件。这些将帮助您保存日志,即使删除了pod。
2w3kk1z52#
您可以按如下方式查看以前终止的pod的日志:
同时使用
spec.ttlSecondsAfterFinished
这里提到的工作领域