Hadoop 文档

General

Common

HDFS

MapReduce

MapReduce REST APIs

YARN

YARN REST APIs

YARN Service

Submarine

Hadoop Compatible File Systems

Auth

Tools

Reference

Configuration

总览

介绍

YARN时间轴服务v.2是继v.1和v.1.5之后的Timeline Server的下一个主要迭代。创建V.2是为了应对v.1的两个主要挑战。

可扩展性

V.1仅限于写入器/读取器和存储的单个实例,并且无法很好地扩展到小型群集之外。V.2使用更具扩展性的分布式写入器体系结构和可扩展的后端存储。

YARN时间轴服务v.2将数据的收集(写入)与数据的提供(读取)分开。它使用分布式收集器,每个YARN应用程序实质上是一个收集器。读取器是专用于通过REST API服务查询的单独实例。

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

可用性改进

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

另外,诸如配置和指标之类的信息也被视为一流公民。

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

流层次结构

建筑

YARN时间轴服务v.2使用一组收集器(写入器)将数据写入后端存储。收集器与专用的应用程序主机一起分布并位于同一位置。属于该应用程序的所有数据都将发送到应用程序级时间线收集器,资源管理器时间线收集器除外。

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

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

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

下图从高层次说明了该设计。

时间轴服务v.2架构

现状和未来计划

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

访问数据的基本模式是通过REST。REST API附带了大量有用且灵活的查询模式(有关更多信息,请参见下文)。YARN Client已与ATSv2集成。如果ResouceManager中没有详细信息,则可以从TimelineReader提取应用程序/尝试/容器报告。

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

端到端支持Kerberos身份验证。与HBase的所有通信都可以进行kerberized。有关配置,请参阅安全性配置。根据可读取时间轴数据的用户和组的可配置白名单,添加了对简单授权的支持。默认情况下,集群管理员可以读取时间轴数据。

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

路线图包括

  • 更强大的存储容错能力。
  • 支持集群外客户端
  • 支持实体ACL
  • 流,用户和队列的脱机(基于时间的定期)聚合,用于报告和分析
  • 与v.1的迁移和兼容性

部署方式

构型

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

基本配置

配置属性 描述
yarn.timeline-service.enabled 向客户端指示是否启用了时间轴服务。如果启用,则应用程序使用的TimelineClient库会将实体和事件发布到Timeline服务器。默认为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-host 时间线阅读器将绑定到的实际地址。如果设置了此可选地址,则读取器服务器将绑定到该地址和yarn.timeline-service.reader.webapp.address中指定的端口。通过设置为0.0.0.0,这对于使服务在所有接口上侦听最为有用。
yarn.timeline-service.hbase.configuration.file hbase-site.xml配置文件的可选URL,用于连接到时间轴服务hbase集群。如果为空或未指定,则将从类路径中加载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。要合并的异步实体数 时间轴V2客户端尝试合并许多异步实体(如果有),然后调用REST ATS V2 API提交。默认为10
yarn.timeline-service.hbase.coprocessor.app最终值保留毫秒 该设置用于控制已完成应用的指标的最终值在合并到流总和中之前保留多长时间。默认为259200000(3天)。这应该在HBase群集中设置。
yarn.rm.system-metrics-publisher.emit-container-events 该设置控制RM是否将纱线容器度量标准发布到时间轴服务器。此配置设置适用于ATS V2。默认为false
yarn.nodemanager.emit容器事件 该设置控制NM是否将纱线容器度量标准发布到时间轴服务器。此配置设置适用于ATS V2。默认为true

安全配置

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

配置属性 描述
yarn.timeline-service.http-authentication.type 定义用于时间轴服务器(收集器/读取器)HTTP端点的身份验证。支持的值为:simple / kerberos /#AUTHENTICATION_HANDLER_CLASSNAME#。默认为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主体将用作时间线收集器,因为它作为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 用户的逗号分隔列表,然后是空格,然后是逗号分隔的组列表。它将允许此用户和组列表读取数据并拒绝其他任何人。默认值设置为无。如果启用了授权,则此配置是必需的。
按用户的yarn.webapp.filter-entity-list 默认为false。如果设置为true并禁用yarn.timeline-service.read.authentication.enabled,则仅列出仅限于远程用户实体的实体列表。它是列出API的YARN通用配置。使用此配置,TimelineReader使用实体所有者授权调用方UGI。如果不匹配,将从响应中删除那些实体。

启用CORS支持

要为时间轴服务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)为时间轴服务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。例如:

<配置>
  <属性>
    <name> hbase.rootdir </ name>
    <value> hdfs://namenode.example.org:8020 / hbase </ value>
  </ 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。在模式创建中创建流运行表时需要使用它。HDFS的默认位置是/ hbase / coprocessor。例如,

hadoop fs -mkdir / hbase /协处理器
hadoop fs -put hadoop-yarn-server-timelineservice-hbase-coprocessor-3.2.0-SNAPSHOT.jar
       /hbase/coprocessor/hadoop-yarn-server-timelineservice.jar

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

<属性>
  <name> yarn.timeline-service.hbase.coprocessor.jar.hdfs.location </ name>
  <value> / custom / hdfs / path / jarName </ value>
</ property>
步骤3)创建时间轴服务架构

最后,运行模式创建器工具来创建必要的表:

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

TimelineSchemaCreator工具支持可能会派上用场尤其是当你正在测试几个选项。例如,您可以使用-skipExistingTable(简称-s)跳过现有表并继续创建其他表,而不会导致架构创建失败。默认情况下,表的模式前缀为“ prod。”。如果未提供任何选项或'-help'(简称'-h'),则将打印命令用法。选项(-entityTableName,-appToflowTableName,-applicationTableName,-subApplicationTableName)将有助于覆盖默认表名。使用自定义表名称时,必须在yarn.timeline-service.hbase.configuration.file中配置的hbase-site.xml中设置以下具有自定义表名称的配置。

yarn.timeline-service.app-flow.table.name
yarn.timeline-service.entity.table.name
yarn.timeline-service.application.table.name
yarn.timeline-service.subapplication.table.name
yarn.timeline-service.flowactivity.table.name
yarn.timeline-service.flowrun.table.name
yarn.timeline-service.domain.table.name

启用时间轴服务v.2

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

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

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

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

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

<属性>
  <description>控制纱线系统指标是否为
  RM和NM是否在时间轴服务上发布。</ description>
  <name> yarn.system-metrics-publisher.enabled </ name>
  <value> true </ value>
