我使用Flink 1.7仪表板并选择一个流作业。这应该向我显示一些指标,但仍然需要加载。
我在Flink 1.5集群中部署了相同的作业,并且可以观察指标。 Flink在docker swarm中运行,但是如果我在docker-compose(不在swarm中)中运行Flink 1.7,则它可以正常工作
我可以做到,删除docker-compose.yaml文件中的主机名
version: "3"
services:
jobmanager17:
image: flink:1.7.0-hadoop27-scala_2.11
hostname: "{{.Node.Hostname}}"
ports:
- "8081:8081"
- "9254:9249"
command: jobmanager
....
我删除主机名:
version: "3"
services:
jobmanager17:
image: flink:1.7.0-hadoop27-scala_2.11
ports:
- "8081:8081"
- "9254:9249"
command: jobmanager
....
现在指标可以使用,但是没有主机名...
有可能两者兼有吗?
PD:我读了一些有关“分离模式”的信息...但是我不使用它
答案 0 :(得分:2)
我想您是在Kubernetes或docker swarm上运行集群。在Kubernetes上使用Flink 1.7,您需要确保任务管理器是 用他们的IP地址而不是 主机名。如果查看工作经理日志,则会发现很多警告,提示无法访问任务经理。
您可以通过传递定义import sys
from PyQt5 import QtCore, QtGui, QtWidgets
class CheckBox(QtWidgets.QCheckBox):
def keyPressEvent(self, event):
if event.key() in (QtCore.Qt.Key_Enter, QtCore.Qt.Key_Return):
self.nextCheckState()
super(CheckBox, self).keyPressEvent(event)
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
w = CheckBox("StackOverflow")
w.show()
sys.exit(app.exec_())
参数来实现。一个示例性的部署可能看起来像这样:
taskmanager.host
如果您未在K8上运行,则可以尝试手动传递此参数(通过提供IP地址,该地址可从作业管理器获取为apiVersion: extensions/v1beta1
kind: Deployment
....
spec:
template:
spec:
containers:
- name: "<%= name %>"
args: ["taskmanager", "-Dtaskmanager.host=$(K8S_POD_IP)"]
env:
- name: K8S_POD_IP
valueFrom:
fieldRef:
fieldPath: status.podIP
)
希望有帮助。
更新:Flink 1.8解决了该问题。属性taskmanager.host
默认情况下设置为“ ip”,其作用与上述解决方法(https://ci.apache.org/projects/flink/flink-docs-stable/ops/config.html#taskmanager)大致相同