当前位置: 首页 > 知识库问答 >
问题:

将子任务id映射到Flink中的TaskManager

澹台锐
2023-03-14

我有一个并行度=256的运算符在128个任务管理器上运行。每次当我遇到检查点失败时,它都发生在该运算符的同一个子任务上,例如总是子任务129卡住并阻止检查点。我想通过检查子任务129运行的任务管理器的日志来了解这个子任务发生了什么。Flink中是否有方法将子任务id映射到相应的任务管理器?

共有2个答案

唐宏壮
2023-03-14

我能够找到一个不平凡但可行的解决方案,以在运行时以编程方式获取所需的地图。

主要思想是Restendpoint/作业/:jobid/顶点/: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,我只需对其进行超文本传输协议调用并构建地图。

农永宁
2023-03-14

任务管理器。日志文件包含已部署任务的名称,包括其子任务索引。您只需在所有taskmanager中搜索TASK\u名称(129/256)。记录文件

 类似资料:
  • 使用Exchange推送通知,我一直在创建一个服务,它可以同步Office365用户的日历数据。我一直在使用Office365日历REST API(获取和管理日历)和EWS API(订阅日历更改)的组合。 我注意到,就在最近,MS为其订阅endpoint引入了预览API。然而,这个API仍然处于预览模式,我想暂时避免使用它。 一旦我完成了所有设置,问题是我无法在日历事件资源(REST)和推送通知中

  • 我正在创建JSON映射器,它将为我的JPA数据库类创建JSON模式。我正在使用mbknor-jackson-jsonSchema,它很好用,但我只需要将我的子类序列化为id。到目前为止,我的结构是: 两个表类都是这样的: 基本实体包含id 问题是,是否有办法编写自定义std序列化程序来序列化表实体,使其具有属性id _ table 2:“long”而不是整个对象? 我尝试重写

  • 我有基类orderItem并且有子类DeviceItem和ServiceItem。我提供了下面的定义。当我收到这个请求时,我执行dozer映射以将jaxb模型转换为我创建的另一个数据模型。我的数据模型也有相同的OrderItem、DerviceItem和DeviceItem类,它们是POJO。当我进行dozer映射时,类会映射到OrderItem(基类)而不是专门的子类。有没有办法执行此用户doz

  • 有一个自己编写的应用程序(C#)可以通过EWS(Webservice)与Exchange进行通信。从EWS检索的每个邮件项目都有一个base64编码字符串作为邮件标识符。字符串是邮箱本身的GUID、一些标志和其他未知内容的串联。正如在应用程序日志中观察到的,最后的48位似乎代表了一个序列号,该序列号对于每一个新邮件都是增加的,因为base64表示法也做到了这一点。 这看起来如下所示 我无法想象ex

  • 考虑一个带有一些节点的Flink集群,其中每个节点都有一个多核处理器。如果我们根据核的数量和相等的内存共享来配置插槽的数量,那么Apache Flink如何在节点和空闲插槽之间分配任务呢?他们是否受到公平对待? 当我们根据节点上可用的核数配置任务插槽时,是否有任何方法使/配置Flink以平等对待插槽  · · · 例如,假设我们对数据进行相等的分区,并在分区上运行相同的任务。Flink使用来自某些

  • Disque 中的任务由类似这样的 ID 进行唯一标识: DI0f0c644fd3ccb51c2cedbd47fcb6f312646c993c05a0SQ 。 每个任务 ID 总是以 "DI" 开头,并以 "SQ" 结束, 而且总是由正好 48 个字符组成。 任务 ID 可以被分为几个不同的部分: DI | 0f0c644f | d3ccb51c2cedbd47fcb6f312646c993c |