apache-spark - 在 Kubernetes 中公开 Spark Worker (stdout stderr) 日志
问题描述
我有一个 Spark 集群,其中一个 Master 和 4 个 Worker 在 3 节点 Kubernetes 集群中运行。Spark UI 和 Master 通过 Ingress/NodePort 公开,因此可以从 Kubernetes 集群外部访问。
但是,工作端口没有暴露。
因此,无法通过 UI 访问 Worker 日志(stdout 和 stderr)。
日志 URL 被重定向到<Worker1_Pod_IP:8080>
,<Worker2_Pod_IP:8080>
依此类推。
我的设置是在同一台机器上运行两个工作 pod。因此,即使我 NodePort 公开了工作人员,端口也会发生冲突,因为将为机器上的两个工作人员分配相同的端口。 Spark History 服务器只提供 Event Logs 而不是 Worker 日志。
如何解决?有没有办法可以为工作人员动态分配 NodePort 值
解决方案
我相信你在谈论SPARK_WORKER_WEBUI_PORT
而不是SPARK_WORKER_PORT
如下所述,因为它分配了一个随机端口。
这有点棘手,因为每个节点只能公开一个端口。如果每个节点有两个 spark worker,你可以为你的节点创建两个部署,一个公开SPARK_WORKER_WEBUI_PORT
on 8081
,另一个公开,8082
并确保每个节点只安排一个 pod。
您可以在容器环境变量中传递这些值
推荐阅读
- vba - 如何复制和粘贴作为矩阵配置的 ob VBA?
- javascript - 这个 for 循环语法有什么问题?
- javascript - 如何在 JavaScript 中对选项列表中的多个字段进行排序
- python - 遍历股票价格python的行和列
- javascript - 具有多个默认值的 Javascript Switch 语句
- matrix - octave 使用向量作为矩阵的列索引
- javascript - 如何为参考 SVG 背景设置动画
- python - 有没有办法在 Kivy 中制作自定义 TextInput?
- java - 如何使用厨师以编程方式更新 JAVA_HOME - JRE
- google-cloud-platform - 连接断开时,Google Cloud Platform 无法运行长时间运行的进程