Flink 1.7.0仪表板不显示任务统计信息

时间:2019-04-24 15:02:09

标签: docker kubernetes apache-flink flink-streaming

我使用Flink 1.7仪表板并选择一个流作业。这应该向我显示一些指标,但仍然需要加载。

我在Flink 1.5集群中部署了相同的作业,并且可以观察指标。 Flink在docker swarm中运行,但是如果我在docker-compose(不在swarm中)中运行Flink 1.7,则它可以正常工作

flink 1.7 dashboard

我可以做到,删除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:我读了一些有关“分离模式”的信息...但是我不使用它

1 个答案:

答案 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)大致相同