</ property>

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

<属性>
  <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相同。例如:

<属性>
  <description>指向hbase-site.xml配置文件的可选URL
  用于连接到时间轴服务hbase集群。如果为空
  指定,则将从类路径中加载HBase配置。
  指定后,指定配置文件中的值将被覆盖
  来自类路径中存在的那些。
  </ description>
  <name> yarn.timeline-service.hbase.configuration.file </ name>
  <值>文件:/etc/hbase/hbase-ats-dc1/hbase-site.xml </值>
</ property>

要同时配置时间轴服务1.5和v.2,请添加以下属性

<属性>
  <name> yarn.timeline-service.versions </ name>
  <value> 1.5f,2.0f </ value>
</ property>

如果未配置以上版本,则默认为yarn.timeline-service.version中设置的版本

运行时间轴服务v.2

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

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

$ yarn-daemon.sh开始时间线读取器

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

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

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

从alpha1升级到GA

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

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

  • 协处理器现在是GA中动态加载的表级协处理器。我们建议删除该表,用GA One替换hdfs上的协处理器jar,重新启动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方法有两个变体:putEntitiesputEntitiesAsync。前者是一项阻塞操作,必须用于写入更多关键数据(例如生命周期事件)。后者是非阻塞操作。请注意,两个都没有返回值。

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

例如:

//创建并启动时间轴客户端v.2
TimelineV2Client timelineClient =
    TimelineV2Client.createTimelineClient(appId);
timelineClient.init(conf);
timelineClient.start();

尝试{
  TimelineEntity myEntity =新的TimelineEntity();
  myEntity.setType(“ MY_APPLICATION”);
  myEntity.setId(“ MyApp1”);
  //撰写其他实体信息

  //阻止写入
  timelineClient.putEntities(myEntity);

  TimelineEntity myEntity2 =新的TimelineEntity();
  //撰写其他信息

  //非阻塞写入
  timelineClient.putEntitiesAsync(myEntity2);

} catch(IOException | YarnException e){
  //处理异常
}最后{
  //停止时间轴客户端
  timelineClient.stop();
}

如上所述,您需要指定YARN应用程序ID才能写入时间轴服务v.2。请注意,当前您需要位于群集上才能写入时间轴服务。例如,容器中的应用程序母版或代码可以写入时间轴服务,而集群外的MapReduce作业提交者则不能。

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

amRMClient.registerTimelineV2Client(timelineClient);

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

timelineClient.setTimelineCollectorInfo(response.getCollectorInfo());

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

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

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

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

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

缺省情况下,NOP操作表示不执行任何实时聚合操作。

为了利用Timeline Service v.2提供的流支持,应用程序框架必须尽可能地设置“流上下文”。流上下文包括以下内容:

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

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

  • 流名称:YARN应用程序名称(如果未设置名称,则为应用程序ID)
  • 流运行ID:应用程序的启动时间(以Unix时间为单位)(毫秒)
  • 流程版本:“ 1”

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

ApplicationSubmissionContext appContext = app.getApplicationSubmissionContext();

//将流上下文设置为YARN应用程序标签
Set <String>标签= 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查询中使用流名称和流版本之前将其转换为小写。

时间轴服务v.2 REST API

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

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

这是对该API的非正式描述。

根路径

GET / ws / v2 /时间轴/

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

{
  “关于”:“时间轴阅读器API”,
  “ timeline-service-version”:“ 3.0.0-alpha1-SNAPSHOT”,
  “ timeline-service-build-version”:“来自sjlee源校验和be6cba0e42417d53be16459e1685e7的fb0acd08e6f0b030d82eeb7cbfa5404376313e60中的3.0.0-alpha1-SNAPSHOT”,
  “ timeline-service-version-built-on”:“ 2016-04-11T23:15Z”,
  “ hadoop-version”:“ 3.0.0-alpha1-SNAPSHOT”,
  “ hadoop-build-version”:“ sjlee源校验和ee968fd0aedcc7384230ee3ca216e790的fb0acd08e6f0b030d82eeb7cbfa5404376313e60中的3.0.0-alpha1-SNAPSHOT”,
  “ hadoop-version-built-on”:“ 2016-04-11T23:14Z”
}

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

查询流程

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

HTTP请求:

GET / ws / v2 /时间轴/集群/ {集群名称} /流/

要么

GET / ws / v2 /时间轴/流/

支持的查询参数:

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

JSON响应示例:

[
  {
    “指标”:[],
    “事件”:[],
    “ id”:“ test-cluster / 1460419200000 / sjlee @ ds-date”,
    “ type”:“ YARN_FLOW_ACTIVITY”,
    “ createdtime”:0,
    “流量”:[
      {
        “指标”:[],
        “事件”:[],
        “ id”:“ sjlee @ ds-date / 1460420305659”,
        “ type”:“ YARN_FLOW_RUN”,
        “ createdtime”:0,
        “信息”:{
          “ SYSTEM_INFO_FLOW_VERSION”:“ 1”,
          “ SYSTEM_INFO_FLOW_RUN_ID”:1460420305659,
          “ SYSTEM_INFO_FLOW_NAME”:“ ds-date”,
          “ SYSTEM_INFO_USER”:“ sjlee”
        },
        “与...相关”:{},
        “涉及到”: {}
      },
      {
        “指标”:[],
        “事件”:[],
        “ id”:“ sjlee @ ds-date / 1460420587974”,
        “ type”:“ YARN_FLOW_RUN”,
        “ createdtime”:0,
        “信息”:{
          “ SYSTEM_INFO_FLOW_VERSION”:“ 1”,
          “ SYSTEM_INFO_FLOW_RUN_ID”:1460420587974,
          “ SYSTEM_INFO_FLOW_NAME”:“ ds-date”,
          “ SYSTEM_INFO_USER”:“ sjlee”
        },
        “与...相关”:{},
        “涉及到”: {}
      }
    ],
    “信息”:{
      “ SYSTEM_INFO_CLUSTER”:“测试群集”,
      “ UID”:“测试群集!sjlee!ds-date”,
      “ FROM_ID”:“测试群集!1460419200000!sjlee!ds-date”,
      “ SYSTEM_INFO_FLOW_NAME”:“ ds-date”,
      “ SYSTEM_INFO_DATE”:1460419200000,
      “ SYSTEM_INFO_USER”:“ sjlee”
    },
    “与...相关”:{},
    “涉及到”: {}
  }
]

响应码

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

