欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Hadoop3.2.0 YARN Timeline Service v.2

程序员文章站 2022-07-14 15:17:25
...

 

概观

介绍

YARN Timeline Service v.2是时间轴服务器的下一个主要迭代,遵循v.1和v.1.5。创建V.2是为了解决v.1的两个主要挑战。

可扩展性

V.1仅限于编写器/读取器和存储器的单个实例,并且不能远远超出小型集群。V.2使用更具可扩展性的分布式写入器体系结构和可扩展的后端存储。

YARN Timeline Service v.2将数据的收集(写入)与服务(读取)数据分开。它使用分布式收集器,基本上是每个YARN应用程序的一个收集器。读者是专门通过REST API提供查询的独立实例。

YARN Timeline Service v.2选择Apache HBase作为主要后备存储,因为Apache HBase可以很好地扩展到大尺寸,同时保持良好的读写响应时间。

可用性改进

在许多情况下,用户对YARN应用程序的“流程”或逻辑组级别的信息感兴趣。启动一组或一系列YARN应用程序以完成逻辑应用程序更为常见。时间轴服务v.2明确支持流的概念。此外,它还支持在流级别聚合度量标准。

此外,配置和指标等信息作为一等公民得到处理和支持。

下图说明了不同YARN实体建模流程之间的关系。

Hadoop3.2.0 YARN Timeline Service v.2

架构

YARN Timeline Service v.2使用一组收集器(编写器)将数据写入后端存储。收集器与他们专用的应用程序主机分布和共同定位。除资源管理器时间轴收集器外,属于该应用程序的所有数据都将发送到应用程序级别时间轴收集器。

对于给定的应用程序,应用程序主机可以将应用程序的数据写入共址时间线收集器(此版本中的NM辅助服务)。此外,运行应用程序容器的其他节点的节点管理器也会将数据写入运行应用程序主机的节点上的时间轴收集器。

资源管理器还维护自己的时间轴收集器。它仅发出YARN通用生命周期事件,以保持其写入量合理。

时间线读取器是与时间线收集器分开的独立守护进程,它们专用于通过REST API提供查询。

下图说明了高级设计。

Hadoop3.2.0 YARN Timeline Service v.2

现状和未来计划

YARN Timeline Service v.2目前处于alpha(“alpha 2”)。这是一项正在进行的工作,许多事情可以而且将会迅速发生变化。

Apache HBase作为后端,完整的端到端写入和读取流程正常运行。您应该能够开始生成数据。启用后,将发布所有YARN通用事件以及YARN系统指标(如CPU和内存)。此外,包括Distributed Shell和MapReduce在内的一些应用程序可以将每个框架数据写入YARN Timeline Service v.2。

访问数据的基本模式是通过REST。目前不支持命令行访问。REST API提供了大量有用且灵活的查询模式(有关详细信息,请参阅下文)。

收集器(编写器)当前作为辅助服务嵌入在节点管理器中。资源管理器还有其专用的进程内收集器。读者目前是一个单一的实例。目前,不可能在YARN应用程序的上下文之外写入时间轴服务(即没有离群客户端)。

从alpha2开始,Timeline Service v.2支持对可以读取时间线数据的用户和组的可配置白名单进行简单授权。默认情况下,群集管理员可以读取时间轴数据。

禁用YARN Timeline Service v.2时,可以预期不会对任何其他现有功能产生任何功能或性能影响。

使其真正适应生产的工作仍在继续。一些关键项目包括

  • 更强大的存储容错能力
  • 支持群集外客户端
  • 更好地支持长期运行的应用程序
  • 支持ACL
  • 用于报告和分析的流,用户和队列的脱机(基于时间的定期)聚合
  • 时间线收集器作为节点管理器的单独实例
  • 读者群集
  • 迁移和与v.1的兼容性

部署

配置

v.2引入的新配置参数标记为粗体。

基本配置

配置属性 描述
yarn.timeline-service.enabled 向客户端指示是否启用了时间轴服务。如果启用,应用程序使用的TimelineClient库将实体和事件发布到时间轴服务器。默认为false。
yarn.timeline-service.version 指示正在运行的时间轴服务的当前版本。例如,如果“yarn.timeline-service.version”为1.5,并且“yarn.timeline-service.enabled”为true,则表示群集将且必须调出时间轴服务v.1.5(并且没有其他内容)。在客户端,如果客户端使用相同版本的时间轴服务,则必须成功。如果客户选择使用较小的版本,那么根据版本之间兼容性故事的稳健程度,结果可能会有所不同。默认为1.0f。
yarn.timeline-service.writer.class 后端存储编写器的类。默认为HBase存储编写器。
yarn.timeline-service.reader.class 后端存储读取器的类。默认为HBase存储读取器。
yarn.system-metrics-publisher.enabled 控制纱线系统指标是否在RM和NM上在时间轴服务上发布的设置。默认为false。
yarn.timeline-service.schema.prefix hbase表的模式前缀。默认为“prod。”。

高级配置

配置属性 描述
yarn.timeline-service.hostname 时间轴服务Web应用程序的主机名。默认为0.0.0.0
yarn.timeline-service.reader.webapp.address 时间线阅读器Web应用程序的http地址。默认为$ {yarn.timeline-service.hostname}:8188。
yarn.timeline-service.reader.webapp.https.address 时间线阅读器Web应用程序的https地址。默认为$ {yarn.timeline-service.hostname}:8190。
yarn.timeline-service.reader.bind主机 时间线阅读器将绑定的实际地址。如果设置了此可选地址,则阅读器服务器将绑定到此地址和yarn.timeline-service.reader.webapp.address中指定的端口。这对于通过设置为0.0.0.0使服务侦听所有接口非常有用。
yarn.timeline-service.hbase.configuration.file 用于连接到时间轴服务hbase集群的hbase-site.xml配置文件的可选URL。如果为空或未指定,则将从类路径加载HBase配置。指定时,指定配置文件中的值将覆盖类路径中存在的值。默认为null。
yarn.timeline-service.writer.flush-interval-seconds 控制时间轴收集器刷新时间轴编写器的频率的设置。默认为60。
yarn.timeline-service.app-collector.linger-period.ms 在应用程序主容器完成之后,应用程序收集器将在NM中处于活动状态的时间段。默认为60000(60秒)。
yarn.timeline-service.timeline-client.number-of-async-entities-to-merge 时间线V2客户端尝试合并这些大量的异步实体(如果可用),然后调用REST ATS V2 API进行提交。默认为10。
yarn.timeline-service.hbase.coprocessor.app-final-value-retention-milliseconds 在合并到流量总和之前,控制已完成应用程序的度量标准的最终值保留多长时间的设置。默认为259200000(3天)。这应该在HBase集群中设置。
yarn.rm.system-metrics-publisher.emit-container-events 控制纱线容器指标是否由RM发布到时间线服务器的设置。此配置设置适用于ATS V2。默认为false。

安全配置

可以通过将yarn.timeline-service.http-authentication.type设置为kerberos来启用安全性,之后可以使用以下配置选项:

配置属性 描述
yarn.timeline-service.http-authentication.type 定义用于时间线服务器(收集器/读取器)HTTP端点的身份验证。支持的值包括:simple / kerberos / #AUTHENTICATION_HANDLER_CLASSNAME#. Defaults to simple.。默认: simple
yarn.timeline-service.http-authentication.simple.anonymous.allowed 指示使用“简单”身份验证时,时间线服务器是否允许匿名请求。默认为true。
yarn.timeline-service.http-authentication.kerberos.principal 用于时间线服务器(收集器/读取器)HTTP端点的Kerberos主体。
yarn.timeline-service.http-authentication.kerberos.keytab 用于时间线服务器(收集器/读取器)HTTP端点的Kerberos**表。
yarn.timeline-service.principal 时间线阅读器的Kerberos主体。NM principal将用于时间线收集器,因为它作为NM内部的辅助服务运行。
yarn.timeline-service.keytab 时间线阅读器的Kerberos**表。NM keytab将用于时间线收集器,因为它作为NM内部的辅助服务运行。
yarn.timeline-service.delegation.key.update-interval 默认为86400000(1天)。
yarn.timeline-service.delegation.token.renew-interval 默认为86400000(1天)。
yarn.timeline-service.delegation.token.max-lifetime 默认为604800000(7天)。
yarn.timeline-service.read.authentication.enabled 启用或禁用读取时间轴服务v2数据的授权检查。默认值为false,禁用。
yarn.timeline-service.read.allowed.users 逗号分隔的用户列表,后跟空格,然后用逗号分隔的组列表。它将允许此用户和组列表读取数据并拒绝其他所有人。默认值设置为none。如果启用了授权,则此配置是必需的。

启用CORS支持

要为Timeline Service v.2启用跨源支持(CORS),请设置以下配置参数:

在yarn-site.xml中,将yarn.timeline-service.http-cross-origin.enabled设置为true。

在core-site.xml中,将org.apache.hadoop.security.HttpCrossOriginFilterInitializer添加到hadoop.http.filter.initializers。

有关用于跨源支持的更多配置,请参阅HttpAuthentication。请注意,yarn.timeline-service.http-cross-origin.enabled(如果设置为true)将覆盖hadoop.http.cross-origin.enabled。

启用时间轴服务v.2

准备Apache HBase集群进行存储

为Timeline Service v.2准备存储有几个步骤:

步骤1)设置HBase集群

步骤2)启用协处理器

步骤3)为Timeline Service v.2创建模式

以下更详细地解释每个步骤。

步骤1)设置HBase集群

第一部分是设置或选择一个Apache HBase集群作为存储集群。支持的Apache HBase版本是1.2.6(默认)和2.0.0-beta1。1.0.x版本不适用于Timeline Service v.2。默认情况下,Hadoop版本使用HBase 1.2.6构建。要使用HBase 2.0.0-beta1,请使用选项-Dhbase.profile = 2.0从源代码构建

HBase具有不同的部署模式。请参阅HBase书籍以了解它们并选择适合您的设置的模式。(http://hbase.apache.org/book.html#standalone_dist

HBase的简单部署

如果您打算使用Apache HBase集群的简单部署配置文件,其中数据加载很轻但数据需要在节点运行之间保持不变,那么您可以考虑“基于HDFS的独立HBase”部署模式。

这是独立HBase设置的一个有用变体,并且所有HBase守护进程都在一个JVM中运行,而不是持久保存到本地文件系统,它会持久存储到HDFS实例。写入复制数据的HDFS可确保数据在节点运行之间保持不变。要配置此独立变量,请编辑hbase-site.xml,将hbase.rootdir设置为指向HDFS实例中的目录,然后将hbase.cluster.distributed设置为false。例如:

<configuration>
  <property>
    <name>hbase.rootdir</name>
    <value>hdfs://namenode.example.org:8020/hbase</value>
  </property>
  <property>
    <name>hbase.cluster.distributed</name>
    <value>false</value>
  </property>
</configuration>

有关此模式的更多详细信息,请参阅http://hbase.apache.org/book.html#standalone.over.hdfs

准备好使用Apache HBase集群后,请执行以下步骤。

步骤2)启用协处理器

