YARN时间轴服务v.2是继v.1和v.1.5之后的Timeline Server的下一个主要迭代。创建V.2是为了应对v.1的两个主要挑战。
YARN时间轴服务v.2使用一组收集器(写入器)将数据写入后端存储。收集器与专用的应用程序主机一起分布并位于同一位置。属于该应用程序的所有数据都将发送到应用程序级时间线收集器,资源管理器时间线收集器除外。
对于给定的应用程序,应用程序主服务器可以将应用程序的数据写入位于同一位置的时间轴收集器(在此版本中是NM辅助服务)。此外,其他正在运行应用程序容器的节点的节点管理器也将数据写入运行应用程序主机的节点上的时间线收集器。
资源管理器还维护自己的时间轴收集器。它仅发出YARN通用生命周期事件,以保持其合理的写入量。
时间线阅读器是与时间线收集器分开的单独的守护程序,它们专用于通过REST API提供查询。
下图从高层次说明了该设计。

以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时,可以预期不会对任何其他现有功能产生功能或性能影响。
路线图包括
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。如果不匹配,将从响应中删除那些实体。 | 
要为时间轴服务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。
为Timeline Service v.2准备存储需要完成几个步骤:
步骤1)设定HBase丛集
步骤2)启用协处理器
步骤3)为时间轴服务v.2创建架构
每个步骤将在下面更详细地说明。
第一部分是设置或选择一个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)
如果您打算为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集群后,请执行以下步骤。
在此版本中,协处理器是动态加载的(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>
最后,运行模式创建器工具来创建必要的表:
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的基本配置:
<属性> <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中设置的版本
如果您当前正在运行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方法有两个变体:putEntities和putEntitiesAsync。前者是一项阻塞操作,必须用于写入更多关键数据(例如生命周期事件)。后者是非阻塞操作。请注意,两个都没有返回值。
创建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对象具有以下字段来保存时间轴数据:
请注意,发布时间轴指标时,可以选择如何通过TimelineMetric#setRealtimeAggregationOp()方法聚合每个指标。此处的“聚合”一词表示对一组实体应用TimelineMetricOperation中的一个。时间轴服务v2提供了内置的应用程序级别聚合,这意味着从一个YARN应用程序中的不同时间轴实体聚合度量。目前,TimelineMetricOperation支持两种操作:
缺省情况下,NOP操作表示不执行任何实时聚合操作。
为了利用Timeline Service v.2提供的流支持,应用程序框架必须尽可能地设置“流上下文”。流上下文包括以下内容:
如果未指定流上下文,则为这些属性提供默认值:
您可以通过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查询中使用流名称和流版本之前将其转换为小写。
目前仅通过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中取出。如果没有一个流与谓词匹配,则将返回一个空列表。
[
  {
    “指标”:[],
    “事件”:[],
    “ 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”
    },
    “与...相关”:{},
    “涉及到”: {}
  }
]
使用Query Flow Runs API,您可以进一步细化以获取给定流的运行(特定实例)。这将返回属于给定流的最新运行。如果使用不带群集名称REST端点,集群指定由配置yarn.resourcemanager.cluster-ID在纱线-site.xml中取出。如果没有任何一个流程与谓词匹配,则将返回一个空列表。
GET / ws / v2 /时间轴/集群/ {集群名称} /用户/ {用户名称} /流/ {流名称} /运行/
要么
GET / ws / v2 /时间轴/用户/ {用户名} /流/ {流名} /运行/
[
  {
    “指标”:[],
    “事件”:[],
    “ 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”
    },
    “与...相关”:{},
    “涉及到”: {}
  }
]
使用此API,您可以查询由集群,用户,流名称和运行ID标识的特定流运行。如果使用不带群集名称REST端点,集群指定由配置yarn.resourcemanager.cluster-ID在纱线-site.xml中取出。查询单个流运行时,默认情况下返回指标。
GET / ws / v2 /时间轴/集群/ {集群名称} /用户/ {用户名称} /流/ {流名称} /运行/ {运行ID}
要么
GET / ws / v2 /时间轴/用户/ {用户名} /流/ {流名} /运行次数/ {运行ID}
{
  “指标”:[
    {
      “ 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
  },
  “涉及到”: {}
}
使用此API,您可以查询属于特定流的所有YARN应用程序。如果使用不带群集名称REST端点,集群指定由配置yarn.resourcemanager.cluster-ID在纱线-site.xml中取出。如果匹配的应用程序数量超过限制,则将返回不超过限制的最新应用程序。如果没有一个应用程序与谓词匹配,则将返回一个空列表。
GET / ws / v2 /时间轴/集群/ {集群名称} /用户/ {用户名称} /流/ {流名称} /应用
要么
GET / ws / v2 /时间轴/用户/ {用户名} /流/ {流名} /应用
[
  {
    “指标”:[],
    “事件”:[],
    “ 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”,
    },
    “涉及到”: { }
  }
]
使用此API,您可以查询特定流程运行中的所有YARN应用程序。如果使用不带群集名称REST端点,集群指定由配置yarn.resourcemanager.cluster-ID在纱线-site.xml中取出。如果匹配的应用程序数量超过限制,则将返回不超过限制的最新应用程序。如果没有一个应用程序与谓词匹配,则将返回一个空列表。
GET / ws / v2 /时间轴/集群/ {集群名称} /用户/ {用户名称} /流/ {流名称} /运行/ {运行ID} /应用
要么
GET / ws / v2 /时间轴/用户/ {用户名} /流/ {流名} /运行/ {运行ID} /应用/
[
  {
    “指标”:[],
    “事件”:[],
    “ 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”:{},
    “与...相关”:{},
    “涉及到”: {}
  }
]
使用此API,您可以查询由群集和应用程序ID标识的单个YARN应用程序。如果使用不带群集名称REST端点,集群指定由配置yarn.resourcemanager.cluster-ID在纱线-site.xml中取出。流上下文信息(即用户,流名称和运行ID)不是强制性的,但如果在查询参数中指定,则可能无需执行其他操作即可基于集群和应用程序ID提取流上下文信息。
GET / ws / v2 /时间轴/集群/ {集群名称} / apps / {app id}
要么
GET / ws / v2 / timeline / apps / {app id}
使用此API,您可以查询由集群ID,应用程序ID和每个框架实体类型标识的通用实体。如果使用不带群集名称REST端点,集群指定由配置yarn.resourcemanager.cluster-ID在纱线-site.xml中被采取。流上下文信息(即用户,流名称和运行ID)不是强制性的,但如果在查询参数中指定,则可能无需执行其他操作即可基于集群和应用程序ID提取流上下文信息。如果匹配实体的数量大于限制,则将返回不超过限制的最新实体。该端点可用于查询容器,应用程序尝试或客户端放入后端的任何其他通用实体。例如,我们可以通过将实体类型指定为YARN_CONTAINER来查询容器,并通过将实体类型指定为YARN_APPLICATION_ATTEMPT来尝试应用程序。如果没有一个实体与谓词匹配,则将返回一个空列表。
GET / ws / v2 /时间轴/集群/ {集群名称} / apps / {app id} / entities / {entity type}
要么
GET / ws / v2 / timeline / apps / {app id} / entities / {entity type}
[
  {
    “指标”:[],
    “事件”:[],
    “ 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”
    },
    “涉及到”: { }
  }
]
使用此API,您可以按集群ID,doAsUser和实体类型标识的每个用户查询通用实体。如果使用不带群集名称REST端点,集群指定由配置yarn.resourcemanager.cluster-ID在纱线-site.xml中取出。如果匹配实体的数量大于限制,则将返回不超过限制的最新实体。该端点可用于查询客户端放入后端的通用实体。例如,我们可以通过将实体类型指定为TEZ_DAG_ID来查询用户实体。如果没有一个实体与谓词匹配,则将返回一个空列表。注意 :到目前为止,我们只能查询使用doAsUser发布的实体,这些实体与应用程序所有者不同。
GET / ws / v2 /时间轴/集群/ {集群名称} / users / {userid} / entities / {entitytype}
要么
GET / ws / v2 / timeline / users / {userid} / entities / {entitytype}
[
  {
    “指标”:[],
    “事件”:[],
    “ 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”
    },
    “涉及到”: { }
  }
]
使用此API,您可以查询由集群ID,应用程序ID,每框架实体类型和实体ID标识的特定通用实体。如果使用不带群集名称REST端点,集群指定由配置yarn.resourcemanager.cluster-ID在纱线-site.xml中取出。流上下文信息(即用户,流名称和运行ID)不是强制性的,但如果在查询参数中指定,则可能无需执行其他操作即可基于集群和应用程序ID提取流上下文信息。该端点可用于查询单个容器,应用程序尝试或客户端放入后端的任何其他通用实体。例如,我们可以通过将实体类型指定为YARN_CONTAINER来查询特定的YARN容器并提供实体ID作为容器ID。类似地,可以通过将实体类型指定为YARN_APPLICATION_ATTEMPT并将实体ID作为应用程序尝试ID 来查询应用程序尝试。
GET / ws / v2 /时间轴/集群/ {集群名称} / apps / {app id} / entities / {entity type} / {entity id}
要么
GET / ws / v2 / timeline / apps / {app id} / entities / {entity type} / {entity id}
{
  “指标”:[],
  “事件”:[],
  “ 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”
  },
  “涉及到”: { }
}
使用此API,您可以查询每个用户的通用实体,这些用户由集群ID,doAsUser以及实体类型和实体ID标识。如果使用不带群集名称REST端点,集群指定由配置yarn.resourcemanager.cluster-ID在纱线-site.xml中取出。如果匹配实体的数量大于限制,则将返回不超过限制的最新实体。该端点可用于查询客户端放入后端的通用实体。例如,我们可以通过将实体类型指定为TEZ_DAG_ID来查询用户实体。如果没有一个实体与谓词匹配,则将返回一个空列表。注意 :到目前为止,我们只能查询使用doAsUser发布的实体,这些实体与应用程序所有者不同。
GET / ws / v2 /时间线/集群/ {集群名称} /用户/ {用户ID} /实体/ {实体类型} / {实体ID}
要么
GET / ws / v2 / timeline / users / {userid} / entities / {entitytype} / {entityid}
[
  {
    “指标”:[],
    “事件”:[],
    “ 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”
    },
    “涉及到”: { }
  }
]
使用此API,您可以查询给定应用ID的一组可用实体类型。如果使用不带群集名称的REST端点,则采用由yarn-site.xml中的配置yarn.resourcemanager.cluster-id指定的群集。如果未指定作为可选查询参数的用户ID,流名称和流运行ID,则会根据应用ID和集群ID从底层存储实现中存储的流上下文信息中查询它们。
GET / ws / v2 / timeline / apps / {appid} / entity-types
要么
GET / ws / v2 /时间轴/集群/ {clusterid} / apps / {appid} / entity-types