将subtask_id映射到flink中的任务曼格



i有一个并联= 256在128个任务经理上运行的操作员。每次我遇到检查点故障时,它都会在该操作员的同一子任务中发生,例如,它总是被卡住并阻止检查点的子任务129。我想通过检查SubTask 129正在运行的任务管理器的日志来了解此子任务的发生了什么。有没有办法将子任务管理员映射到相应的任务管理器?

taskmanager.log文件包含包括其子任务索引的部署任务的名称。您可以简单地在所有taskmanager.log文件中搜索TASK_NAME (129/256)

我能够找到一个琐碎的解决方案,而是在编程运行时获得所需的映射的工作解决方案。

主要思想是休息端/乔布斯/:jobid/vertices/:vertexid为格式的特定顶点提供必要的信息

{
  "id": "804e...",
  "name": "Map -> Sink",
  ...
  "subtasks": [
    {
      "subtask": 0,
      "host": "ip-10-xx-yy-zz:36ddd"
    },
    ...
   ]
}

主要困难是以编程方式获取Web接口URL。我能够以这种方式得到它(可能有一个更优雅的解决方案(:

val env = FieldUtils
      .readField(getRuntimeContext.asInstanceOf[StreamingRuntimeContext], "taskEnvironment", true)
      .asInstanceOf[RuntimeEnvironment]
    try {
      println("trying to get cluster client...")
      val client = new RestClusterClient[String](env.getTaskManagerInfo.getConfiguration, "rest")
      return client.getWebInterfaceURL
    } catch {
      case e: Exception =>
        println("Failed to get cluster client : ")
        e.printStackTrace()
    }

给定Web接口URL,我只是对其进行了HTTP调用并构造了地图。

相关内容

  • 没有找到相关文章

最新更新