在此版本中,协处理器是动态加载的(用于flowrun表的表协处理器)。

将时间轴服务jar复制到HBase可以加载它的HDFS。在架构创建器中创建flowrun表需要它。默认的HDFS位置是/ hbase / coprocessor。例如,

hadoop fs -mkdir /hbase/coprocessor
hadoop fs -put hadoop-yarn-server-timelineservice-hbase-coprocessor-3.2.0-SNAPSHOT.jar
       /hbase/coprocessor/hadoop-yarn-server-timelineservice.jar

如果要将jar放在hdfs上的其他位置,还存在名为yarn.timeline-service.hbase.coprocessor.jar.hdfs.location的纱线配置设置。例如,

<property>
  <name>yarn.timeline-service.hbase.coprocessor.jar.hdfs.location</name>
  <value>/custom/hdfs/path/jarName</value>
</property>

步骤3)创建时间轴服务模式

最后,运行schema creator工具来创建必要的表:

bin/hadoop org.apache.hadoop.yarn.server.timelineservice.storage.TimelineSchemaCreator -create

该TimelineSchemaCreator工具支持可能会派上用场尤其是当你正在测试几个选项。例如,您可以使用-skipExistingTable(简称-s)跳过现有表并继续创建其他表,而不是创建模式失败。默认情况下,表的模式前缀为“prod。”。如果没有提供选项或'-help'(简称'-h'),则打印命令用法。并继续创建其他表而不是创建模式失败。如果没有提供选项或'-help'(简称'-h'),则打印命令用法。默认情况下,表的模式前缀为“prod”。

启用时间轴服务v.2

以下是启动时间轴服务v.2的基本配置:

<property>
  <name>yarn.timeline-service.version</name>
  <value>2.0f</value>
</property>

<property>
  <name>yarn.timeline-service.enabled</name>
  <value>true</value>
</property>

<property>
  <name>yarn.nodemanager.aux-services</name>
  <value>mapreduce_shuffle,timeline_collector</value>
</property>

<property>
  <name>yarn.nodemanager.aux-services.timeline_collector.class</name>
  <value>org.apache.hadoop.yarn.server.timelineservice.collector.PerNodeTimelineCollectorsAuxService</value>
</property>

<property>
  <description>The setting that controls whether yarn system metrics is
  published on the Timeline service or not by RM And NM.</description>
  <name>yarn.system-metrics-publisher.enabled</name>
  <value>true</value>
</property>

<property>
  <description>The setting that controls whether yarn container events are
  published to the timeline service or not by RM. This configuration setting
  is for ATS V2.</description>
  <name>yarn.rm.system-metrics-publisher.emit-container-events</name>
  <value>true</value>
</property>

此外,如果使用多个集群将数据存储在同一个Apache HBase存储中,您可能希望将YARN集群名称设置为合理唯一的值:

<property>
  <name>yarn.resourcemanager.cluster-id</name>
  <value>my_research_test_cluster</value>
</property>

此外,将hbase-site.xml配置文件添加到客户端Hadoop集群配置,以便它可以将数据写入您正在使用的Apache HBase集群,或将yarn.timeline-service.hbase.configuration.file设置为指向文件的URL到hbase-site.xml也一样。例如:

<property>
  <description> Optional URL to an hbase-site.xml configuration file to be
  used to connect to the timeline-service hbase cluster. If empty or not
  specified, then the HBase configuration will be loaded from the classpath.
  When specified the values in the specified configuration file will override
  those from the ones that are present on the classpath.
  </description>
  <name>yarn.timeline-service.hbase.configuration.file</name>
  <value>file:/etc/hbase/hbase-ats-dc1/hbase-site.xml</value>
</property>

运行时间线服务v.2

重新启动资源管理器以及节点管理器以获取新配置。收集器以嵌入方式在资源管理器和节点管理器内启动。

时间轴服务阅读器是一个单独的YARN守护程序,可以使用以下语法启动它:

$ yarn-daemon.sh start timelinereader

启用MapReduce以写入时间轴服务v.2

要将MapReduce框架数据写入Timeline Service v.2,请在mapred-site.xml中启用以下配置:

<property>
  <name>mapreduce.job.emit-timeline-data</name>
  <value>true</value>
</property>

从alpha1升级到alpha2

如果您当前正在运行Timeline Service v2 alpha1版本,我们建议您执行以下操作:

  • 清除表中的现有数据(截断表),因为AppToFlow的行键已更改。

  • 协处理器现在是alpha2中动态加载的表级协处理器。我们建议删除表,将hdfs上的协处理器jar替换为alpha2,重新启动Region服务器并重新创建flowrun表。

发布应用程序特定数据

本节适用于希望与Timeline Service v.2集成的YARN应用程序开发人员。

开发人员需要使用TimelineV2Client API将每个框架数据发布到Timeline Service v.2。v.2的实体/对象API与v.1不同,因为对象模型显着改变。v.2时间轴实体类是org.apache.hadoop.yarn.api.records.timelineservice.TimelineEntity。

时间轴服务v.2 putEntities方法有两种:putEntities和putEntitiesAsync。前者是一种阻塞操作,必须用于编写更多关键数据(例如生命周期事件)。后者是一种非阻塞操作。请注意,两者都没有返回值。

创建TimelineV2Client涉及将应用程序ID传递给静态方法TimelineV2Client.createTimelineClient。

例如:

// Create and start the Timeline client v.2
TimelineV2Client timelineClient =
    TimelineV2Client.createTimelineClient(appId);
timelineClient.init(conf);
timelineClient.start();

try {
  TimelineEntity myEntity = new TimelineEntity();
  myEntity.setType("MY_APPLICATION");
  myEntity.setId("MyApp1");
  // Compose other entity info

  // Blocking write
  timelineClient.putEntities(myEntity);

  TimelineEntity myEntity2 = new TimelineEntity();
  // Compose other info

  // Non-blocking write
  timelineClient.putEntitiesAsync(myEntity2);

} catch (IOException | YarnException e) {
  // Handle the exception
} finally {
  // Stop the Timeline client
  timelineClient.stop();
}

如上所述,您需要指定YARN应用程序ID才能写入Timeline Service v.2。请注意,目前您需要在群集上才能写入时间轴服务。例如,容器中的应用程序主机或代码可以写入时间轴服务,而非群集MapReduce作业提交程序则不能。

创建时间轴v2客户端后,用户还需要设置时间线收集器信息,其中包含应用程序的收集器地址和收集器令牌(仅在安全模式下)。如果使用AMRMClient,那么通过调用AMRMClient #registerTimelineV2Client来注册时间线客户端就足够了。

amRMClient.registerTimelineV2Client(timelineClient);

需要从AM分配响应中检索其他地址,并且需要在时间线客户端中明确设置。

timelineClient.setTimelineCollectorInfo(response.getCollectorInfo());

您可以像以前的版本一样创建和发布自己的实体,事件和指标。

TimelineEntity对象具有以下字段来保存时间轴数据:

  • events:一组TimelineEvents,按事件的时间戳按降序排序。每个事件包含一个id和一个用于存储相关信息的映射,并与一个时间戳相关联。
  • configs:从字符串(配置名称)到表示与实体关联的所有配置的字符串(配置值)的映射。用户可以在配置字段中发布整个配置或其中的一部分。支持应用程序和通用实体。支持应用程序和通用实体。
  • metrics:与此实体相关的一组度量标准。有两种类型的指标:单值指标和时间序列指标。每个度量标准项都包含度量标准名称(id),值以及应在此度量标准中执行的聚合操作类型(默认情况下为noop)。支持流程运行,应用程序和通用实体。
  • info:从字符串(信息键名称)到对象(信息值)的映射,用于保存此实体的相关信息。支持应用程序和通用实体。
  • isrelatedtoEntities和relevantstoEntities:也可以表示实体之间的关系。每个实体包含一个interactstoEntities和isrelatedtoEntities字段,以表示与其他实体的关系。两个字段都由字符串(关系名称)到时间轴实体的映射表示。以这种方式,实体之间的关系可以表示为DAG。

请注意,在发布时间轴指标时,可以选择如何通过TimelineMetric#setRealtimeAggregationOp()方法聚合每个指标。这里的“聚合”一词意味着将一个TimelineMetricOperation应用于一组实体。时间轴服务v2提供内置应用程序级别聚合,这意味着聚合来自一个YARN应用程序内的不同时间轴实体的度量。目前,TimelineMetricOperation支持两种操作:

  • MAX:获取所有TimelineMetric对象中的最大值。
  • SUM:获取所有TimelineMetric对象的总和。

默认情况下,NOP操作意味着不执行任何实时聚合操作。

应用程序框架必须尽可能设置“流上下文”,以便利用时间轴服务v.2提供的流支持。流程上下文包含以下内容:

  • 流名称:标识高级流的字符串(例如“分布式grep”或可以唯一代表应用程序的任何可识别名称)
  • 流量运行id:单调增加的数字序列,用于区分同一流量的不同运行。
  • (可选)Flow版本:表示流版本的字符串标识符。Flow版本可用于识别流程中的更改,例如代码更改或脚本更改。

如果未指定流上下文,则为这些属性提供默认值:

  • 流名称:YARN应用程序名称(如果未设置名称,则为应用程序ID)
  • Flow run id:Unix时间内的应用程序启动时间(毫秒)
  • 流量版:“1”

您可以通过YARN应用程序标记提供流上下文:

ApplicationSubmissionContext appContext = app.getApplicationSubmissionContext();

// set the flow context as YARN application tags
Set<String> tags = new HashSet<>();
tags.add(TimelineUtils.generateFlowNameTag("distributed grep"));
tags.add(Timelineutils.generateFlowVersionTag("3df8b0d6100530080d2e0decf9e528e57c42a90a"));
tags.add(TimelineUtils.generateFlowRunIdTag(System.currentTimeMillis()));

appContext.setApplicationTags(tags);

注意:资源管理器在存储之前将YARN应用程序标记转换为小写。因此,在REST API查询中使用它们之前,应将Flow名称和Flow版本转换为小写。

时间轴服务v.2 REST API

查询时间轴服务v.2目前仅通过REST API支持; YARN库中没有实现API客户端。

v.2 REST API 在时间轴服务Web服务上的路径/ ws / v2 / timeline /下实现。

以下是API的非正式描述。

根路径

GET /ws/v2/timeline/

返回描述服务实例和版本信息的JSON对象。

{
  "About":"Timeline Reader API",
  "timeline-service-version":"3.0.0-alpha1-SNAPSHOT",
  "timeline-service-build-version":"3.0.0-alpha1-SNAPSHOT from fb0acd08e6f0b030d82eeb7cbfa5404376313e60 by sjlee source checksum be6cba0e42417d53be16459e1685e7",
  "timeline-service-version-built-on":"2016-04-11T23:15Z",
  "hadoop-version":"3.0.0-alpha1-SNAPSHOT",
  "hadoop-build-version":"3.0.0-alpha1-SNAPSHOT from fb0acd08e6f0b030d82eeb7cbfa5404376313e60 by sjlee source checksum ee968fd0aedcc7384230ee3ca216e790",
  "hadoop-version-built-on":"2016-04-11T23:14Z"
}

