在Kubernetes中公开Spark Worker(标准输出和标准错误)日志

3
我有一个Spark集群,其中一个Master和4个Workers在一个3节点的Kubernetes集群中运行。Spark UI和Master通过Ingress/NodePort公开,并因此可以从Kubernetes集群外访问。
但是,Worker端口没有公开。因此,无法通过UI访问Worker日志(stdout和stderr)。日志URL被重定向到,等。
我的设置是两个Worker Pod在同一台机器上运行。因此,即使我NodePort公开Workers,也会存在端口冲突,因为相同的端口将被分配给机器上的两个Workers。Spark历史服务器仅提供事件日志,而不是Worker日志。
如何解决这个问题?是否有一种方法可以动态分配Workers的NodePort值?
1个回答

1

我相信你所说的是SPARK_WORKER_WEBUI_PORT而不是下面描述的SPARK_WORKER_PORT,因为它被分配了一个随机端口。

Spark

这有点棘手,因为每个节点只能公开一个端口。如果每个节点有两个Spark工作器,您可以为每个节点创建两个部署,一个将SPARK_WORKER_WEBUI_PORT公开在8081上,另一个在8082上,并确保每个节点仅安排一个Pod。
您可以通过容器环境变量传递这些值。

我知道这个问题。但是我们的需求限制了我们不能每台机器只有一个工人。因此出现了问题。 - Ram Krishnan
谢谢,但那不完全是我们正在寻找的。 - Ram Krishnan
@RamKrishnan - 我同意 - 最大的好处是可以将许多工作程序压缩到一个节点上。你找到解决这个问题的方法了吗? - alex
你是否在Kubernetes上本地运行Spark?使用它们内置的操作器吗? - Rico
你能找到一种将stdout、stderr暴露给历史服务器的方法吗? - Krishna Modi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接