通过 REST API [MapR 6.1/Hadoop-2.7] 从 Yarn 查询节点标签拓扑

Query node-label topology from Yarn via REST API [MapR 6.1/Hadoop-2.7]

有一个 Java 和 CLI 接口可以查询 Yarn RM 的节点到节点标签(和反向)映射。有没有办法通过 REST-API 来做到这一点? 最初的 RM-API 搜索显示只有基于节点标签的作业提交是一个选项。

遗憾的是,这实际上在 MapR-Hadoop(6/6/19 的 6.1)中被破坏了,所以我的代码必须通过实现正确的调度本身来解决这个问题。使用 YarnClient Java API.

这有效(几乎没有 - 这里也有更多损坏的 APIs)

但由于我想同时针对不同的资源管理器安排作业,在防火墙后面,REST-API 是实现此目的最引人注目的选择,而 YarnClient API' s RPC 后端不容易传输。

我目前最坏的解决方案是以某种方式解析 YARN-WebUI。

到目前为止我找到的唯一解决方案: 请求 /ws/v1/cluster/nodes - 这会为您提供所有节点。

FlatMap/Distinct 在每个 nodenodeLabels 上,如果您只需要节点标签列表。如果您需要指定标签的所有节点,则按节点标签过滤。

这确实意味着,您总是必须查询 所有 个节点,然后 sort/filter/arrange NodeLabels,这是很多 client-side 魔法。但显然没有 GetNodesToLabel or even GetClusterNodeLabels 来帮助我们。

我假设 getLabelsToNodes 只是一个 client-side 实现,因为协议没有定义 API,所以这就是 REST 的 window,除非在 WebService 中实现。