以下显示了REST API上支持的查询。

查询流程

使用Query Flows API,您可以检索最近运行的活动流列表。如果使用不带群集名称REST端点,由配置指定的群集yarn.resourcemanager.cluster-ID在纱线-site.xml中取出。如果没有任何流与谓词匹配,则返回空列表。

HTTP请求:

GET /ws/v2/timeline/clusters/{cluster name}/flows/

or

GET /ws/v2/timeline/flows/

查询参数支持:

  1. limit - 如果指定,则定义要返回的流的数量。限制的最大可能值是Long的最大值。如果未指定或者值小于0,则限制将被视为100。
  2. daterange - 如果指定为“[startdate] - [enddate]”(即开始和结束日期用“ - ”分隔)或单个日期。日期以yyyyMMdd格式解释,并假定为UTC。如果指定了单个日期,则返回该日期处于活动状态的所有流。如果同时给出startdate和enddate,则将返回在开始日期和结束日期之间活动的所有流。如果仅给出startdate,则返回startdate之后的活动流。如果仅给出enddate,则返回enddate之前和之前的活动流。
    例如
    “daterange = 20150711”返回20150711上有效的流量。
    “daterange = 20150711-20150714”返回这两个日期之间活动的流量。
    “daterange = 20150711-”返回20150711及之后的活动流。
    “daterange = -20150711”返回20150711之前和之前的活动流。
  3. fromid - 如果指定,则从给定的fromid中检索下一组流。检索到的实体集包含指定的fromid。fromid应取自先前发送的流实体响应中与FROM_ID info关联的值。

示例JSON响应:

[
  {
    "metrics": [],
    "events": [],
    "id": "test-cluster/1460419200000/aaa@qq.com",
    "type": "YARN_FLOW_ACTIVITY",
    "createdtime": 0,
    "flowruns": [
      {
        "metrics": [],
        "events": [],
        "id": "aaa@qq.com/1460420305659",
        "type": "YARN_FLOW_RUN",
        "createdtime": 0,
        "info": {
          "SYSTEM_INFO_FLOW_VERSION": "1",
          "SYSTEM_INFO_FLOW_RUN_ID": 1460420305659,
          "SYSTEM_INFO_FLOW_NAME": "ds-date",
          "SYSTEM_INFO_USER": "sjlee"
        },
        "isrelatedto": {},
        "relatesto": {}
      },
      {
        "metrics": [],
        "events": [],
        "id": "aaa@qq.com/1460420587974",
        "type": "YARN_FLOW_RUN",
        "createdtime": 0,
        "info": {
          "SYSTEM_INFO_FLOW_VERSION": "1",
          "SYSTEM_INFO_FLOW_RUN_ID": 1460420587974,
          "SYSTEM_INFO_FLOW_NAME": "ds-date",
          "SYSTEM_INFO_USER": "sjlee"
        },
        "isrelatedto": {},
        "relatesto": {}
      }
    ],
    "info": {
      "SYSTEM_INFO_CLUSTER": "test-cluster",
      "UID": "test-cluster!sjlee!ds-date",
      "FROM_ID": "test-cluster!1460419200000!sjlee!ds-date",
      "SYSTEM_INFO_FLOW_NAME": "ds-date",
      "SYSTEM_INFO_DATE": 1460419200000,
      "SYSTEM_INFO_USER": "sjlee"
    },
    "isrelatedto": {},
    "relatesto": {}
  }
]

响应代码

  1. 如果成功,则返回HTTP 200(OK)响应。
  2. 如果解析请求中出现任何问题,则返回HTTP 400(错误请求)。
  3. 对于检索数据时出现不可恢复的错误,将返回HTTP 500(内部服务器错误)。

查询流程运行

使用Query Flow Runs API,您可以进一步向下钻取以获取给定流的运行(特定实例)。这将返回属于给定流的最新运行。如果使用不带群集名称REST端点,由配置指定的群集yarn.resourcemanager.cluster-ID在纱线-site.xml中取出。如果没有任何流程与谓词匹配,则返回空列表。

HTTP请求:

GET /ws/v2/timeline/clusters/{cluster name}/users/{user name}/flows/{flow name}/runs/

or

GET /ws/v2/timeline/users/{user name}/flows/{flow name}/runs/

查询参数支持:

  1. limit - 如果指定,则定义要返回的流的数量。限制的最大可能值是Long的最大值。如果未指定或者值小于0,则限制将被视为100。
  2. createdtimestart - 如果已指定,则仅在返回此时间戳后开始流程运行。
  3. createdtimeend - 如果指定,则在返回此时间戳之前仅开始流程运行。
  4. metricstoretrieve - 如果已指定,则定义要检索的度量标准或要检索的度量标准,并将其作为响应发回。metricstoretrieve可以是以下形式的表达式:
    (<metricprefix>,<metricprefix>,<metricprefix>,<metricprefix> ...)
    这指定了逗号分隔的度量标识前缀列表。仅检索与任何前缀匹配的度量。括号是简单表达的可选项。或者,表达式可以是以下形式:
    !(<metricprefix>,<metricprefix>,<metricprefix>,<metricprefix> ...)
    这指定了逗号分隔的度量标识前缀列表。只检索不匹配任何前缀的指标。
    如果指定了metricstoretrie,是否在字段查询参数中指定。请注意,必须对URL等不安全字符(如空格)进行适当编码。
  5. fields - 指定要检索的字段。对于查询流运行,只有ALL或METRICS是有效字段。其他字段将导致HTTP 400(错误请求)响应。如果未指定,作为响应,将返回id,type,createdtime和info字段。
  6. fromid - 如果指定,从给定的fromid中检索下一组流运行实体。检索到的实体集包含指定的fromid。fromid应取自先前发送的流实体响应中与FROM_ID info关联的值。

示例JSON响应:

[
  {
    "metrics": [],
    "events": [],
    "id": "aaa@qq.com/1460420587974",
    "type": "YARN_FLOW_RUN",
    "createdtime": 1460420587974,
    "info": {
      "UID": "test-cluster!sjlee!ds-date!1460420587974",
      "FROM_ID": "test-cluster!sjlee!ds-date!1460420587974",
      "SYSTEM_INFO_FLOW_RUN_ID": 1460420587974,
      "SYSTEM_INFO_FLOW_NAME": "ds-date",
      "SYSTEM_INFO_FLOW_RUN_END_TIME": 1460420595198,
      "SYSTEM_INFO_USER": "sjlee"
    },
    "isrelatedto": {},
    "relatesto": {}
  },
  {
    "metrics": [],
    "events": [],
    "id": "aaa@qq.com/1460420305659",
    "type": "YARN_FLOW_RUN",
    "createdtime": 1460420305659,
    "info": {
      "UID": "test-cluster!sjlee!ds-date!1460420305659",
      "FROM_ID": "test-cluster!sjlee!ds-date!1460420305659",
      "SYSTEM_INFO_FLOW_RUN_ID": 1460420305659,
      "SYSTEM_INFO_FLOW_NAME": "ds-date",
      "SYSTEM_INFO_FLOW_RUN_END_TIME": 1460420311966,
      "SYSTEM_INFO_USER": "sjlee"
    },
    "isrelatedto": {},
    "relatesto": {}
  }
]

响应代码

  1. 如果成功,则返回HTTP 200(OK)响应。
  2. 如果解析请求中出现任何问题,或者在字段查询参数中指定了无效字段,则返回HTTP 400(错误请求)。
  3. 对于检索数据时出现不可恢复的错误,将返回HTTP 500(内部服务器错误)。

查询流程运行

使用此API,您可以查询由集群,用户,流名称和运行ID标识的特定流运行。如果使用不带群集名称REST端点,由配置指定的群集yarn.resourcemanager.cluster-ID在纱线-site.xml中取出。在查询单个流运行时,默认返回度量标准。

HTTP请求:

GET /ws/v2/timeline/clusters/{cluster name}/users/{user name}/flows/{flow name}/runs/{run id}

or

GET /ws/v2/timeline/users/{user name}/flows/{flow name}/runs/{run id}

查询参数支持:

  1. metricstoretrieve - 如果已指定,则定义要检索的度量标准或要检索的度量标准,并将其作为响应发回。metricstoretrieve可以是以下形式的表达式:
    (<metricprefix>,<metricprefix>,<metricprefix>,<metricprefix> ...)
    这指定了逗号分隔的度量标识前缀列表。仅检索与任何前缀匹配的度量。括号是简单表达的可选项。或者,表达式可以是以下形式:
    !(<metricprefix>,<metricprefix>,<metricprefix>,<metricprefix> ...)
    这指定了逗号分隔的度量标识前缀列表。只检索不匹配任何前缀的指标。
    请注意,必须对URL等不安全字符(如空格)进行适当编码。

示例JSON响应:

{
  "metrics": [
    {
      "type": "SINGLE_VALUE",
      "id": "org.apache.hadoop.mapreduce.lib.input.FileInputFormatCounter:BYTES_READ",
      "aggregationOp": "NOP",
      "values": {
        "1465246377261": 118
      }
    },
    {
      "type": "SINGLE_VALUE",
      "id": "org.apache.hadoop.mapreduce.lib.output.FileOutputFormatCounter:BYTES_WRITTEN",
      "aggregationOp": "NOP",
      "values": {
        "1465246377261": 97
      }
    }
  ],
  "events": [],
  "id": "aaa@qq.com/1465246348599",
  "type": "YARN_FLOW_RUN",
  "createdtime": 1465246348599,
  "isrelatedto": {},
  "info": {
    "UID":"yarn-cluster!varun!QuasiMonteCarlo!1465246348599",
    "FROM_ID":"yarn-cluster!varun!QuasiMonteCarlo!1465246348599",
    "SYSTEM_INFO_FLOW_RUN_END_TIME":1465246378051,
    "SYSTEM_INFO_FLOW_NAME":"QuasiMonteCarlo",
    "SYSTEM_INFO_USER":"varun",
    "SYSTEM_INFO_FLOW_RUN_ID":1465246348599
  },
  "relatesto": {}
}

响应代码

  1. 如果成功,则返回HTTP 200(OK)响应。
  2. 如果解析请求中出现任何问题,则返回HTTP 400(错误请求)。
  3. 如果找不到给定流程运行id的流运行,则返回HTTP 404(未找到)。
  4. 对于检索数据时出现不可恢复的错误,将返回HTTP 500(内部服务器错误)。

查询流的应用程序

使用此API,您可以查询属于特定流的所有YARN应用程序。如果使用不带群集名称REST端点,由配置指定的群集yarn.resourcemanager.cluster-ID在纱线-site.xml中取出。如果匹配的应用程序数量超过限制,将返回最高限额的应用程序。如果没有任何应用程序与谓词匹配,则将返回空列表。