查询流程运行

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

HTTP请求:

GET / ws / v2 /时间轴/集群/ {集群名称} /用户/ {用户名称} /流/ {流名称} /运行/

要么

GET / ws / v2 /时间轴/用户/ {用户名} /流/ {流名} /运行/

支持的查询参数:

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

JSON响应示例:

[
  {
    “指标”:[],
    “事件”:[],
    “ id”:“ sjlee @ ds-date / 1460420587974”,
    “ type”:“ YARN_FLOW_RUN”,
    “ createdtime”:1460420587974,
    “信息”:{
      “ UID”:“ test-cluster!sjlee!ds-date!1460420587974”,
      “ FROM_ID”:“测试群集!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”
    },
    “与...相关”:{},
    “涉及到”: {}
  },
  {
    “指标”:[],
    “事件”:[],
    “ id”:“ sjlee @ ds-date / 1460420305659”,
    “ type”:“ YARN_FLOW_RUN”,
    “ createdtime”:1460420305659,
    “信息”:{
      “ UID”:“ test-cluster!sjlee!ds-date!1460420305659”,
      “ FROM_ID”:“测试群集!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”
    },
    “与...相关”:{},
    “涉及到”: {}
  }
]

响应码

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

查询流程运行

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

HTTP请求:

GET / ws / v2 /时间轴/集群/ {集群名称} /用户/ {用户名称} /流/ {流名称} /运行/ {运行ID}

要么

GET / ws / v2 /时间轴/用户/ {用户名} /流/ {流名} /运行次数/ {运行ID}

支持的查询参数:

  1. metricstoretrieve-如果指定,则定义要检索的指标或不检索并回发的指标。metricstoretrieve可以是以下形式的表达式:
    (<metricprefix>,<metricprefix>,<metricprefix>,<metricprefix>…)。
    这指定了以逗号分隔的度量ID前缀列表。仅会检索与任何前缀匹配的指标。括号是可选的,用于简单表达。或者,表达式可以采用以下形式:
    !(<metricprefix>,<metricprefix>,<metricprefix>,<metricprefix>…)
    这指定了以逗号分隔的度量ID前缀列表。仅检索不匹配任何前缀的指标。
    请注意,URL不安全字符(例如空格)必须正确编码。

JSON响应示例:

{
  “指标”:[
    {
      “ type”:“ SINGLE_VALUE”,
      “ id”:“ org.apache.hadoop.mapreduce.lib.input.FileInputFormatCounter:BYTES_READ”,
      “ aggregationOp”:“ NOP”,
      “值”:{
        “ 1465246377261”:118
      }
    },
    {
      “ type”:“ SINGLE_VALUE”,
      “ id”:“ org.apache.hadoop.mapreduce.lib.output.FileOutputFormatCounter:BYTES_WRITTEN”,
      “ aggregationOp”:“ NOP”,
      “值”:{
        “ 1465246377261”:97
      }
    }
  ],
  “事件”:[],
  “ id”:“ varun @ QuasiMonteCarlo / 1465246348599”,
  “ type”:“ YARN_FLOW_RUN”,
  “ createdtime”:1465246348599,
  “与...相关”:{},
  “信息”:{
    “ UID”:“纱线群集!varun!QuasiMonteCarlo!1465246348599”,
    “ FROM_ID”:“纱线群集!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
  },
  “涉及到”: {}
}

响应码

  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 /时间轴/集群/ {集群名称} /用户/ {用户名称} /流/ {流名称} /应用

要么

GET / ws / v2 /时间轴/用户/ {用户名} /流/ {流名} /应用