HTTP请求:

GET /ws/v2/timeline/clusters/{cluster name}/users/{user name}/flows/{flow name}/apps

or

GET /ws/v2/timeline/users/{user name}/flows/{flow name}/apps

查询参数支持:

  1. limit - 如果指定,则定义要返回的应用程序数。限制的最大可能值是Long的最大值。如果未指定或者值小于0,则限制将被视为100。
  2. createdtimestart - 如果已指定,则仅返回在此时间戳之后创建的应用程序。
  3. createdtimeend - 如果指定,则仅返回在此时间戳之前创建的应用程序。
  4. relatesto - 如果指定,匹配的应用程序必须与与实体类型关联的给定实体相关或不相关。relatesto表示为以下形式的表达式:
    “(<entitytype>:<entityid>:<entityid> ...,<entitytype>:<entityid>:<entityid> ...)<op>!(<entitytype>:<entityid> :<ENTITYID> ...,<的EntityType>:<ENTITYID>:<ENTITYID> ...)”。
    如果equivsto表达式具有实体类型 - 在括号括号中指定的实体id(s)关系继续“!”,这意味着将不返回在relatedsto字段中具有这些关系的应用程序。对于没有“!”的表达式或子表达式,将返回在relatedsto字段中具有指定关系的所有应用程序。“op”是逻辑运算符,可以是AND或OR。实体类型后面可以跟任意数量的实体ID。我们可以组合任意数量的AND和OR来创建复杂的表达式。括号可以用来一起表达表达。
    例如:relatesto可以是“(((type1:id1:id2:id3,type3:id9)AND!(type2:id7:id8))OR(type1:id4))”。
    请注意,必须对URL等不安全字符(如空格)进行适当编码。
  5. isrelatedto - 如果指定,匹配的应用程序必须与与实体类型关联的给定实体相关或不相关。isrelatedto以与relatedsto相同的形式表示。
  6. infofilters - 如果指定,匹配的应用程序必须与给定的信息**完全匹配,并且必须等于或不等于给定值。info键是一个字符串,但value可以是任何对象。infofilters表示为以下形式的表达式:
    “(<key> <compareop> <value>)<op>(<key> <compareop> <value>)”。
    这里op可以是AND或OR。而compareop可以是“eq”,“ne”或“ene”。
    “eq”表示等于,“ne”表示不等于并且匹配不需要键的存在,“ene”表示不等于但需要存在键。我们可以组合任意数量的AND和OR来创建复杂的表达式。括号可以用来一起表达表达。
    例如:infofilters可以是“(((infokey1 eq value1)AND(infokey2 ne value1))OR(infokey1 ene value3))”。
    注意:如果value是一个对象,则可以以JSON格式的形式给出值,不带任何空格。
    例如:infofilters可以是(infokey1 eq {“<key>”:“<value>”,“<key>”:“<value>”......})。
    请注意,必须对URL等不安全字符(如空格)进行适当编码。
  7. conffilters - 如果指定,匹配的应用程序必须与给定的配置名称完全匹配,并且必须等于或不等于给定的配置值。配置名称和值都必须是字符串。conffilters以与infofilters相同的形式表示。
  8. metricfilters - 如果指定,匹配的应用程序必须与给定的度量标准完全匹配,并满足指标与度量标准值的关系。度量标识必须是字符串,度量标准值必须是整数值。metricFilters表示为以下形式的表达式:
    “(<metricid> <compareop> <metricvalue>)<op>(<metricid> <compareop> <metricvalue>)”。
    这里op可以是AND或OR。而compareop可以是“eq”,“ne”,“ene”,“gt”,“ge”,“lt”和“le”。
    “eq”表示等于,“ne”表示不等于并且匹配不需要度量的存在,“ene”表示不等于但需要存在度量,“gt”表示大于,“ge”表示大于或等于,“lt”表示小于,“le”表示小于或等于。我们可以组合任意数量的AND和OR来创建复杂的表达式。括号可以用来一起表达表达。
    例如:metricfilters可以是“(((metric1 eq 50)AND(metric2 40))OR(metric1 lt 20))”。
    这本质上是一个等同于“(metric1 == 50 AND metric2> 40)OR(metric1 <20)”的表达式。
    请注意,必须对URL等不安全字符(如空格)进行适当编码。
  9. eventfilters - 如果指定,匹配的应用程序必须包含或不包含给定事件,具体取决于表达式。eventfilters表示为以下形式的表达式:
    “(<eventid>,<eventid>)<op>!(<eventid>,<eventid>,<eventid>)”。
    这里,“!”表示在匹配发生时,必须存在括号“!”内的逗号分隔的事件列表。如果未指定“!”,则必须存在括起的括号内的指定事件。op是逻辑运算符,可以是AND或OR。我们可以组合任意数量的AND和OR来创建复杂的表达式。括号可以用来一起表达表达。
    例如:eventfilters可以是“(((event1,event2)AND!(event4))OR(event3,event7,event5))”。
    请注意,必须对URL等不安全字符(如空格)进行适当编码。
  10. metricstoretrieve - 如果已指定,则定义要检索的度量标准或要检索的度量标准,并将其作为响应发回。metricstoretrieve可以是以下形式的表达式:
    (<metricprefix>,<metricprefix>,<metricprefix>,<metricprefix> ...)
    这指定了逗号分隔的度量标识前缀列表。仅检索与任何前缀匹配的度量。括号是简单表达的可选项。或者,表达式可以是以下形式:
    !(<metricprefix>,<metricprefix>,<metricprefix>,<metricprefix> ...)
    这指定了逗号分隔的度量标识前缀列表。只检索不匹配任何前缀的指标。
    如果指定了metricstoretrie,是否在字段查询参数中指定。请注意,必须对URL等不安全字符(如空格)进行适当编码。
  11. confstoretrieve - 如果指定,则定义要检索的配置或不检索哪些配置并作为响应发回。confstoretrieve可以是以下形式的表达式:
    (<config_name_prefix>,<config_name_prefix>,<config_name_prefix>,<config_name_prefix> ...)
    这指定了逗号分隔的配置名称前缀列表。只检索匹配任何前缀的配置。括号是简单表达的可选项。或者,表达式可以是以下形式:
    !(<config_name_prefix>,<config_name_prefix>,<config_name_prefix>,<config_name_prefix> ...)
    这指定了逗号分隔的配置名称前缀列表。只检索不匹配任何前缀的配置。
    如果指定了confstoretrieve,则无论是否在字段查询参数中指定了CONFIGS,都将检索配置。请注意,必须对URL等不安全字符(如空格)进行适当编码。
  12. fields - 指定要检索的字段。字段的可能值可以是EVENTS,INFO,CONFIGS,METRICS,RELATES_TO,IS_RELATED_TO和ALL。如果指定了ALL,则将检索所有字段。可以将多个字段指定为以逗号分隔的列表。如果未指定fields,作为响应,app id,type(相当于YARN_APPLICATION),将返回app createdtime和信息字段中的UID。
  13. metricslimit - 如果已指定,则定义要返回的度量标准数。仅在字段包含METRICS / ALL或metricstoretrieve时才考虑。否则忽略。metricslimit的最大可能值可以是Integer的最大值。如果未指定或者值小于1,并且必须检索度量,则metricslimit将被视为1,即将返回最新的度量单值。
  14. metricstimestart - 如果已指定,则返回此时间戳之后的实体的度量标准。
  15. metricstimeend - 如果已指定,则返回此时间戳之前的实体的度量标准。
  16. fromid - 如果指定,则从给定的fromid中检索下一组应用程序实体。检索到的实体集包含指定的fromid。fromid应取自先前发送的流实体响应中与FROM_ID info关联的值。

示例JSON响应:

[
  {
    "metrics": [ ],
    "events": [ ],
    "type": "YARN_APPLICATION",
    "id": "application_1465246237936_0001",
    "createdtime": 1465246348599,
    "isrelatedto": { },
    "configs": { },
    "info": {
      "UID": "yarn-cluster!application_1465246237936_0001"
      "FROM_ID": "yarn-cluster!varun!QuasiMonteCarlo!1465246348599!application_1465246237936_0001",
    },
    "relatesto": { }
  },
  {
    "metrics": [ ],
    "events": [ ],
    "type": "YARN_APPLICATION",
    "id": "application_1464983628730_0005",
    "createdtime": 1465033881959,
    "isrelatedto": { },
    "configs": { },
    "info": {
      "UID": "yarn-cluster!application_1464983628730_0005"
      "FROM_ID": "yarn-cluster!varun!QuasiMonteCarlo!1465246348599!application_1464983628730_0005",
    },
    "relatesto": { }
  }
]

响应代码

  1. 如果成功,则返回HTTP 200(OK)响应。
  2. 如果解析请求中出现任何问题,则返回HTTP 400(错误请求)。
  3. 对于检索数据时出现不可恢复的错误,将返回HTTP 500(内部服务器错误)。

查询流程运行的应用程序

使用此API,您可以查询属于特定流程运行的所有YARN应用程序。如果使用不带群集名称REST端点,由配置指定的群集yarn.resourcemanager.cluster-ID在纱线-site.xml中取出。如果匹配的应用程序数量超过限制,将返回最高限额的应用程序。如果没有任何应用程序与谓词匹配,则将返回空列表。

HTTP请求:

GET /ws/v2/timeline/clusters/{cluster name}/users/{user name}/flows/{flow name}/runs/{run id}/apps

or

GET /ws/v2/timeline/users/{user name}/flows/{flow name}/runs/{run id}/apps/

查询参数支持:

  1. limit - 如果指定,则定义要返回的应用程序数。限制的最大可能值是Long的最大值。如果未指定或者值小于0,则限制将被视为100。
  2. createdtimestart - 如果已指定,则仅返回在此时间戳之后创建的应用程序。
  3. createdtimeend - 如果指定,则仅返回在此时间戳之前创建的应用程序。
  4. relatesto - 如果指定,匹配的应用程序必须与与实体类型关联的给定实体相关或不相关。relatesto表示为以下形式的表达式:
    “(<entitytype>:<entityid>:<entityid> ...,<entitytype>:<entityid>:<entityid> ...)<op>!(<entitytype>:<entityid> :<ENTITYID> ...,<的EntityType>:<ENTITYID>:<ENTITYID> ...)”。
    如果equivsto表达式具有实体类型 - 在括号括号中指定的实体id(s)关系继续“!”,这意味着将不返回在relatedsto字段中具有这些关系的应用程序。对于没有“!”的表达式或子表达式,将返回在relatedsto字段中具有指定关系的所有应用程序。“op”是逻辑运算符,可以是AND或OR。实体类型后面可以跟任意数量的实体ID。我们可以组合任意数量的AND和OR来创建复杂的表达式。括号可以用来一起表达表达。
    例如:relatesto可以是“(((type1:id1:id2:id3,type3:id9)AND!(type2:id7:id8))OR(type1:id4))”。
    请注意,必须对URL等不安全字符(如空格)进行适当编码。
  5. isrelatedto - 如果指定,匹配的应用程序必须与与实体类型关联的给定实体相关或不相关。isrelatedto以与relatedsto相同的形式表示。
  6. infofilters - 如果指定,匹配的应用程序必须与给定的信息**完全匹配,并且必须等于或不等于给定值。info键是一个字符串,但value可以是任何对象。infofilters表示为以下形式的表达式:
    “(<key> <compareop> <value>)<op>(<key> <compareop> <value>)”。
    这里op可以是AND或OR。而compareop可以是“eq”,“ne”或“ene”。
    “eq”表示等于,“ne”表示不等于并且匹配不需要键的存在,“ene”表示不等于但需要存在键。我们可以组合任意数量的AND和OR来创建复杂的表达式。括号可以用来一起表达表达。
    例如:infofilters可以是“(((infokey1 eq value1)AND(infokey2 ne value1))OR(infokey1 ene value3))”。
    注意:如果value是一个对象,则可以以JSON格式的形式给出值,不带任何空格。
    例如:infofilters可以是(infokey1 eq {“<key>”:“<value>”,“<key>”:“<value>”......})。
    请注意,必须对URL等不安全字符(如空格)进行适当编码。
  7. conffilters - 如果指定,匹配的应用程序必须与给定的配置名称完全匹配,并且必须等于或不等于给定的配置值。配置名称和值都必须是字符串。conffilters以与infofilters相同的形式表示。
  8. metricfilters - 如果指定,匹配的应用程序必须与给定的度量标准完全匹配,并满足指标与度量标准值的关系。度量标识必须是字符串,度量标准值必须是整数值。metricFilters表示为以下形式的表达式:
    “(<metricid> <compareop> <metricvalue>)<op>(<metricid> <compareop> <metricvalue>)”。
    这里op可以是AND或OR。而compareop可以是“eq”,“ne”,“ene”,“gt”,“ge”,“lt”和“le”。
    “eq”表示等于,“ne”表示不等于并且匹配不需要度量的存在,“ene”表示不等于但需要存在度量,“gt”表示大于,“ge”表示大于或等于,“lt”表示小于,“le”表示小于或等于。我们可以组合任意数量的AND和OR来创建复杂的表达式。括号可以用来一起表达表达。
    例如:metricfilters可以是“(((metric1 eq 50)AND(metric2 40))OR(metric1 lt 20))”。
    这本质上是一个等同于“(metric1 == 50 AND metric2> 40)OR(metric1 <20)”的表达式。
    请注意,必须对URL等不安全字符(如空格)进行适当编码。
  9. eventfilters - 如果指定,匹配的应用程序必须包含或不包含给定事件,具体取决于表达式。eventfilters表示为以下形式的表达式:
    “(<eventid>,<eventid>)<op>!(<eventid>,<eventid>,<eventid>)”。
    这里,“!”表示在匹配发生时,必须存在括号“!”内的逗号分隔的事件列表。如果未指定“!”,则必须存在括起的括号内的指定事件。op是逻辑运算符,可以是AND或OR。我们可以组合任意数量的AND和OR来创建复杂的表达式。括号可以用来一起表达表达。
    例如:eventfilters可以是“(((event1,event2)AND!(event4))OR(event3,event7,event5))”。
    请注意,必须对URL等不安全字符(如空格)进行适当编码。
  10. metricstoretrieve - 如果已指定,则定义要检索的度量标准或要检索的度量标准,并将其作为响应发回。metricstoretrieve可以是以下形式的表达式:
    (<metricprefix>,<metricprefix>,<metricprefix>,<metricprefix> ...)
    这指定了逗号分隔的度量标识前缀列表。仅检索与任何前缀匹配的度量。括号是简单表达的可选项。或者,表达式可以是以下形式:
    !(<metricprefix>,<metricprefix>,<metricprefix>,<metricprefix> ...)
    这指定了逗号分隔的度量标识前缀列表。只检索不匹配任何前缀的指标。
    如果指定了metricstoretrie,是否在字段查询参数中指定。请注意,必须对URL等不安全字符(如空格)进行适当编码。
  11. confstoretrieve - 如果指定,则定义要检索的配置或不检索哪些配置并作为响应发回。confstoretrieve可以是以下形式的表达式:
    (<config_name_prefix>,<config_name_prefix>,<config_name_prefix>,<config_name_prefix> ...)
    这指定了逗号分隔的配置名称前缀列表。只检索匹配任何前缀的配置。括号是简单表达的可选项。或者,表达式可以是以下形式:
    !(<config_name_prefix>,<config_name_prefix>,<config_name_prefix>,<config_name_prefix> ...)
    这指定了逗号分隔的配置名称前缀列表。只检索不匹配任何前缀的配置。
    如果指定了confstoretrieve,则无论是否在字段查询参数中指定了CONFIGS,都将检索配置。请注意,必须对URL等不安全字符(如空格)进行适当编码。
  12. fields - 指定要检索的字段。字段的可能值可以是EVENTS,INFO,CONFIGS,METRICS,RELATES_TO,IS_RELATED_TO和ALL。如果指定了ALL,则将检索所有字段。可以将多个字段指定为以逗号分隔的列表。如果未指定fields,作为响应,app id,type(相当于YARN_APPLICATION),将返回app createdtime和信息字段中的UID。
  13. metricslimit - 如果已指定,则定义要返回的度量标准数。仅在字段包含METRICS / ALL或metricstoretrieve时才考虑。否则忽略。metricslimit的最大可能值可以是Integer的最大值。如果未指定或者值小于1,并且必须检索度量,则metricslimit将被视为1,即将返回最新的度量单值。
  14. metricstimestart - 如果已指定,则返回此时间戳之后的实体的度量标准。
  15. metricstimeend - 如果已指定,则返回此时间戳之前的实体的度量标准。
  16. fromid - 如果指定,则从给定的fromid中检索下一组应用程序实体。检索到的实体集包含指定的fromid。fromid应取自先前发送的流实体响应中与FROM_ID info关联的值。

示例JSON响应:

[
  {
    "metrics": [],
    "events": [],
    "id": "application_1460419579913_0002",
    "type": "YARN_APPLICATION",
    "createdtime": 1460419580171,
    "info": {
      "UID": "test-cluster!sjlee!ds-date!1460419580171!application_1460419579913_0002"
      "FROM_ID": "test-cluster!sjlee!ds-date!1460419580171!application_1460419579913_0002",
    },
    "configs": {},
    "isrelatedto": {},
    "relatesto": {}
  }
]

响应代码

  1. 如果成功,则返回HTTP 200(OK)响应。
  2. 如果解析请求中出现任何问题,则返回HTTP 400(错误请求)。
  3. 对于检索数据时出现不可恢复的错误,将返回HTTP 500(内部服务器错误)。

查询应用

使用此API,您可以查询群集标识的单个YARN应用程序和应用程序ID。如果使用不带群集名称REST端点,由配置指定的群集yarn.resourcemanager.cluster-ID在纱线-site.xml中取出。流上下文信息(即用户,流名称和运行标识)不是必需的,但如果在查询参数中指定,则可以排除需要额外操作来基于集群和应用程序ID获取流上下文信息。

HTTP请求:

GET /ws/v2/timeline/clusters/{cluster name}/apps/{app id}

or

GET /ws/v2/timeline/apps/{app id}

查询参数支持:

  1. userid - 如果指定,则仅返回属于此用户的应用程序。必须与flowname和flowrunid查询参数一起指定此查询参数,否则将忽略它。如果未指定userid,flowname和flowrunid,则必须在执行查询时基于cluster和appid获取流上下文信息。
  2. flowname - 仅返回属于此flowname的应用程序。此查询参数必须与userid和flowrunid查询参数一起指定,否则将被忽略。如果未指定userid,flowname和flowrunid,则必须在执行查询时基于cluster和appid获取流上下文信息。
  3. flowrunid - 仅返回属于此流程运行ID的应用程序。此查询参数必须与userid和flowname查询参数一起指定,否则将被忽略。如果未指定userid,flowname和flowrunid,则必须在执行查询时基于cluster和appid获取流上下文信息。
  4. metricstoretrieve - 如果已指定,则定义要检索的度量标准或要检索的度量标准,并将其作为响应发回。metricstoretrieve可以是以下形式的表达式:
    (<metricprefix>,<metricprefix>,<metricprefix>,<metricprefix> ...)
    这指定了逗号分隔的度量标识前缀列表。仅检索与任何前缀匹配的度量。括号是简单表达的可选项。或者,表达式可以是以下形式:
    !(<metricprefix>,<metricprefix>,<metricprefix>,<metricprefix> ...)
    这指定了逗号分隔的度量标识前缀列表。只检索不匹配任何前缀的指标。
    如果指定了metricstoretrie,是否在字段查询参数中指定。请注意,必须对URL等不安全字符(如空格)进行适当编码。
  5. confstoretrieve - 如果指定,则定义要检索的配置或不检索哪些配置并作为响应发回。confstoretrieve可以是以下形式的表达式:
    (<config_name_prefix>,<config_name_prefix>,<config_name_prefix>,<config_name_prefix> ...)
    这指定了逗号分隔的配置名称前缀列表。只检索匹配任何前缀的配置。括号是简单表达的可选项。或者,表达式可以是以下形式:
    !(<config_name_prefix>,<config_name_prefix>,<config_name_prefix>,<config_name_prefix> ...)
    这指定了逗号分隔的配置名称前缀列表。只检索不匹配任何前缀的配置。
    如果指定了confstoretrieve,则无论是否在字段查询参数中指定了CONFIGS,都将检索配置。请注意,必须对URL等不安全字符(如空格)进行适当编码。
  6. fields - 指定要检索的字段。字段的可能值可以是EVENTS,INFO,CONFIGS,METRICS,RELATES_TO,IS_RELATED_TO和ALL。如果指定了ALL,则将检索所有字段。可以将多个字段指定为以逗号分隔的列表。如果未指定fields,作为响应,app id,type(相当于YARN_APPLICATION),将返回app createdtime和信息字段中的UID。
  7. metricslimit - 如果已指定,则定义要返回的度量标准数。仅在字段包含METRICS / ALL或metricstoretrieve时才考虑。否则忽略。metricslimit的最大可能值可以是Integer的最大值。如果未指定或者值小于1,并且必须检索度量,则metricslimit将被视为1,即将返回最新的度量单值。
  8. metricstimestart - 如果已指定,则返回此时间戳之后的实体的度量标准。
  9. metricstimeend - 如果已指定,则返回此时间戳之前的实体的度量标准。

示例JSON响应:

{
  "metrics": [],
  "events": [],
  "id": "application_1460419579913_0002",
  "type": "YARN_APPLICATION",
  "createdtime": 1460419580171,
  "info": {
    "UID": "test-cluster!sjlee!ds-date!1460419580171!application_1460419579913_0002"
  },
  "configs": {},
  "isrelatedto": {},
  "relatesto": {}
}