支持的查询参数:

  1. limit-如果指定,则定义要返回的应用程序数。限制的最大可能值为Long的最大值。如果未指定或值小于0,则限制将被视为100。
  2. createdtimestart-如果指定,则仅返回在此时间戳之后创建的应用程序。
  3. createdtimeend-如果指定,则仅返回在此时间戳之前创建的应用程序。
  4. relatedto-如果指定,则匹配的应用程序必须与或不与与实体类型相关联的给定实体相关。relatedto表示为以下形式的表达式:
    “(<< entitytype>:<entityid>:<entityid> ...,<entitytype>:<entityid>:<entityid> ...)<op>!(<entitytype>:<entityid> :<entityid> ...,<entitytype>:<entityid>:<entityid> ...)”。
    如果relatedto表达式具有实体类型-在括号中以“!”开头指定的实体ID关系,则意味着将不返回在relateds字段中具有这些关系的应用。对于不带“!”的表达式或子表达式,将返回所有在其relatedto字段中具有指定关系的应用程序。“ op”是逻辑运算符,可以是AND或OR。实体类型后可以跟任意数量的实体ID。而且我们可以结合任意数量的AND和OR来创建复杂的表达式。括号可用于将表达式组合在一起。
    例如:relatedto可以是“((((type1:id1:id2:id3,type3:id9)AND!(type2:id7:id8))OR(type1:id4))”。
    请注意,URL不安全字符(例如空格)必须正确编码。
  5. isrelatedto-如果指定,则匹配的应用程序必须与与实体类型相关联的给定实体相关或不相关。isrelatedto以与relatedto相同的形式表示。
  6. infofilters-如果指定,则匹配的应用程序必须与给定的info键完全匹配,并且必须等于或不等于给定值。info键是一个字符串,但value可以是任何对象。信息过滤器表示为以下形式的表达式:
    “(<< 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-如果指定,则匹配的应用程序必须与给定指标完全匹配,并满足与指标值的指定关系。指标ID必须是字符串,并且指标值必须是整数值。度量过滤器表示为以下形式的表达式:
    “((<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 gt 40))OR((metric1 lt 20)))”。
    从本质上讲,这是一个等于“((metric1 == 50 AND metric2> 40)或(metric1 <20)””的表达式。
    请注意,URL等不安全字符(例如空格)必须进行适当的编码。
  9. eventfilters-如果指定,则匹配的应用程序必须包含或不包含取决于表达式的给定事件。eventfilters表示为以下形式的表达式:
    “(<< eventid>,<eventid>)<op>!(<eventid>,<eventid>,<eventid>)”。
    这里, ”!” 表示括弧中以“!”开头的事件均以逗号分隔 必须存在才能匹配。如果是“!” 如果未指定,则括号中的指定事件必须存在。op是逻辑运算符,可以为AND或OR。我们可以结合任意数量的AND和OR来创建复杂的表达式。括号可用于将表达式组合在一起。
    例如:事件过滤器可以是“((((event1,event2)AND!(event4))OR(event3,event7,event5))”。
    请注意,URL不安全字符(例如空格)必须正确编码。
  10. metricstoretrieve-如果指定,则定义要检索的指标或不检索并回发的指标。metricstoretrieve可以是以下形式的表达式:
    (<metricprefix>,<metricprefix>,<metricprefix>,<metricprefix>…)。
    这指定了以逗号分隔的度量ID前缀列表。仅会检索与任何前缀匹配的指标。括号是可选的,用于简单表达。或者,表达式可以采用以下形式:
    !(<metricprefix>,<metricprefix>,<metricprefix>,<metricprefix>…)
    这指定了以逗号分隔的度量ID前缀列表。仅检索不匹配任何前缀的指标。
    如果指定了metricstoretrieve,是否在字段查询参数中指定。请注意,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. 字段 -指定要检索的字段。字段的可能值可以是EVENTSINFOCONFIGSMETRICSRELATES_TOIS_RELATED_TOALL。如果指定了ALL,则将检索所有字段。可以将多个字段指定为以逗号分隔的列表。如果未指定字段,则将返回应用程序ID,类型(相当于YARN_APPLICATION),信息字段中的应用程序createdtime和UID作为响应。
  13. metricslimit-如果指定,则定义要返回的度量标准数量。仅当指定包含METRICS / ALL或metricstoretrieve的字段时才考虑。否则忽略。metricslimit的最大可能值可以是Integer的最大值。如果未指定或值小于1,并且必须检索指标,则metricslimit将被视为1,即将返回指标的最新单个值。
  14. metricstimestart-如果指定,则在此时间戳记之后返回实体的度量标准。
  15. metricstimeend-如果指定,则返回此时间戳之前的实体的度量。
  16. fromid-如果指定,则从给定的fromid检索下一组应用程序实体。检索到的实体集包括指定的fromid。fromid应该从与先前发送的流实体响应中的FROM_ID信息键关联的值中获取。

JSON响应示例:

[
  {
    “指标”:[],
    “事件”:[],
    “ type”:“ YARN_APPLICATION”,
    “ id”:“ application_1465246237936_0001”,
    “ createdtime”:1465246348599,
    “与...相关”:{},
    “ configs”:{},
    “信息”:{
      “ UID”:“ yarn-cluster!application_1465246237936_0001”
      “ FROM_ID”:“纱线群集!varun!QuasiMonteCarlo!1465246348599!application_1465246237936_0001”,
    },
    “涉及到”: { }
  },
  {
    “指标”:[],
    “事件”:[],
    “ type”:“ YARN_APPLICATION”,
    “ id”:“ application_1464983628730_0005”,
    “ createdtime”:1465033881959,
    “与...相关”:{},
    “ configs”:{},
    “信息”:{
      “ UID”:“纱线群集!application_1464983628730_0005”
      “ FROM_ID”:“纱线群集!varun!QuasiMonteCarlo!1465246348599!application_1464983628730_0005”,
    },
    “涉及到”: { }
  }
]

响应码

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

查询应用以进行流运行

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

HTTP请求:

GET / ws / v2 /时间轴/集群/ {集群名称} /用户/ {用户名称} /流/ {流名称} /运行/ {运行ID} /应用

要么

GET / ws / v2 /时间轴/用户/ {用户名} /流/ {流名} /运行/ {运行ID} /应用/

支持的查询参数:

  1. limit-如果指定,则定义要返回的应用程序数。限制的最大可能值为Long的最大值。如果未指定或值小于0,则限制将被视为100。
  2. createdtimestart-如果指定,则仅返回在此时间戳之后创建的应用程序。
  3. createdtimeend-如果指定,则仅返回在此时间戳之前创建的应用程序。
  4. relatedto-如果指定,则匹配的应用程序必须与或不与与实体类型相关联的给定实体相关。relatedto表示为以下形式的表达式:
    “(<< entitytype>:<entityid>:<entityid> ...,<entitytype>:<entityid>:<entityid> ...)<op>!(<entitytype>:<entityid> :<entityid> ...,<entitytype>:<entityid>:<entityid> ...)”。
    如果relatedto表达式具有实体类型-在括号中以“!”开头指定的实体ID关系,则意味着将不返回在relateds字段中具有这些关系的应用。对于不带“!”的表达式或子表达式,将返回所有在其relatedto字段中具有指定关系的应用程序。“ op”是逻辑运算符,可以是AND或OR。实体类型后可以跟任意数量的实体ID。而且我们可以结合任意数量的AND和OR来创建复杂的表达式。括号可用于将表达式组合在一起。
    例如:relatedto可以是“((((type1:id1:id2:id3,type3:id9)AND!(type2:id7:id8))OR(type1:id4))”。
    请注意,URL不安全字符(例如空格)必须正确编码。
  5. isrelatedto-如果指定,则匹配的应用程序必须与与实体类型相关联的给定实体相关或不相关。isrelatedto以与relatedto相同的形式表示。
  6. infofilters-如果指定,则匹配的应用程序必须与给定的info键完全匹配,并且必须等于或不等于给定值。info键是一个字符串,但value可以是任何对象。信息过滤器表示为以下形式的表达式:
    “(<< 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-如果指定,则匹配的应用程序必须与给定指标完全匹配,并满足与指标值的指定关系。指标ID必须是字符串,并且指标值必须是整数值。度量过滤器表示为以下形式的表达式:
    “((<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 gt 40))OR((metric1 lt 20)))”。
    从本质上讲,这是一个等于“((metric1 == 50 AND metric2> 40)或(metric1 <20)””的表达式。
    请注意,URL等不安全字符(例如空格)必须进行适当的编码。
  9. eventfilters-如果指定,则匹配的应用程序必须包含或不包含取决于表达式的给定事件。eventfilters表示为以下形式的表达式:
    “(<< eventid>,<eventid>)<op>!(<eventid>,<eventid>,<eventid>)”。
    这里, ”!” 表示括弧中以“!”开头的事件均以逗号分隔 必须存在才能匹配。如果是“!” 如果未指定,则括号中的指定事件必须存在。op是逻辑运算符,可以为AND或OR。我们可以结合任意数量的AND和OR来创建复杂的表达式。括号可用于将表达式组合在一起。
    例如:事件过滤器可以是“((((event1,event2)AND!(event4))OR(event3,event7,event5))”。
    请注意,URL不安全字符(例如空格)必须正确编码。
  10. metricstoretrieve-如果指定,则定义要检索的指标或不检索并回发的指标。metricstoretrieve可以是以下形式的表达式:
    (<metricprefix>,<metricprefix>,<metricprefix>,<metricprefix>…)。
    这指定了以逗号分隔的度量ID前缀列表。仅会检索与任何前缀匹配的指标。括号是可选的,用于简单表达。或者,表达式可以采用以下形式:
    !(<metricprefix>,<metricprefix>,<metricprefix>,<metricprefix>…)
    这指定了以逗号分隔的度量ID前缀列表。仅检索不匹配任何前缀的指标。
    如果指定了metricstoretrieve,是否在字段查询参数中指定。请注意,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. 字段 -指定要检索的字段。字段的可能值可以是EVENTSINFOCONFIGSMETRICSRELATES_TOIS_RELATED_TOALL。如果指定了ALL,则将检索所有字段。可以将多个字段指定为以逗号分隔的列表。如果未指定字段,则将返回应用程序ID,类型(相当于YARN_APPLICATION),信息字段中的应用程序createdtime和UID作为响应。
  13. metricslimit-如果指定,则定义要返回的度量标准数量。仅当指定包含METRICS / ALL或metricstoretrieve的字段时才考虑。否则忽略。metricslimit的最大可能值可以是Integer的最大值。如果未指定或值小于1,并且必须检索指标,则metricslimit将被视为1,即将返回指标的最新单个值。
  14. metricstimestart-如果指定,则在此时间戳记之后返回实体的度量标准。
  15. metricstimeend-如果指定,则返回此时间戳之前的实体的度量。
  16. fromid-如果指定,则从给定的fromid检索下一组应用程序实体。检索到的实体集包括指定的fromid。fromid应该从与先前发送的流实体响应中的FROM_ID信息键关联的值中获取。

JSON响应示例:

[
  {
    “指标”:[],
    “事件”:[],
    “ id”:“ application_1460419579913_0002”,
    “ type”:“ YARN_APPLICATION”,
    “ createdtime”:1460419580171,
    “信息”:{
      “ UID”:“ test-cluster!sjlee!ds-date!1460419580171!application_1460419579913_0002”
      “ FROM_ID”:“测试群集!sjlee!ds-date!1460419580171!application_1460419579913_0002”,
    },
    “ configs”:{},
    “与...相关”:{},
    “涉及到”: {}
  }
]

响应码

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

查询应用

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

HTTP请求:

GET / ws / v2 /时间轴/集群/ {集群名称} / apps / {app id}

要么

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

支持的查询参数:

  1. userid-如果指定,则仅返回属于该用户的应用程序。该查询参数必须与flowname和flowrunid查询参数一起指定,否则将被忽略。如果未指定userid,flowname和flowrunid,则在执行查询时,我们将必须基于集群和appid获取流上下文信息。
  2. flowname-仅返回属于该流名称的应用程序。此查询参数必须与userid和flowrunid查询参数一起指定,否则将被忽略。如果未指定userid,flowname和flowrunid,则在执行查询时,我们将必须基于集群和appid获取流上下文信息。
  3. flowrunid-仅返回属于该流运行ID的应用程序。该查询参数必须与userid和flowname查询参数一起指定,否则将被忽略。如果未指定userid,flowname和flowrunid,则在执行查询时,我们将必须基于集群和appid获取流上下文信息。
  4. metricstoretrieve-如果指定,则定义要检索的指标或不检索并回发的指标。metricstoretrieve可以是以下形式的表达式:
    (<metricprefix>,<metricprefix>,<metricprefix>,<metricprefix>…)。
    这指定了以逗号分隔的度量ID前缀列表。仅会检索与任何前缀匹配的指标。括号是可选的,用于简单表达。或者,表达式可以采用以下形式:
    !(<metricprefix>,<metricprefix>,<metricprefix>,<metricprefix>…)
    这指定了以逗号分隔的度量ID前缀列表。仅检索不匹配任何前缀的指标。
    如果指定了metricstoretrieve,是否在字段查询参数中指定。请注意,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. 字段 -指定要检索的字段。字段的可能值可以是EVENTSINFOCONFIGSMETRICSRELATES_TOIS_RELATED_TOALL。如果指定了ALL,则将检索所有字段。可以将多个字段指定为以逗号分隔的列表。如果未指定字段,则将返回应用程序ID,类型(相当于YARN_APPLICATION),信息字段中的应用程序createdtime和UID作为响应。
  7. metricslimit-如果指定,则定义要返回的度量标准数量。仅当指定包含METRICS / ALL或metricstoretrieve的字段时才考虑。否则忽略。metricslimit的最大可能值可以是Integer的最大值。如果未指定或值小于1,并且必须检索指标,则metricslimit将被视为1,即将返回指标的最新单个值。
  8. metricstimestart-如果指定,则在此时间戳记之后返回实体的度量标准。
  9. metricstimeend-如果指定,则返回此时间戳之前的实体的度量。

JSON响应示例:

{
  “指标”:[],
  “事件”:[],
  “ id”:“ application_1460419579913_0002”,
  “ type”:“ YARN_APPLICATION”,
  “ createdtime”:1460419580171,
  “信息”:{
    “ UID”:“ test-cluster!sjlee!ds-date!1460419580171!application_1460419579913_0002”
  },
  “ configs”:{},
  “与...相关”:{},
  “涉及到”: {}
}

响应码

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

在应用范围内查询通用实体

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

HTTP请求:

GET / ws / v2 /时间轴/集群/ {集群名称} / apps / {app id} / entities / {entity type}

要么

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

支持的查询参数:

  1. userid-如果指定,则仅返回属于该用户的实体。该查询参数必须与flowname和flowrunid查询参数一起指定,否则将被忽略。如果未指定userid,flowname和flowrunid,则在执行查询时,我们将必须基于集群和appid获取流上下文信息。
  2. flowname-如果指定,则仅返回属于该流名称的实体。此查询参数必须与userid和flowrunid查询参数一起指定,否则将被忽略。如果未指定userid,flowname和flowrunid,则在执行查询时,我们将必须基于集群和appid获取流上下文信息。
  3. flowrunid-如果指定,则仅返回属于该流运行ID的实体。该查询参数必须与userid和flowname查询参数一起指定,否则将被忽略。如果未指定userid,flowname和flowrunid,则在执行查询时,我们将必须基于集群和appid获取流上下文信息。
  4. limit-如果指定,则定义要返回的实体数。限制的最大可能值为Long的最大值。如果未指定或值小于0,则限制将被视为100。
  5. createdtimestart-如果指定,则仅返回在此时间戳之后创建的实体。
  6. createdtimeend-如果指定,则仅返回在此时间戳之前创建的实体。
  7. relatedto-如果指定,则匹配的实体必须与与实体类型相关联的给定实体相关或不相关。relatedto表示为以下形式的表达式:
    “(<< entitytype>:<entityid>:<entityid> ...,<entitytype>:<entityid>:<entityid> ...)<op>!(<entitytype>:<entityid> :<entityid> ...,<entitytype>:<entityid>:<entityid> ...)”。
    如果relatedto表达式具有实体类型-括弧内在“!”前指定的实体ID关系,这意味着将不返回在relateds字段中具有这些关系的实体。对于不带“!”的表达式或子表达式,将返回在relateds字段中具有指定关系的所有实体。“ op”是逻辑运算符,可以是AND或OR。实体类型后可以跟任意数量的实体ID。而且我们可以结合任意数量的AND和OR来创建复杂的表达式。括号可用于将表达式组合在一起。
    例如:relatedto可以是“((((type1:id1:id2:id3,type3:id9)AND!(type2:id7:id8))OR(type1:id4))”。
    请注意,URL不安全字符(例如空格)必须正确编码。
  8. isrelatedto-如果指定,则匹配的实体必须与与实体类型相关联的给定实体相关或不相关。isrelatedto以与relatedto相同的形式表示。
  9. infofilters-如果指定,则匹配的实体必须与给定的info键完全匹配,并且必须等于或不等于给定值。info键是一个字符串,但value可以是任何对象。信息过滤器表示为以下形式的表达式:
    “(<< 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-如果指定,则匹配的实体必须与给定度量完全匹配,并满足与度量值的指定关系。指标ID必须是字符串,并且指标值必须是整数值。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 gt 40))OR((metric1 lt 20)))”。
    从本质上讲,这是一个等于“((metric1 == 50 AND metric2> 40)或(metric1 <20)””的表达式。
    请注意,URL等不安全字符(例如空格)必须进行适当的编码。
  12. eventfilters-如果指定,则匹配实体必须包含或不包含给定事件,具体取决于表达式。eventfilters表示为以下形式的表达式:
    “(<< eventid>,<eventid>)<op>!(<eventid>,<eventid>,<eventid>)”。
    这里, ”!” 表示括弧中以“!”开头的事件均以逗号分隔 必须存在才能匹配。如果是“!” 如果未指定,则括号中的指定事件必须存在。op是逻辑运算符,可以为AND或OR。我们可以结合任意数量的AND和OR来创建复杂的表达式。括号可用于将表达式组合在一起。
    例如:事件过滤器可以是“((((event1,event2)AND!(event4))OR(event3,event7,event5))”。
    请注意,URL不安全字符(例如空格)必须正确编码。
  13. metricstoretrieve-如果指定,则定义要检索的指标或不检索并回发的指标。metricstoretrieve可以是以下形式的表达式:
    (<metricprefix>,<metricprefix>,<metricprefix>,<metricprefix>…)。
    这指定了以逗号分隔的度量ID前缀列表。仅会检索与任何前缀匹配的指标。括号是可选的,用于简单表达。或者,表达式可以采用以下形式:
    !(<metricprefix>,<metricprefix>,<metricprefix>,<metricprefix>…)
    这指定了以逗号分隔的度量ID前缀列表。仅检索不匹配任何前缀的指标。
    如果指定了metricstoretrieve,是否在字段查询参数中指定。请注意,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. 字段 -指定要检索的字段。字段的可能值可以是EVENTSINFOCONFIGSMETRICSRELATES_TOIS_RELATED_TOALL。如果指定了ALL,则将检索所有字段。可以将多个字段指定为以逗号分隔的列表。如果未指定字段,则将返回信息字段中的实体ID,实体类型,createdtime和UID。
  16. metricslimit-如果指定,则定义要返回的度量标准数量。仅当指定包含METRICS / ALL或metricstoretrieve的字段时才考虑。否则忽略。metricslimit的最大可能值可以是Integer的最大值。如果未指定或值小于1,并且必须检索指标,则metricslimit将被视为1,即将返回指标的最新单个值。
  17. metricstimestart-如果指定,则在此时间戳记之后返回实体的度量标准。
  18. metricstimeend-如果指定,则返回此时间戳之前的实体的度量。
  19. fromid-如果指定,则从给定的fromid检索下一组通用实体。检索到的实体集包括指定的fromid。fromid应该从与先前发送的流实体响应中的FROM_ID信息键关联的值中获取。

JSON响应示例:

[
  {
    “指标”:[],
    “事件”:[],
    “ type”:“ YARN_APPLICATION_ATTEMPT”,
    “ id”:“ appattempt_1465246237936_0001_000001”,
    “ createdtime”:1465246358873,
    “与...相关”:{},
    “ configs”:{},
    “信息”:{
      “ UID”:“纱线群集!application_1465246237936_0001!YARN_APPLICATION_ATTEMPT!appattempt_1465246237936_0001_000001”
      “ FROM_ID”:“纱线群集!sjlee!ds日期!1460419580171!application_1465246237936_0001!YARN_APPLICATION_ATTEMPT!0!appattempt_1465246237936_0001_000001”
    },
    “涉及到”: { }
  },
  {
    “指标”:[],
    “事件”:[],
    “ type”:“ YARN_APPLICATION_ATTEMPT”,
    “ id”:“ appattempt_1465246237936_0001_000002”,
    “ createdtime”:1465246359045,
    “与...相关”:{},
    “ configs”:{},
    “信息”:{
      “ UID”:“纱线群集!application_1465246237936_0001!YARN_APPLICATION_ATTEMPT!appattempt_1465246237936_0001_000002”
      “ FROM_ID”:“纱线群集!sjlee!ds日期!1460419580171!application_1465246237936_0001!YARN_APPLICATION_ATTEMPT!0!appattempt_1465246237936_0001_000002”
    },
    “涉及到”: { }
  }
]

响应码

  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 /时间轴/集群/ {集群名称} / users / {userid} / entities / {entitytype}

要么

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

支持的查询参数:

  1. limit-如果指定,则定义要返回的实体数。限制的最大可能值为Long的最大值。如果未指定或值小于0,则限制将被视为100。
  2. createdtimestart-如果指定,则仅返回在此时间戳之后创建的实体。
  3. createdtimeend-如果指定,则仅返回在此时间戳之前创建的实体。
  4. relatedto-如果指定,则匹配的实体必须与与实体类型相关联的给定实体相关或不相关。relatedto表示为以下形式的表达式:
    “(<< entitytype>:<entityid>:<entityid> ...,<entitytype>:<entityid>:<entityid> ...)<op>!(<entitytype>:<entityid> :<entityid> ...,<entitytype>:<entityid>:<entityid> ...)”。
    如果relatedto表达式具有实体类型-括弧内在“!”前指定的实体ID关系,这意味着将不返回在relateds字段中具有这些关系的实体。对于不带“!”的表达式或子表达式,将返回在relateds字段中具有指定关系的所有实体。“ op”是逻辑运算符,可以是AND或OR。实体类型后可以跟任意数量的实体ID。而且我们可以结合任意数量的AND和OR来创建复杂的表达式。括号可用于将表达式组合在一起。
    例如:relatedto可以是“((((type1:id1:id2:id3,type3:id9)AND!(type2:id7:id8))OR(type1:id4))”。
    请注意,URL不安全字符(例如空格)必须正确编码。
  5. isrelatedto-如果指定,则匹配的实体必须与与实体类型相关联的给定实体相关或不相关。isrelatedto以与relatedto相同的形式表示。
  6. infofilters-如果指定,则匹配的实体必须与给定的info键完全匹配,并且必须等于或不等于给定值。info键是一个字符串,但value可以是任何对象。信息过滤器表示为以下形式的表达式:
    “(<< 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-如果指定,则匹配的实体必须与给定度量完全匹配,并满足与度量值的指定关系。指标ID必须是字符串,并且指标值必须是整数值。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 gt 40))OR((metric1 lt 20)))”。
    从本质上讲,这是一个等于“((metric1 == 50 AND metric2> 40)或(metric1 <20)””的表达式。
    请注意,URL等不安全字符(例如空格)必须进行适当的编码。
  9. eventfilters-如果指定,则匹配实体必须包含或不包含给定事件,具体取决于表达式。eventfilters表示为以下形式的表达式:
    “(<< eventid>,<eventid>)<op>!(<eventid>,<eventid>,<eventid>)”。
    这里, ”!” 表示括弧中以“!”开头的事件均以逗号分隔 必须存在才能匹配。如果是“!” 如果未指定,则括号中的指定事件必须存在。op是逻辑运算符,可以为AND或OR。我们可以结合任意数量的AND和OR来创建复杂的表达式。括号可用于将表达式组合在一起。
    例如:事件过滤器可以是“((((event1,event2)AND!(event4))OR(event3,event7,event5))”。
    请注意,URL不安全字符(例如空格)必须正确编码。
  10. metricstoretrieve-如果指定,则定义要检索的指标或不检索并回发的指标。metricstoretrieve可以是以下形式的表达式:
    (<metricprefix>,<metricprefix>,<metricprefix>,<metricprefix>…)。
    这指定了以逗号分隔的度量ID前缀列表。仅会检索与任何前缀匹配的指标。括号是可选的,用于简单表达。或者,表达式可以采用以下形式:
    !(<metricprefix>,<metricprefix>,<metricprefix>,<metricprefix>…)
    这指定了以逗号分隔的度量ID前缀列表。仅检索不匹配任何前缀的指标。
    如果指定了metricstoretrieve,是否在字段查询参数中指定。请注意,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. 字段 -指定要检索的字段。字段的可能值可以是EVENTSINFOCONFIGSMETRICSRELATES_TOIS_RELATED_TOALL。如果指定了ALL,则将检索所有字段。可以将多个字段指定为以逗号分隔的列表。如果未指定字段,则将返回信息字段中的实体ID,实体类型,createdtime和UID。
  13. metricslimit-如果指定,则定义要返回的度量标准数量。仅当指定包含METRICS / ALL或metricstoretrieve的字段时才考虑。否则忽略。metricslimit的最大可能值可以是Integer的最大值。如果未指定或值小于1,并且必须检索指标,则metricslimit将被视为1,即将返回指标的最新单个值。
  14. metricstimestart-如果指定,则在此时间戳记之后返回实体的度量标准。
  15. metricstimeend-如果指定,则返回此时间戳之前的实体的度量。
  16. fromid-如果指定,则从给定的fromid检索下一组通用实体。检索到的实体集包括指定的fromid。fromid应该从与先前发送的流实体响应中的FROM_ID信息键关联的值中获取。

JSON响应示例:

[
  {
    “指标”:[],
    “事件”:[],
    “ type”:“ TEZ_DAG_ID”,
    “ id”:“ dag_1465246237936_0001_000001”,
    “ createdtime”:1465246358873,
    “与...相关”:{},
    “ configs”:{},
    “信息”:{
      “ UID”:“纱簇!sjlee!TEZ_DAG_ID!0!dag_1465246237936_0001_000001”
      “ FROM_ID”:“ sjlee!纱簇!TEZ_DAG_ID!0!dag_1465246237936_0001_000001”
    },
    “涉及到”: { }
  },
  {
    “指标”:[],
    “事件”:[],
    “ type”:“ TEZ_DAG_ID”,
    “ id”:“ dag_1465246237936_0001_000002”,
    “ createdtime”:1465246359045,
    “与...相关”:{},
    “ configs”:{},
    “信息”:{
      “ UID”:“纱线群集!sjlee!TEZ_DAG_ID!0!dag_1465246237936_0001_000002!userX”
      “ FROM_ID”:“ sjlee!纱线群集!TEZ_DAG_ID!0!dag_1465246237936_0001_000002!userX”
    },
    “涉及到”: { }
  }
]

响应码

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

在应用范围内查询通用实体

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

HTTP请求:

GET / ws / v2 /时间轴/集群/ {集群名称} / apps / {app id} / entities / {entity type} / {entity id}

要么

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

支持的查询参数:

  1. userid-如果指定,则实体必须属于该用户。该查询参数必须与flowname和flowrunid查询参数一起指定,否则将被忽略。如果未指定userid,flowname和flowrunid,则在执行查询时,我们将必须基于集群和appid获取流上下文信息。
  2. flowname-如果指定,则实体必须属于该流名称。此查询参数必须与userid和flowrunid查询参数一起指定,否则将被忽略。如果未指定userid,flowname和flowrunid,则在执行查询时,我们将必须基于集群和appid获取流上下文信息。
  3. flowrunid-如果指定,则实体必须属于该流运行ID。该查询参数必须与userid和flowname查询参数一起指定,否则将被忽略。如果未指定userid,flowname和flowrunid,则在执行查询时,我们将必须基于集群和appid获取流上下文信息。
  4. metricstoretrieve-如果指定,则定义要检索的指标或不检索并回发的指标。metricstoretrieve可以是以下形式的表达式:
    (<metricprefix>,<metricprefix>,<metricprefix>,<metricprefix>…)。
    这指定了以逗号分隔的度量ID前缀列表。仅会检索与任何前缀匹配的指标。括号是可选的,用于简单表达。或者,表达式可以采用以下形式:
    !(<metricprefix>,<metricprefix>,<metricprefix>,<metricprefix>…)
    这指定了以逗号分隔的度量ID前缀列表。仅检索不匹配任何前缀的指标。
    如果指定了metricstoretrieve,是否在字段查询参数中指定。请注意,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. 字段 -指定要检索的字段。字段的可能值可以是EVENTSINFOCONFIGSMETRICSRELATES_TOIS_RELATED_TOALL。如果指定了ALL,则将检索所有字段。可以将多个字段指定为以逗号分隔的列表。如果未指定字段,则将返回信息字段中的实体ID,实体类型,createdtime和UID。
  7. metricslimit-如果指定,则定义要返回的度量标准数量。仅当指定包含METRICS / ALL或metricstoretrieve的字段时才考虑。否则忽略。metricslimit的最大可能值可以是Integer的最大值。如果未指定或值小于1,并且必须检索指标,则metricslimit将被视为1,即将返回指标的最新单个值。
  8. metricstimestart-如果指定,则在此时间戳记之后返回实体的度量标准。
  9. metricstimeend-如果指定,则返回此时间戳之前的实体的度量。
  10. entityidprefix定义要获取的实体的ID前缀。如果指定,则实体检索将更快。

JSON响应示例:

{
  “指标”:[],
  “事件”:[],
  “ type”:“ YARN_APPLICATION_ATTEMPT”,
  “ id”:“ appattempt_1465246237936_0001_000001”,
  “ createdtime”:1465246358873,
  “与...相关”:{},
  “ configs”:{},
  “信息”:{
    “ UID”:“纱线群集!application_1465246237936_0001!YARN_APPLICATION_ATTEMPT!0!appattempt_1465246237936_0001_000001”
    “ FROM_ID”:“纱线群集!sjlee!ds日期!1460419580171!application_1465246237936_0001!YARN_APPLICATION_ATTEMPT!0!appattempt_1465246237936_0001_000001”
  },
  “涉及到”: { }
}

响应码

  1. 如果成功,则返回HTTP 200(确定)响应。
  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 /时间线/集群/ {集群名称} /用户/ {用户ID} /实体/ {实体类型} / {实体ID}

要么

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

支持的查询参数:

  1. metricstoretrieve-如果指定,则定义要检索的指标或不检索并回发的指标。metricstoretrieve可以是以下形式的表达式:
    (<metricprefix>,<metricprefix>,<metricprefix>,<metricprefix>…)。
    这指定了以逗号分隔的度量ID前缀列表。仅会检索与任何前缀匹配的指标。括号是可选的,用于简单表达。或者,表达式可以采用以下形式:
    !(<metricprefix>,<metricprefix>,<metricprefix>,<metricprefix>…)
    这指定了以逗号分隔的度量ID前缀列表。仅检索不匹配任何前缀的指标。
    如果指定了metricstoretrieve,是否在字段查询参数中指定。请注意,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. 字段 -指定要检索的字段。字段的可能值可以是EVENTSINFOCONFIGSMETRICSRELATES_TOIS_RELATED_TOALL。如果指定了ALL,则将检索所有字段。可以将多个字段指定为以逗号分隔的列表。如果未指定字段,则将返回信息字段中的实体ID,实体类型,createdtime和UID。
  4. metricslimit-如果指定,则定义要返回的度量标准数量。仅当指定包含METRICS / ALL或metricstoretrieve的字段时才考虑。否则忽略。metricslimit的最大可能值可以是Integer的最大值。如果未指定或值小于1,并且必须检索指标,则metricslimit将被视为1,即将返回指标的最新单个值。
  5. metricstimestart-如果指定,则在此时间戳记之后返回实体的度量标准。
  6. metricstimeend-如果指定,则返回此时间戳之前的实体的度量。
  7. fromid-如果指定,则从给定的fromid检索下一组通用实体。检索到的实体集包括指定的fromid。fromid应该从与先前发送的流实体响应中的FROM_ID信息键关联的值中获取。

JSON响应示例:

[
  {
    “指标”:[],
    “事件”:[],
    “ type”:“ TEZ_DAG_ID”,
    “ id”:“ dag_1465246237936_0001_000001”,
    “ createdtime”:1465246358873,
    “与...相关”:{},
    “ configs”:{},
    “信息”:{
      “ UID”:“纱线群集!sjlee!TEZ_DAG_ID!0!dag_1465246237936_0001_000001!userX”
      “ FROM_ID”:“ sjlee!纱线群集!TEZ_DAG_ID!0!dag_1465246237936_0001_000001!userX”
    },
    “涉及到”: { }
  }
]

响应码

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

查询通用实体类型

使用此API,您可以查询给定应用ID的一组可用实体类型。如果使用不带群集名称的REST端点,则采用由yarn-site.xml中的配置yarn.resourcemanager.cluster-id指定的群集。如果未指定作为可选查询参数的用户ID,流名称和流运行ID,则会根据应用ID和集群ID从底层存储实现中存储的流上下文信息中查询它们。

HTTP请求:

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

要么

GET / ws / v2 /时间轴/集群/ {clusterid} / apps / {appid} / entity-types

支持的查询参数:

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

JSON响应示例:

{
  YARN_APPLICATION_ATTEMPT,
  YARN_CONTAINER,
  MAPREDUCE_JOB,
  MAPREDUCE_TASK,
  MAPREDUCE_TASK_ATTEMPT
}

响应码

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

历史应用程序的聚合日志服务

TimelineService v.2支持提供历史应用程序的聚合日志。要启用此功能,请在yarn-site.xml中将“ yarn.log.server.web-service.url”配置为“ $ {yarn .timeline-service.hostname}:8188 / ws / v2 / applicationlog”