响应代码

  1. 如果成功,则返回HTTP 200(OK)响应。
  2. 如果解析请求中出现任何问题,则返回HTTP 400(错误请求)。
  3. 如果无法检索流上下文信息或找不到给定app id的应用程序,则返回HTTP 404(未找到)。
  4. 对于检索数据时出现不可恢复的错误,将返回HTTP 500(内部服务器错误)。

在Application的范围内查询通用实体

使用此API,您可以查询由集群ID,应用程序ID和每个框架实体类型标识的通用实体。如果使用不带群集名称REST端点,由配置指定的群集yarn.resourcemanager.cluster-ID在纱线-site.xml中被采取。流上下文信息(即用户,流名称和运行标识)不是必需的,但如果在查询参数中指定,则可以排除需要额外操作来基于集群和应用程序ID获取流上下文信息。如果匹配实体的数量超过限制,则将返回达到限制的最新实体。此端点可用于查询容器,应用程序尝试或客户端放入后端的任何其他通用实体。例如,我们可以通过指定的实体类型为查询集装箱YARN_CONTAINER通过指定的实体类型和应用的尝试YARN_APPLICATION_ATTEMPT。如果没有实体与谓词匹配,则返回空列表。

HTTP请求:

GET /ws/v2/timeline/clusters/{cluster name}/apps/{app id}/entities/{entity type}

or

GET /ws/v2/timeline/apps/{app id}/entities/{entity type}

查询参数支持:

  1. userid - 如果指定,则仅返回属于该用户的实体。必须与flowname和flowrunid查询参数一起指定此查询参数,否则将忽略它。如果未指定userid,flowname和flowrunid,则必须在执行查询时基于cluster和appid获取流上下文信息。
  2. flowname - 如果指定,则仅返回属于此flowname的实体。此查询参数必须与userid和flowrunid查询参数一起指定,否则将被忽略。如果未指定userid,flowname和flowrunid,则必须在执行查询时基于cluster和appid获取流上下文信息。
  3. flowrunid - 如果指定,则仅返回属于此流程运行标识的实体。此查询参数必须与userid和flowname查询参数一起指定,否则将被忽略。如果未指定userid,flowname和flowrunid,则必须在执行查询时基于cluster和appid获取流上下文信息。
  4. limit - 如果指定,则定义要返回的实体数。限制的最大可能值是Long的最大值。如果未指定或者值小于0,则限制将被视为100。
  5. createdtimestart - 如果指定,则仅返回在此时间戳之后创建的实体。
  6. createdtimeend - 如果指定,则仅返回在此时间戳之前创建的实体。
  7. relatesto - 如果指定,匹配的实体必须与实体类型相关联的给定实体相关或不相关。relatesto表示为以下形式的表达式:
    “(<entitytype>:<entityid>:<entityid> ...,<entitytype>:<entityid>:<entityid> ...)<op>!(<entitytype>:<entityid> :<ENTITYID> ...,<的EntityType>:<ENTITYID>:<ENTITYID> ...)”。
    如果equivsto表达式具有实体类型 - 在括号括号中指定的实体id(s)关系继续“!”,则表示不会返回在relatedsto字段中具有这些关系的实体。对于没有“!”的表达式或子表达式,将返回在其relatedsto字段中具有指定关系的所有实体。“op”是逻辑运算符,可以是AND或OR。实体类型后面可以跟任意数量的实体ID。我们可以组合任意数量的AND和OR来创建复杂的表达式。括号可以用来一起表达表达。
    例如:relatesto可以是“(((type1:id1:id2:id3,type3:id9)AND!(type2:id7:id8))OR(type1:id4))”。
    请注意,必须对URL等不安全字符(如空格)进行适当编码。
  8. isrelatedto - 如果指定,匹配的实体必须与与实体类型关联的给定实体相关或不相关。isrelatedto以与relatedsto相同的形式表示。
  9. infofilters - 如果指定,匹配的实体必须与给定的信息**完全匹配,并且必须等于或不等于给定值。info键是一个字符串,但value可以是任何对象。infofilters表示为以下形式的表达式:
    “(<key> <compareop> <value>)<op>(<key> <compareop> <value>)”。
    这里op可以是AND或OR。而compareop可以是“eq”,“ne”或“ene”。
    “eq”表示等于,“ne”表示不等于并且匹配不需要键的存在,“ene”表示不等于但需要存在键。我们可以组合任意数量的AND和OR来创建复杂的表达式。括号可以用来一起表达表达。
    例如:infofilters可以是“(((infokey1 eq value1)AND(infokey2 ne value1))OR(infokey1 ene value3))”。
    注意:如果value是一个对象,则可以以JSON格式的形式给出值,不带任何空格。
    例如:infofilters可以是(infokey1 eq {“<key>”:“<value>”,“<key>”:“<value>”......})。
    请注意,必须对URL等不安全字符(如空格)进行适当编码。
  10. conffilters - 如果指定,匹配的实体必须与给定的配置名称具有完全匹配,并且必须等于或不等于给定的配置值。配置名称和值都必须是字符串。conffilters以与infofilters相同的形式表示。
  11. metricfilters - 如果指定,匹配的实体必须与给定的度量标准完全匹配,并满足指标与度量标准值的关系。度量标识必须是字符串,度量标准值必须是整数值。metricsfilters表示为以下形式的表达式:
    “(<metricid> <compareop> <metricvalue>)<op>(<metricid> <compareop> <metricvalue>)” 
    这里的op可以是AND或OR。而compareop可以是“eq”,“ne”,“ene”,“gt”,“ge”,“lt”和“le”。
    “eq”表示等于,“ne”表示不等于并且匹配不需要度量的存在,“ene”表示不等于但需要存在度量,“gt”表示大于,“ge”表示大于或等于,“lt”表示小于,“le”表示小于或等于。我们可以组合任意数量的AND和OR来创建复杂的表达式。括号可以用来一起表达表达。
    例如:metricfilters可以是“(((metric1 eq 50)AND(metric2 40))OR(metric1 lt 20))”。
    这本质上是一个等同于“(metric1 == 50 AND metric2> 40)OR(metric1 <20)”的表达式。
    请注意,必须对URL等不安全字符(如空格)进行适当编码。
  12. eventfilters - 如果指定,匹配的实体必须包含或不包含给定事件,具体取决于表达式。eventfilters表示为以下形式的表达式:
    “(<eventid>,<eventid>)<op>!(<eventid>,<eventid>,<eventid>)”。
    这里,“!”表示在匹配发生时,必须存在括号“!”内的逗号分隔的事件列表。如果未指定“!”,则必须存在括起的括号内的指定事件。op是逻辑运算符,可以是AND或OR。我们可以组合任意数量的AND和OR来创建复杂的表达式。括号可以用来一起表达表达。
    例如:eventfilters可以是“(((event1,event2)AND!(event4))OR(event3,event7,event5))”。
    请注意,必须对URL等不安全字符(如空格)进行适当编码。
  13. metricstoretrieve - 如果已指定,则定义要检索的度量标准或要检索的度量标准,并将其作为响应发回。metricstoretrieve可以是以下形式的表达式:
    (<metricprefix>,<metricprefix>,<metricprefix>,<metricprefix> ...)
    这指定了逗号分隔的度量标识前缀列表。仅检索与任何前缀匹配的度量。括号是简单表达的可选项。或者,表达式可以是以下形式:
    !(<metricprefix>,<metricprefix>,<metricprefix>,<metricprefix> ...)
    这指定了逗号分隔的度量标识前缀列表。只检索不匹配任何前缀的指标。
    如果指定了metricstoretrie,是否在字段查询参数中指定。请注意,必须对URL等不安全字符(如空格)进行适当编码。
  14. confstoretrieve - 如果指定,则定义要检索的配置或不检索哪些配置并作为响应发回。confstoretrieve可以是以下形式的表达式:
    (<config_name_prefix>,<config_name_prefix>,<config_name_prefix>,<config_name_prefix> ...)
    这指定了逗号分隔的配置名称前缀列表。只检索匹配任何前缀的配置。括号是简单表达的可选项。或者,表达式可以是以下形式:
    !(<config_name_prefix>,<config_name_prefix>,<config_name_prefix>,<config_name_prefix> ...)
    这指定了逗号分隔的配置名称前缀列表。只检索不匹配任何前缀的配置。
    如果指定了confstoretrieve,则无论是否在字段查询参数中指定了CONFIGS,都将检索配置。请注意,必须对URL等不安全字符(如空格)进行适当编码。
  15. fields - 指定要检索的字段。字段的可能值可以是EVENTS,INFO,CONFIGS,METRICS,RELATES_TO,IS_RELATED_TO和ALL。如果指定了ALL,则将检索所有字段。可以将多个字段指定为以逗号分隔的列表。如果未指定fields,则作为响应,将返回实体ID,实体类型,创建时间和信息字段中的UID。
  16. metricslimit - 如果已指定,则定义要返回的度量标准数。仅在字段包含METRICS / ALL或metricstoretrieve时才考虑。否则忽略。metricslimit的最大可能值可以是Integer的最大值。如果未指定或者值小于1,并且必须检索度量,则metricslimit将被视为1,即将返回最新的度量单值。
  17. metricstimestart - 如果已指定,则返回此时间戳之后的实体的度量标准。
  18. metricstimeend - 如果已指定,则返回此时间戳之前的实体的度量标准。
  19. fromid - 如果指定,则从给定的fromid中检索下一组通用实体。检索到的实体集包含指定的fromid。fromid应取自先前发送的流实体响应中与FROM_ID info关联的值。

示例JSON响应:

[
  {
    "metrics": [ ],
    "events": [ ],
    "type": "YARN_APPLICATION_ATTEMPT",
    "id": "appattempt_1465246237936_0001_000001",
    "createdtime": 1465246358873,
    "isrelatedto": { },
    "configs": { },
    "info": {
      "UID": "yarn-cluster!application_1465246237936_0001!YARN_APPLICATION_ATTEMPT!appattempt_1465246237936_0001_000001"
      "FROM_ID": "yarn-cluster!sjlee!ds-date!1460419580171!application_1465246237936_0001!YARN_APPLICATION_ATTEMPT!0!appattempt_1465246237936_0001_000001"
    },
    "relatesto": { }
  },
  {
    "metrics": [ ],
    "events": [ ],
    "type": "YARN_APPLICATION_ATTEMPT",
    "id": "appattempt_1465246237936_0001_000002",
    "createdtime": 1465246359045,
    "isrelatedto": { },
    "configs": { },
    "info": {
      "UID": "yarn-cluster!application_1465246237936_0001!YARN_APPLICATION_ATTEMPT!appattempt_1465246237936_0001_000002"
      "FROM_ID": "yarn-cluster!sjlee!ds-date!1460419580171!application_1465246237936_0001!YARN_APPLICATION_ATTEMPT!0!appattempt_1465246237936_0001_000002"
    },
    "relatesto": { }
  }
]

响应代码

  1. 如果成功,则返回HTTP 200(OK)响应。
  2. 如果解析请求中出现任何问题,则返回HTTP 400(错误请求)。
  3. 如果无法检索流上下文信息,则返回HTTP 404(未找到)。
  4. 对于检索数据时出现不可恢复的错误,将返回HTTP 500(内部服务器错误)。

查询通用实体。

使用此API,您可以查询由群集ID,doAsUser和实体类型标识的每个用户的通用实体。如果使用不带群集名称REST端点,由配置指定的群集yarn.resourcemanager.cluster-ID在纱线-site.xml中取出。如果匹配实体的数量超过限制,则将返回达到限制的最新实体。此端点可用于查询客户端放入后端的通用实体。例如,我们可以通过将实体类型指定为TEZ_DAG_ID来查询用户实体。如果没有实体与谓词匹配,则返回空列表。注意 :截至今天,我们只能查询使用与应用程序所有者不同的doAsUser发布的实体。

HTTP请求:

GET /ws/v2/timeline/clusters/{cluster name}/users/{userid}/entities/{entitytype}

or

GET /ws/v2/timeline/users/{userid}/entities/{entitytype}

查询参数支持:

  1. limit - 如果指定,则定义要返回的实体数。限制的最大可能值是Long的最大值。如果未指定或者值小于0,则限制将被视为100。
  2. createdtimestart - 如果指定,则仅返回在此时间戳之后创建的实体。
  3. createdtimeend - 如果指定,则仅返回在此时间戳之前创建的实体。
  4. relatesto - 如果指定,匹配的实体必须与实体类型相关联的给定实体相关或不相关。relatesto表示为以下形式的表达式:
    “(<entitytype>:<entityid>:<entityid> ...,<entitytype>:<entityid>:<entityid> ...)<op>!(<entitytype>:<entityid> :<ENTITYID> ...,<的EntityType>:<ENTITYID>:<ENTITYID> ...)”。
    如果equivsto表达式具有实体类型 - 在括号括号中指定的实体id(s)关系继续“!”,则表示不会返回在relatedsto字段中具有这些关系的实体。对于没有“!”的表达式或子表达式,将返回在其relatedsto字段中具有指定关系的所有实体。“op”是逻辑运算符,可以是AND或OR。实体类型后面可以跟任意数量的实体ID。我们可以组合任意数量的AND和OR来创建复杂的表达式。括号可以用来一起表达表达。
    例如:relatesto可以是“(((type1:id1:id2:id3,type3:id9)AND!(type2:id7:id8))OR(type1:id4))”。
    请注意,必须对URL等不安全字符(如空格)进行适当编码。
  5. isrelatedto - 如果指定,匹配的实体必须与与实体类型关联的给定实体相关或不相关。isrelatedto以与relatedsto相同的形式表示。
  6. infofilters - 如果指定,匹配的实体必须与给定的信息**完全匹配,并且必须等于或不等于给定值。info键是一个字符串,但value可以是任何对象。infofilters表示为以下形式的表达式:
    “(<key> <compareop> <value>)<op>(<key> <compareop> <value>)”。
    这里op可以是AND或OR。而compareop可以是“eq”,“ne”或“ene”。
    “eq”表示等于,“ne”表示不等于并且匹配不需要键的存在,“ene”表示不等于但需要存在键。我们可以组合任意数量的AND和OR来创建复杂的表达式。括号可以用来一起表达表达。
    例如:infofilters可以是“(((infokey1 eq value1)AND(infokey2 ne value1))OR(infokey1 ene value3))”。
    注意:如果value是一个对象,则可以以JSON格式的形式给出值,不带任何空格。
    例如:infofilters可以是(infokey1 eq {“<key>”:“<value>”,“<key>”:“<value>”......})。
    请注意,必须对URL等不安全字符(如空格)进行适当编码。
  7. conffilters - 如果指定,匹配的实体必须与给定的配置名称具有完全匹配,并且必须等于或不等于给定的配置值。配置名称和值都必须是字符串。conffilters以与infofilters相同的形式表示。
  8. metricfilters - 如果指定,匹配的实体必须与给定的度量标准完全匹配,并满足指标与度量标准值的关系。度量标识必须是字符串,度量标准值必须是整数值。metricsfilters表示为以下形式的表达式:
    “(<metricid> <compareop> <metricvalue>)<op>(<metricid> <compareop> <metricvalue>)” 
    这里的op可以是AND或OR。而compareop可以是“eq”,“ne”,“ene”,“gt”,“ge”,“lt”和“le”。
    “eq”表示等于,“ne”表示不等于并且匹配不需要度量的存在,“ene”表示不等于但需要存在度量,“gt”表示大于,“ge”表示大于或等于,“lt”表示小于,“le”表示小于或等于。我们可以组合任意数量的AND和OR来创建复杂的表达式。括号可以用来一起表达表达。
    例如:metricfilters可以是“(((metric1 eq 50)AND(metric2 40))OR(metric1 lt 20))”。
    这本质上是一个等同于“(metric1 == 50 AND metric2> 40)OR(metric1 <20)”的表达式。
    请注意,必须对URL等不安全字符(如空格)进行适当编码。
  9. eventfilters - 如果指定,匹配的实体必须包含或不包含给定事件,具体取决于表达式。eventfilters表示为以下形式的表达式:
    “(<eventid>,<eventid>)<op>!(<eventid>,<eventid>,<eventid>)”。
    这里,“!”表示在匹配发生时,必须存在括号“!”内的逗号分隔的事件列表。如果未指定“!”,则必须存在括起的括号内的指定事件。op是逻辑运算符,可以是AND或OR。我们可以组合任意数量的AND和OR来创建复杂的表达式。括号可以用来一起表达表达。
    例如:eventfilters可以是“(((event1,event2)AND!(event4))OR(event3,event7,event5))”。
    请注意,必须对URL等不安全字符(如空格)进行适当编码。
  10. metricstoretrieve - 如果已指定,则定义要检索的度量标准或要检索的度量标准,并将其作为响应发回。metricstoretrieve可以是以下形式的表达式:
    (<metricprefix>,<metricprefix>,<metricprefix>,<metricprefix> ...)
    这指定了逗号分隔的度量标识前缀列表。仅检索与任何前缀匹配的度量。括号是简单表达的可选项。或者,表达式可以是以下形式:
    !(<metricprefix>,<metricprefix>,<metricprefix>,<metricprefix> ...)
    这指定了逗号分隔的度量标识前缀列表。只检索不匹配任何前缀的指标。
    如果指定了metricstoretrie,是否在字段查询参数中指定。请注意,必须对URL等不安全字符(如空格)进行适当编码。
  11. confstoretrieve - 如果指定,则定义要检索的配置或不检索哪些配置并作为响应发回。confstoretrieve可以是以下形式的表达式:
    (<config_name_prefix>,<config_name_prefix>,<config_name_prefix>,<config_name_prefix> ...)
    这指定了逗号分隔的配置名称前缀列表。只检索匹配任何前缀的配置。括号是简单表达的可选项。或者,表达式可以是以下形式:
    !(<config_name_prefix>,<config_name_prefix>,<config_name_prefix>,<config_name_prefix> ...)
    这指定了逗号分隔的配置名称前缀列表。只检索不匹配任何前缀的配置。
    如果指定了confstoretrieve,则无论是否在字段查询参数中指定了CONFIGS,都将检索配置。请注意,必须对URL等不安全字符(如空格)进行适当编码。
  12. fields - 指定要检索的字段。字段的可能值可以是EVENTS,INFO,CONFIGS,METRICS,RELATES_TO,IS_RELATED_TO和ALL。如果指定了ALL,则将检索所有字段。可以将多个字段指定为以逗号分隔的列表。如果未指定fields,则作为响应,将返回实体ID,实体类型,创建时间和信息字段中的UID。
  13. metricslimit - 如果已指定,则定义要返回的度量标准数。仅在字段包含METRICS / ALL或metricstoretrieve时才考虑。否则忽略。metricslimit的最大可能值可以是Integer的最大值。如果未指定或者值小于1,并且必须检索度量,则metricslimit将被视为1,即将返回最新的度量单值。
  14. metricstimestart - 如果已指定,则返回此时间戳之后的实体的度量标准。
  15. metricstimeend - 如果已指定,则返回此时间戳之前的实体的度量标准。
  16. fromid - 如果指定,则从给定的fromid中检索下一组通用实体。检索到的实体集包含指定的fromid。fromid应取自先前发送的流实体响应中与FROM_ID info关联的值。

示例JSON响应:

[
  {
    "metrics": [ ],
    "events": [ ],
    "type": "TEZ_DAG_ID",
    "id": "dag_1465246237936_0001_000001",
    "createdtime": 1465246358873,
    "isrelatedto": { },
    "configs": { },
    "info": {
      "UID": "yarn-cluster!sjlee!TEZ_DAG_ID!0!dag_1465246237936_0001_000001"
      "FROM_ID": "sjlee!yarn-cluster!TEZ_DAG_ID!0!dag_1465246237936_0001_000001"
    },
    "relatesto": { }
  },
  {
    "metrics": [ ],
    "events": [ ],
    "type": "TEZ_DAG_ID",
    "id": "dag_1465246237936_0001_000002",
    "createdtime": 1465246359045,
    "isrelatedto": { },
    "configs": { },
    "info": {
      "UID": "yarn-cluster!sjlee!TEZ_DAG_ID!0!dag_1465246237936_0001_000002!userX"
      "FROM_ID": "sjlee!yarn-cluster!TEZ_DAG_ID!0!dag_1465246237936_0001_000002!userX"
    },
    "relatesto": { }
  }
]

响应代码

  1. 如果成功,则返回HTTP 200(OK)响应。
  2. 如果解析请求中出现任何问题,则返回HTTP 400(错误请求)。
  3. 对于检索数据时出现不可恢复的错误,将返回HTTP 500(内部服务器错误)。

在Application的范围内查询通用实体

使用此API,您可以查询由集群ID,应用程序ID,每个框架实体类型和实体ID标识的特定通用实体。如果使用不带群集名称REST端点,由配置指定的群集yarn.resourcemanager.cluster-ID在纱线-site.xml中取出。流上下文信息(即用户,流名称和运行标识)不是必需的,但如果在查询参数中指定,则可以排除需要额外操作来基于集群和应用程序ID获取流上下文信息。此端点可用于查询单个容器,应用程序尝试或客户端放入后端的任何其他通用实体。例如,我们可以通过将实体类型指定为YARN_CONTAINER来查询特定的YARN容器并将实体ID作为容器ID。类似地,可以通过将实体类型指定为YARN_APPLICATION_ATTEMPT并将实体ID 指定为应用程序尝试ID 来查询应用程序尝试。

HTTP请求:

GET /ws/v2/timeline/clusters/{cluster name}/apps/{app id}/entities/{entity type}/{entity id}

or

GET /ws/v2/timeline/apps/{app id}/entities/{entity type}/{entity id}

查询参数支持:

  1. userid - 如果指定,则实体必须属于此用户。必须与flowname和flowrunid查询参数一起指定此查询参数,否则将忽略它。如果未指定userid,flowname和flowrunid,则必须在执行查询时基于cluster和appid获取流上下文信息。
  2. flowname - 如果指定,则实体必须属于此流名称。此查询参数必须与userid和flowrunid查询参数一起指定,否则将被忽略。如果未指定userid,flowname和flowrunid,则必须在执行查询时基于cluster和appid获取流上下文信息。
  3. flowrunid - 如果指定,则实体必须属于此流运行标识。此查询参数必须与userid和flowname查询参数一起指定,否则将被忽略。如果未指定userid,flowname和flowrunid,则必须在执行查询时基于cluster和appid获取流上下文信息。
  4. metricstoretrieve - 如果已指定,则定义要检索的度量标准或要检索的度量标准,并将其作为响应发回。metricstoretrieve可以是以下形式的表达式:
    (<metricprefix>,<metricprefix>,<metricprefix>,<metricprefix> ...)
    这指定了逗号分隔的度量标识前缀列表。仅检索与任何前缀匹配的度量。括号是简单表达的可选项。或者,表达式可以是以下形式:
    !(<metricprefix>,<metricprefix>,<metricprefix>,<metricprefix> ...)
    这指定了逗号分隔的度量标识前缀列表。只检索不匹配任何前缀的指标。
    如果指定了metricstoretrie,是否在字段查询参数中指定。请注意,必须对URL等不安全字符(如空格)进行适当编码。
  5. confstoretrieve - 如果指定,则定义要检索的配置或不检索哪些配置并作为响应发回。confstoretrieve可以是以下形式的表达式:
    (<config_name_prefix>,<config_name_prefix>,<config_name_prefix>,<config_name_prefix> ...)
    这指定了逗号分隔的配置名称前缀列表。只检索匹配任何前缀的配置。括号是简单表达的可选项。或者,表达式可以是以下形式:
    !(<config_name_prefix>,<config_name_prefix>,<config_name_prefix>,<config_name_prefix> ...)
    这指定了逗号分隔的配置名称前缀列表。只检索不匹配任何前缀的配置。
    如果指定了confstoretrieve,则无论是否在字段查询参数中指定了CONFIGS,都将检索配置。请注意,必须对URL等不安全字符(如空格)进行适当编码。
  6. fields - 指定要检索的字段。字段的可能值可以是EVENTS,INFO,CONFIGS,METRICS,RELATES_TO,IS_RELATED_TO和ALL。如果指定了ALL,则将检索所有字段。可以将多个字段指定为以逗号分隔的列表。如果未指定fields,则作为响应,将返回实体ID,实体类型,创建时间和信息字段中的UID。
  7. metricslimit - 如果已指定,则定义要返回的度量标准数。仅在字段包含METRICS / ALL或metricstoretrieve时才考虑。否则忽略。metricslimit的最大可能值可以是Integer的最大值。如果未指定或者值小于1,并且必须检索度量,则metricslimit将被视为1,即将返回最新的度量单值。
  8. metricstimestart - 如果已指定,则返回此时间戳之后的实体的度量标准。
  9. metricstimeend - 如果已指定,则返回此时间戳之前的实体的度量标准。
  10. entityidprefix定义要获取的实体的id前缀。如果指定,则实体检索将更快。

示例JSON响应:

{
  "metrics": [ ],
  "events": [ ],
  "type": "YARN_APPLICATION_ATTEMPT",
  "id": "appattempt_1465246237936_0001_000001",
  "createdtime": 1465246358873,
  "isrelatedto": { },
  "configs": { },
  "info": {
    "UID": "yarn-cluster!application_1465246237936_0001!YARN_APPLICATION_ATTEMPT!0!appattempt_1465246237936_0001_000001"
    "FROM_ID": "yarn-cluster!sjlee!ds-date!1460419580171!application_1465246237936_0001!YARN_APPLICATION_ATTEMPT!0!appattempt_1465246237936_0001_000001"
  },
  "relates

响应代码

  1. 如果成功,则返回HTTP 200(OK)响应。
  2. 如果解析请求中出现任何问题,则返回HTTP 400(错误请求)。
  3. 如果无法检索流上下文信息或找不到给定实体id的实体,则返回HTTP 404(未找到)。
  4. 对于检索数据时出现不可恢复的错误,将返回HTTP 500(内部服务器错误)。

查询通用实体。

使用此API,您可以查询由群集ID,doAsUser以及实体类型和实体ID标识的每个用户的通用实体。如果使用不带群集名称REST端点,由配置指定的群集yarn.resourcemanager.cluster-ID在纱线-site.xml中取出。如果匹配实体的数量超过限制,则将返回达到限制的最新实体。此端点可用于查询客户端放入后端的通用实体。例如,我们可以通过将实体类型指定为TEZ_DAG_ID来查询用户实体。如果没有实体与谓词匹配,则返回空列表。注意 :截至今天,我们只能查询使用与应用程序所有者不同的doAsUser发布的实体。

HTTP请求:

GET /ws/v2/timeline/clusters/{cluster name}/users/{userid}/entities/{entitytype}/{entityid}

or

GET /ws/v2/timeline/users/{userid}/entities/{entitytype}/{entityid}

查询参数支持:

  1. metricstoretrieve - 如果已指定,则定义要检索的度量标准或要检索的度量标准,并将其作为响应发回。metricstoretrieve可以是以下形式的表达式:
    (<metricprefix>,<metricprefix>,<metricprefix>,<metricprefix> ...)
    这指定了逗号分隔的度量标识前缀列表。仅检索与任何前缀匹配的度量。括号是简单表达的可选项。或者,表达式可以是以下形式:
    !(<metricprefix>,<metricprefix>,<metricprefix>,<metricprefix> ...)
    这指定了逗号分隔的度量标识前缀列表。只检索不匹配任何前缀的指标。
    如果指定了metricstoretrie,是否在字段查询参数中指定。请注意,必须对URL等不安全字符(如空格)进行适当编码。
  2. confstoretrieve - 如果指定,则定义要检索的配置或不检索哪些配置并作为响应发回。confstoretrieve可以是以下形式的表达式:
    (<config_name_prefix>,<config_name_prefix>,<config_name_prefix>,<config_name_prefix> ...)
    这指定了逗号分隔的配置名称前缀列表。只检索匹配任何前缀的配置。括号是简单表达的可选项。或者,表达式可以是以下形式:
    !(<config_name_prefix>,<config_name_prefix>,<config_name_prefix>,<config_name_prefix> ...)
    这指定了逗号分隔的配置名称前缀列表。只检索不匹配任何前缀的配置。
    如果指定了confstoretrieve,则无论是否在字段查询参数中指定了CONFIGS,都将检索配置。请注意,必须对URL等不安全字符(如空格)进行适当编码。
  3. fields - 指定要检索的字段。字段的可能值可以是EVENTS,INFO,CONFIGS,METRICS,RELATES_TO,IS_RELATED_TO和ALL。如果指定了ALL,则将检索所有字段。可以将多个字段指定为以逗号分隔的列表。如果未指定fields,则作为响应,将返回实体ID,实体类型,创建时间和信息字段中的UID。
  4. metricslimit - 如果已指定,则定义要返回的度量标准数。仅在字段包含METRICS / ALL或metricstoretrieve时才考虑。否则忽略。metricslimit的最大可能值可以是Integer的最大值。如果未指定或者值小于1,并且必须检索度量,则metricslimit将被视为1,即将返回最新的度量单值。
  5. metricstimestart - 如果已指定,则返回此时间戳之后的实体的度量标准。
  6. metricstimeend - 如果已指定,则返回此时间戳之前的实体的度量标准。
  7. fromid - 如果指定,则从给定的fromid中检索下一组通用实体。检索到的实体集包含指定的fromid。fromid应取自先前发送的流实体响应中与FROM_ID info关联的值。

示例JSON响应:

[
  {
    "metrics": [ ],
    "events": [ ],
    "type": "TEZ_DAG_ID",
    "id": "dag_1465246237936_0001_000001",
    "createdtime": 1465246358873,
    "isrelatedto": { },
    "configs": { },
    "info": {
      "UID": "yarn-cluster!sjlee!TEZ_DAG_ID!0!dag_1465246237936_0001_000001!userX"
      "FROM_ID": "sjlee!yarn-cluster!TEZ_DAG_ID!0!dag_1465246237936_0001_000001!userX"
    },
    "relatesto": { }
  }
]

响应代码

  1. 如果成功,则返回HTTP 200(OK)响应。
  2. 如果解析请求中出现任何问题,则返回HTTP 400(错误请求)。
  3. 对于检索数据时出现不可恢复的错误,将返回HTTP 500(内部服务器错误)。

查询通用实体类型

使用此API,您可以查询给定应用程序ID的可用实体类型集。如果使用没有集群名称的REST端点,则会获取由yarn-site.xml中的配置yarn.resourcemanager.cluster-id指定的集群。如果未指定作为可选查询参数的userid,flow name和flow run id,则将根据存储在底层存储实现中的流上下文信息中的app id和cluster id来查询它们。

HTTP请求:

GET /ws/v2/timeline/apps/{appid}/entity-types

or

GET /ws/v2/timeline/clusters/{clusterid}/apps/{appid}/entity-types

查询参数支持:

  1. userid - 如果指定,则实体必须属于此用户。必须与flowname和flowrunid查询参数一起指定此查询参数,否则将忽略它。如果未指定userid,flowname和flowrunid,则时间线读取器将在执行查询时基于cluster和appid获取流上下文信息。
  2. flowname - 如果指定,则实体必须属于此流名称。此查询参数必须与userid和flowrunid查询参数一起指定,否则将被忽略。如果未指定userid,flowname和flowrunid,则必须在执行查询时基于cluster和appid获取流上下文信息。
  3. flowrunid - 如果指定,则实体必须属于此流运行标识。此查询参数必须与userid和flowname查询参数一起指定,否则将被忽略。如果未指定userid,flowname和flowrunid,则必须在执行查询时基于cluster和appid获取流上下文信息。

示例JSON响应:

{
  YARN_APPLICATION_ATTEMPT,
  YARN_CONTAINER,
  MAPREDUCE_JOB,
  MAPREDUCE_TASK,
  MAPREDUCE_TASK_ATTEMPT
}

响应代码

  1. 如果成功,则返回HTTP 200(OK)响应。
  2. 如果解析请求中出现任何问题,则返回HTTP 400(错误请求)。
  3. 如果无法检索流上下文信息或找不到给定实体id的实体,则返回HTTP 404(未找到)。
  4. 对于检索数据时出现不可恢复的错误,将返回HTTP 500(内部服务器错误)。

 

 

原文链接: https://hadoop.apache.org/docs/r3.2.0/