Hadoop 文档

General

Common

HDFS

MapReduce

MapReduce REST APIs

YARN

YARN REST APIs

YARN Service

Submarine

Hadoop Compatible File Systems

Auth

Tools

Reference

Configuration

总览

介绍

通过时间线服务器在YARN中解决了以通用方式存储和检索应用程序的当前和历史信息的问题。它有两个职责:

保留特定于应用程序的信息

完全特定于应用程序或框架的信息的收集和检索。例如,Hadoop MapReduce框架可以包含一些信息,例如地图任务数量,减少任务,计数器等。应用程序开发人员可以通过TimelineClient在Application Master和/或应用程序的容器中将特定信息发布到Timeline服务器。

然后可通过REST API查询此信息,以通过特定于应用程序/框架的UI进行呈现。

保留有关已完成应用程序的通用信息

以前,Application History Server仅对MapReduce作业提供支持。随着时间轴服务器的引入,应用程序历史记录服务器仅成为时间轴服务器的一种用途。

通用信息包括应用程序级别的数据,例如

  • 队列名称,
  • ApplicationSubmissionContext中设置的用户信息等,
  • 为应用程序运行的应用程序尝试列表
  • 有关每个尝试应用程序的信息
  • 在每个尝试应用程序下运行的容器列表
  • 有关每个容器的信息。

常规数据由YARN资源管理器发布到时间线存储中,并由其Web UI用来显示有关已完成的应用程序的信息。

现状和未来计划

当前状态

  1. 时间轴服务器的核心功能已完成。
  2. 它可以在安全和非安全群集中使用。
  3. 通用历史记录服务建立在时间轴存储上。
  4. 历史记录可以存储在内存中,也可以存储在leveldb数据库存储中。后者可确保在Timeline Server重新启动后保留历史记录。
  5. 不支持在YARN中安装框架特定的UI的功能。
  6. 特定于应用程序的信息仅可通过使用JSON类型内容的RESTful API获得。
  7. “ Timeline Server v1” REST API已被声明为REST API之一,其兼容性将在以后的版本中维护。
  8. 时间轴服务器的单服务器实现限制了服务的可伸缩性。它还会阻止该服务成为YARN基础结构的高可用性组件。

未来的计划

  1. 未来的版本将引入可扩展且可靠的下一代时间轴服务“时间轴服务v2”
  2. 使用Timeline Server v1 REST API的应用程序可能无法使用此服务的扩展功能。这包括扩展的数据结构,以及客户端在Timeline Server实例之间进行故障转移的能力。

时间轴结构

时间轴结构

时间轴域

时间轴域为时间轴服务器提供了一个命名空间,允许用户托管多个实体,将它们与其他用户和应用程序隔离。时间轴服务器安全性是在此级别定义的。

“域”主要存储所有者信息,读写ACL信息,创建和修改的时间戳信息。每个域由一个ID标识,该ID在YARN群集中的所有用户之间必须是唯一的。

时间轴实体

时间轴实体包含概念实体及其相关事件的元信息。

该实体可以是应用程序,应用程序尝试,容器或任何用户定义的对象。

它包含主要过滤器,这些过滤器将用于索引时间轴存储中的实体。因此,用户/应用程序应仔细选择他们想要存储的信息作为主要过滤器。

其余数据可以存储为未索引信息。每个Entity由EntityIdEntityType唯一标识。

时间轴事件

时间线事件描述了与应用程序的特定时间线实体相关的事件。

用户可以自由定义事件的含义-例如启动应用程序,分配容器,操作失败或其他与用户和集群操作员相关的信息。

部署方式

构型

基本配置

配置属性 描述
yarn.timeline-service.enabled 在服务器端,它指示是否启用了时间轴服务。并且在客户端,用户可以启用它以指示客户端是否要使用时间轴服务。如果在客户端同时启用了它和安全性,那么yarn客户端会尝试获取时间轴服务器的委托令牌。默认为false
yarn.resourcemanager.system-metrics-publisher.enabled 该设置控制YARN系统度量标准是否由RM发布在时间轴服务器上。默认为false
yarn.timeline-service.generic-application-history.enabled 向客户端指示是否从时间轴历史记录服务查询通用应用程序数据。如果未启用,则仅从资源管理器查询应用程序数据。默认为false

时间线存储和状态存储配置

配置属性 描述
yarn.timeline-service.store-class 时间线商店的商店类名称。默认为org.apache.hadoop.yarn.server.timeline.LeveldbTimelineStore
yarn.timeline-service.leveldb-timeline-store.path leveldb时间轴存储的存储文件名。默认为$ {hadoop.tmp.dir} / yarn / timeline
yarn.timeline-service.leveldb-timeline-store.ttl-interval-ms 在leveldb时间线存储的删除周期之间等待的时间长度(以毫秒为单位)。默认为300000
yarn.timeline-service.leveldb-timeline-store.read-cache-size leveldb时间轴存储的未压缩块的读取缓存大小,以字节为单位。默认为104857600
yarn.timeline-service.leveldb-timeline-store.start-time-read-cache-size leveldb时间线存储区中最近读取的实体开始时间的缓存大小(以实体数为单位)。默认为10000
yarn.timeline-service.leveldb-timeline-store.start-time-write-cache-size leveldb时间轴存储的最近写入的实体开始时间的缓存大小(以实体数为单位)。默认为10000
yarn.timeline-service.recovery.enabled 默认为false
yarn.timeline-service.state-store-class 时间轴状态存储的存储类名称。默认为org.apache.hadoop.yarn.server.timeline.recovery.LeveldbTimelineStateStore
yarn.timeline-service.leveldb-state-store.path leveldb时间轴状态存储的存储文件名。

Web和RPC配置

配置属性 描述
yarn.timeline-service.hostname 时间轴服务Web应用程序的主机名。默认为0.0.0.0
yarn.timeline-service.address 时间轴服务器启动RPC服务器的地址。默认为$ {yarn.timeline-service.hostname}:10200
yarn.timeline-service.webapp.address 时间轴服务Web应用程序的http地址。默认为$ {yarn.timeline-service.hostname}:8188
yarn.timeline-service.webapp.https.address 时间轴服务Web应用程序的https地址。默认为$ {yarn.timeline-service.hostname}:8190
yarn.timeline-service.bind-host 服务器将绑定到的实际地址。如果设置了此可选地址,则RPC和webapp服务器将分别绑定到该地址和yarn.timeline-service.addressyarn.timeline-service.webapp.address中指定的端口。通过将其设置为0.0.0.0,这对于使服务在所有接口上侦听最为有用。
yarn.timeline-service.http-cross-origin.enabled 对需要跨域Web响应标头的Web服务启用跨域支持(CORS)。例如,javascript向时间轴服务器发出Web服务请求。默认为false
yarn.timeline-service.http-cross-origin.allowed-origins 以逗号分隔的允许的来源列表。以regex:开头的值被解释为正则表达式。包含通配符(*)的值也是可能的,这里会生成一个正则表达式,不鼓励使用,并且仅支持向后兼容。默认为*
yarn.timeline-service.http-cross-origin.allowed-methods 需要跨域(CORS)支持的Web服务允许使用的方法的逗号分隔列表。默认为GET,POST,HEAD
yarn.timeline-service.http-cross-origin.allowed-headers 需要跨域(CORS)支持的Web服务允许使用的标题的逗号分隔列表。默认为X-Requested-With,Content-Type,Accept,Origin
yarn.timeline-service.http-cross-origin.max-age 可以为需要跨域(CORS)支持的Web服务缓存预处理请求的秒数。默认为1800

请注意,HTTP和HTTPS绑定之间的选择是在TimelineClient中基于YARN范围的配置选项yarn.http.policy的值进行的;如果此策略为HTTPS_ONLY,则将选择HTTPS终结

服务器端高级配置

配置属性 描述
yarn.timeline-service.ttl-enable 启用删除时间轴存储中的老化数据。默认为true
yarn.timeline-service.ttl-ms 时间轴存储数据的生存时间(以毫秒为单位)。默认为604800000(7天)。
yarn.timeline-service.handler-thread-count 处理程序线程计数以服务于客户端RPC请求。默认为10
yarn.timeline-service.client.max-retries 尝试将数据发布到时间轴服务的最大重试次数。默认为30
yarn.timeline-service.client.retry-interval-ms 重试时间轴服务客户端之间的间隔(以毫秒为单位)。默认为1000
yarn.timeline-service.generic-application-history.max-applications 可以使用REST API或应用程序历史记录协议获取最大数量的应用程序,并显示在时间轴服务器Web ui中。默认为10000

UI主机配置

时间轴服务可以启用多个UI(如果已启用)。该服务可以支持目录中托管的静态网站或捆绑的war文件。然后,Web UI托管在时间轴服务HTTP端口上配置路径下。

配置属性 描述
yarn.timeline-service.ui名称 用逗号分隔的将要托管的UI列表。默认为none
yarn.timeline-service.ui-disk-path。$ name 对于每个ui名称,应在磁盘路径上指定目录服务静态内容或Web存档(war文件)的位置。
yarn.timeline-service.ui-web-path。$ name 对于每个ui名称,应该相对于时间轴服务器根目录指定Web路径。路径应以斜杠开头。

安全配置

可以通过将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.principal 时间轴服务器的Kerberos主体。
yarn.timeline-service.keytab 时间轴服务器的Kerberos密钥表。在Unix上默认为/etc/krb5.keytab
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.client.best-effort 如果无法获得委托令牌,则应将其视为应用程序故障(option = false),或者客户端应尝试在没有它的情况下继续发布信息(option = true)。默认值:false

启用时间轴服务和通用历史记录服务

以下是启动时间轴服务器的基本配置。

<属性>
  <description>向客户端指示是否启用了时间轴服务。
  如果启用,则最终用户使用的TimelineClient库将发布实体
  和事件发送到时间轴服务器。</ description>
  <name> yarn.timeline-service.enabled </ name>
  <value> true </ value>
</ property>

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

<属性>
  <description>向客户端指示是否查询通用应用程序
  时间轴历史服务是否提供数据。如果未启用,则应用
  仅从资源管理器查询数据。</ description>
  <name> yarn.timeline-service.generic-application-history.enabled </ name>
  <value> true </ value>
</ property>

运行时间轴服务器

假设所有上述配置均已正确设置,则管理员可以使用以下命令启动时间轴服务器/历史记录服务:

纱线时间线服务器

要将Timeline服务器/历史记录服务作为守护程序启动,命令是

$ HADOOP_YARN_HOME / sbin / yarn-daemon.sh启动时间轴服务器

通过命令行访问通用数据

用户可以通过下面的命令行访问应用程序的常规历史数据

$ yarn application -status <应用程序ID>
$ yarn applicationattempt -list <应用程序ID>
$ yarn applicationattempt -status <应用程序尝试ID>
$ yarn container -list <应用程序尝试ID>
$ yarn container -status <容器ID>

注意,相同的命令可用于获取有关正在运行的应用程序的相应信息。

发布特定于应用程序的数据

开发人员可以通过构造TimelineEntityTimelineEvent对象,然后通过TimelineClient API 将实体和事件发布到时间线服务器,来定义要为其应用程序记录的信息。

这是一个例子:

//创建并启动时间轴客户端
TimelineClient客户端= TimelineClient.createTimelineClient();
client.init(conf);
client.start();

尝试{
  TimelineDomain myDomain = new TimelineDomain();
  myDomain.setId(“ MyDomain”);
  //撰写其他域信息...。

  client.putDomain(myDomain);

  TimelineEntity myEntity =新的TimelineEntity();
  myEntity.setDomainId(myDomain.getId());
  myEntity.setEntityType(“ APPLICATION”);
  myEntity.setEntityId(“ MyApp1”);
  //撰写其他实体信息

  TimelinePutResponse响应= client.putEntities(entity);

  TimelineEvent事件=新的TimelineEvent();
  event.setEventType(“ APP_FINISHED”);
  event.setTimestamp(System.currentTimeMillis());
  event.addEventInfo(“退出状态”,“成功”);
  //撰写其他事件信息...。

  myEntity.addEvent(event);
  TimelinePutResponse响应= timelineClient.putEntities(entity);

} catch(IOException e){
  //处理异常
} catch(RuntimeException e){
  //在Hadoop 2.6中,如果尝试向Timeline Server提交信息的失败超过重试限制,
  //将引发RuntimeException。这可能会在将来的版本中发生变化
  //替换为IOException,该IOException是(或包装为)触发重试失败的IOException。
} catch(YarnException e){
  //处理异常
}最后{
  //停止时间轴客户端
  client.stop();
}
  1. 将数据发布到Timeline Server是同步操作。直到成功,呼叫才会返回。
  2. TimelineClient实现类是纱线的子类服务的API; 可以将其放在CompositeService下以简化其生命周期管理。
  3. putEntities()调用的结果是一个TimelinePutResponse对象。这包含时间轴服务器拒绝的那些时间轴实体的列表(希望为空),以及指示每个失败原因的错误代码。

在Hadoop 2.6和2.7中,错误代码为:

错误代码 描述
1个 没有开始时间
2 IOException
3 系统过滤器冲突(使用保留的过滤器密钥)
4 拒绝访问
5 没有网域
6 禁止关系

将来可能会定义其他错误代码。

注意:以下是更新实体时需要注意的几点。

  • 不应为现有实体修改域ID。
  • 修改主过滤器值后,新值将附加到旧值;原始值将不会被替换。
  • 建议对实体的所有更新都使用相同的主过滤器。在更新中对主过滤器进行的任何修改都会导致具有更新的主过滤器的查询不会在更新之前获取信息

通用数据Web UI

用户可以通过Web UI访问应用程序的常规历史信息:

http(s):// <时间轴服务器http(s)地址:端口> / applicationhistory

时间轴服务器REST API V1

当前仅通过REST API调用支持查询时间轴服务器。YARN库中没有实现API客户端。在Java中,Jersey客户端即使在安全模式下也可以有效地查询服务器(前提是调用方具有适当的Kerberos令牌或keytab)。

v1 REST API 在Timeline Server Web服务上的路径/ ws / v1 / timeline /下实现。

这是API的非规范性描述。

根路径

GET / ws / v1 /时间轴/

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

 {
   关于:“时间轴API”,
   timeline-service-version:“ 3.0.0-SNAPSHOT”,
   timeline-service-build-version:“ zshen源校验和e9ec74ea3ff7bc9f3d35e35c9cac694fb的fcd0702c10ce574b887280476aba63d6682d5271中的3.0.0-SNAPSHOT”,
   时间轴服务版本内置:“ 2015-05-13T19:45Z”,
   hadoop版本:“ 3.0.0-SNAPSHOT”,
   hadoop-build-version:“ zshen源校验和95874b192923b43cdb96a6e483afd60的fcd0702c10ce574b887280476476aba63d6682d5271中的3.0.0-SNAPSHOT”,
   hadoop-version-build-on:“ 2015-05-13T19:44Z”
 }

/ ws / v1 /时间轴/域

域摘要信息/ ws / v1 /时间轴/域

GET / ws / v1 /时间轴/域?owner = $ OWNER

在JSON编组的TimelineDomains数据结构中返回属于特定用户的域的列表。

业主必须在未认证的GET来设置。

经身份验证的请求,所有者默认为呼叫者。

PUT / ws / v1 /时间轴/域

对此路径进行序列化的TimelineDomain结构的PUT 会将域添加到指定/当前用户拥有的域列表中。成功的操作将返回状态代码200和不包含任何错误的TimelinePutResponse

有关域/ ws / v1 / timeline / domain / {domainId}的特定信息

返回描述域的JSON编组的TimelineDomain结构。

如果未找到域,则返回HTTP 404响应。

POST新域/ ws / v1 /时间轴/域

创建一个新的时间轴域,或覆盖现有的时间轴域。

尝试创建新域时,提交中的ID必须在集群中的所有域中都是唯一的。

尝试更新现有域时,必须设置该域的ID。提交者必须具有适当的权限才能更新域。

提交:TimelineDomain

响应:TimelinePutResponse

列出用户的域:GET / ws / v1 / timeline / domain

检索用户所有域的列表。

如果指定了所有者,则该所有者名称将覆盖呼叫者的名称。

查询参数 描述
所有者 要列出的域的所有者
GET http:// localhost:8188 / ws / v1 / timeline / domain?owner = alice

{
“域”:
  [
    {
    “ id”:“ DS_DOMAIN_2”,
    “ owner”:“ alice”,
    “ readers”:“ peter”,
    “ writers”:“ john”,
    “ createdtime”:1430425000337,
    “修改时间”:1430425000337
    },
    {
    “ id”:“ DS_DOMAIN_1”,
    “ owner”:“ alice”,
    “ readers”:“ bar”,
    “ writers”:“ foo”,
    “ createdtime”:1430424955963,
    “修改时间”:1430424955963
    }
    ,
    {“ id”:“默认”,
    “ description”:“系统默认域”,
    “ owner”:“ alice”,
    “读者”:“ *”,
    “ writers”:“ *”,
    “ createdtime”:1430424022699,
    “修改时间”:1430424022699
    }
  ]
}

响应:TimelineDomains

如果用户没有列出指定所有者的域的权限,则返回没有域列表的TimelineDomains响应。

检索特定域的详细信息:GET / ws / v1 / timeline / domain / {domainId}

检索单个域的详细信息

GET http:// localhost:8188 / ws / v1 / timeline / domain / DS_DOMAIN_1

响应:TimelineDomain

{
  “ id”:“ DS_DOMAIN_1”,
  “所有者”:“ zshen”,
  “ readers”:“ bar”,
  “ writers”:“ foo”,
  “ createdtime”:1430424955963,
  “修改时间”:1430424955963
}

如果用户缺乏查询该域详细信息的权限,则返回404(未找到)异常-如果没有具有该ID的条目,则返回相同的响应。

发布时间轴实体

使用发布实体API,您可以将包含要记录的每个框架信息的实体和事件发布到时间轴服务器。

URI:

http(s):// <时间轴服务器http(s)地址:端口> / ws / v1 /时间轴

支持的HTTP操作:

开机自检

支持的查询参数:

没有

响应:TimelinePutResponse

请求示例:

JSON请求

HTTP请求:

POST http:// <时间轴服务器http地址:端口> / ws / v1 /时间轴

请求标头:

POST / ws / v1 /时间轴HTTP / 1.1
接受:application / json
内容类型:application / json
传输编码:分块

请求正文:

{
  “实体”:[{
    “ entity”:“ entity id 0”,
    “ entitytype”:“ entity type 0”,
    “相关实体”:{
      “ test ref type 2”:[[test ref id 2“],
      “测试参考类型1”:[“测试参考ID 1”]
    },
    “事件”:[{
      “时间戳记”:1395818851590,
      “ eventtype”:“事件类型0”,
      “ eventinfo”:{
        “ key2”:“ val2”,
        “ key1”:“ val1”
      }
    },{
      “时间戳记”:1395818851590,
      “ eventtype”:“事件类型1”,
      “ eventinfo”:{
        “ key2”:“ val2”,
        “ key1”:“ val1”
      }
    }],
    “ primaryfilters”:{
      “ pkey2”:[“ pval2”],
      “ pkey1”:[“ pval1”]
    },
    “ otherinfo”:{
      “ okey2”:“ oval2”,
      “ okey1”:“ oval1”
    },
    “开始时间”:1395818851588
  },{
    “ entity”:“ entity id 1”,
    “ entitytype”:“ entity type 0”,
    “相关实体”:{
      “ test ref type 2”:[[test ref id 2“],
      “测试参考类型1”:[“测试参考ID 1”]
    },
    “事件”:[{
      “时间戳记”:1395818851590,
      “ eventtype”:“事件类型0”,
      “ eventinfo”:{
        “ key2”:“ val2”,
        “ key1”:“ val1”
      }
    },{
      “时间戳记”:1395818851590,
      “ eventtype”:“事件类型1”,
      “ eventinfo”:{
        “ key2”:“ val2”,
        “ key1”:“ val1”
      }
    }],
    “ primaryfilters”:{
      “ pkey2”:[“ pval2”],
      “ pkey1”:[“ pval1”]
    },
    “ otherinfo”:{
      “ okey2”:“ oval2”,
      “ okey1”:“ oval1”
    },
    “开始时间”:1395818851590
  }]
}

必填项

实体:typeid。除非实体包含一个或多个事件,否则starttime是必需的。事件:类型时间戳

时间轴实体列表

使用时间轴实体列表API,您可以检索实体对象的列表,并按实体的开始时间戳降序排列。实体的开始时间戳可以是您的应用程序指定的时间戳。如果未明确指定,则商店会将其选择为该实体在第一篇文章中收到的事件的最早时间戳。

URI:

使用以下URI获取给定的EntityType的所有实体对象。

http(s):// <时间轴服务器http(s)地址:端口> / ws / v1 / timeline / {entityType}

支持的HTTP操作:

得到

支持的查询参数:

  1. limit-对要返回的实体数量的限制。如果为null,则默认为100。
  2. windowStart-最早的检索开始时间戳(不包括)。如果为null,则默认为检索所有实体,直到达到限制。
  3. windowEnd-要检索的最新开始时间戳(包括)。如果为null,则默认为Long的最大值。
  4. fromId-如果fromId不为null,则检索早于并包括指定ID的实体。如果找不到指定ID的开始时间,将返回一个空的实体列表。该windowEnd如果这个实体的开始时间比下降后的参数将优先windowEnd
  5. fromTs-如果fromTs不为null,则忽略在给定时间戳记之后插入商店的实体。用于此比较的实体的插入时间戳记是收到实体的第一次放置时的商店系统时间(而不是实体的开始时间)。
  6. primaryFilter-仅检索具有指定主过滤器的实体。如果为null,则检索所有实体。这是索引检索,不会扫描与过滤器不匹配的实体。
  7. secondaryFilters-仅检索在主过滤器​​或其他信息中与所有指定过滤器完全匹配的实体。这不是索引检索,因此将扫描所有实体,但仅返回与过滤器匹配的那些实体。
  8. fields-指定要检索的实体对象的哪些字段:EVENTSRELATED_ENTITIESPRIMARY_FILTERSOTHER_INFOLAST_EVENT_ONLY。如果字段集包含LAST_EVENT_ONLY而不是EVENTS,则检索每个实体的最新事件。如果为null,则检索所有字段。

请注意,primaryFiltersecondaryFilters参数的键/值对的值可以具有不同的数据类型,并且匹配对数据类型敏感。用户需要正确设置值的格式。例如,123“ 123”分别表示整数和字符串。如果该实体的primaryFilter字符串为“ 123”,但参数设置为整​​数123,则该实体将不匹配。同样,true表示布尔值,而true表示字符串。通常,该值将转换为某种Java类型,这与解析JSON剪辑的jackson库一致。

实体的元素(时间轴实体列表)对象

当您请求时间轴实体列表时,该信息将作为容器对象的集合返回。另请参见时间线实体,以了解时间线实体对象的语法。

项目 数据类型 描述
实体 时间轴实体对象的数组(JSON) 时间轴实体对象的集合

响应示例:

JSON回应

HTTP请求:

GET http:// localhost:8188 / ws / v1 / timeline / DS_APP_ATTEMPT

响应标题:

HTTP / 1.1 200 OK
内容类型:application / json
传输编码:分块

响应主体:

{
  “实体”:[
  {
  “ entitytype”:“ DS_APP_ATTEMPT”,
  “ entity”:“ appattempt_1430424020775_0004_000001”,
  “事件”:[
    {
    “时间戳记”:1430425008796,
    “ eventtype”:“ DS_APP_ATTEMPT_END”,
    “ eventinfo”:{}
    }
    {
    “时间戳记”:1430425004161,
    “ eventtype”:“ DS_APP_ATTEMPT_START”,
    “ eventinfo”:{}
    }
  ]
  “开始时间”:1430425004161,
  “ domain”:“ DS_DOMAIN_2”,
  “相关实体”:{},
  “ primaryfilters”:
    {
    “用户”:[“ zshen”]
    },
  “ otherinfo”:{}
  }
  {
  “ entitytype”:“ DS_APP_ATTEMPT”,
  “ entity”:“ appattempt_1430424020775_0003_000001”,
  “开始时间”:1430424959169,
  “ domain”:“ DS_DOMAIN_1”,
  “事件”:[
    {
    “时间戳记”:1430424963836,
    “ eventinfo”:{}
     }
    {
    “时间戳记”:1430424959169,
    “ eventinfo”:{}
    }
   ]
  “相关实体”:{},
  “ primaryfilters”:{
    “用户”:[“ zshen”]
   },
  “ otherinfo”:{}
   }
  ]
}

时间轴实体

使用时间轴实体API,您可以检索给定实体标识符的实体信息。

URI:

使用下面的URI以获得由所标识的实体对象的EntityType值和ENTITYID值。

http(s):// <时间轴服务器http(s)地址:端口> / ws / v1 / timeline / {entityType} / {entityId}

支持的HTTP操作:

得到

支持的查询参数:

  1. fields-指定要检索的实体对象的哪些字段:EVENTSRELATED_ENTITIESPRIMARY_FILTERSOTHER_INFOLAST_EVENT_ONLY。如果字段集包含LAST_EVENT_ONLY而不是EVENTS,则将检索每个实体的最新事件。如果为null,则检索所有字段。

实体(时间轴实体)对象的元素:

另请参见时间线事件列表,以了解时间线事件对象的语法。需要注意的是价值primaryfilters活动促销是一个对象而不是字符串。

项目 数据类型 描述
实体 实体编号
实体类型 实体类型
相关实体 地图 相关实体的标识符,这些标识符在entityType映射中进行组织:[entity1,entity2,...]
大事记 清单 实体事件
主过滤器 地图 实体的主要过滤器,这些过滤器组织在键映射中:[value1,value2,…]
其他信息 地图 实体的其他信息,以key:value的映射组织
开始时间 实体的开始时间

响应示例:

JSON回应

HTTP请求:

GET http:// localhost:8188 / ws / v1 / timeline / DS_APP_ATTEMPT / appattempt_1430424020775_0003_000001

响应标题:

HTTP / 1.1 200 OK
内容类型:application / json
传输编码:分块

响应主体:

{
  “事件”:[
    {
    “时间戳记”:1430424959169,
    “ eventtype”:“ DS_APP_ATTEMPT_START”,
    “ eventinfo”:{}}],
    “ entitytype”:“ DS_APP_ATTEMPT”,
    “ entity”:“ appattempt_1430424020775_0003_000001”,
    “开始时间”:1430424959169,
    “ domain”:“ DS_DOMAIN_1”,
    “相关实体”:{},
    “ primaryfilters”:{
        “用户”:[“ zshen”]
        },
    “ otherinfo”:{}
    }
  ]
}

时间轴事件列表

使用时间轴事件API,您可以检索所有相同实体类型的实体列表的事件对象。每个实体的事件按其时间戳降序排列。

URI:

使用以下URI获取给定的EntityType的事件对象。

http(s):// <时间轴服务器http(s)地址:端口> / ws / v1 / timeline / {entityType} / events

支持的HTTP操作:

得到

支持的查询参数:

  1. entityId-为其检索事件的实体ID。如果为null,则不会返回任何事件。多个entityIds可以作为逗号分隔的值给出。
  2. limit-每个实体要返回的事件数的限制。如果为null,则每个实体默认为100个事件。
  3. windowStart-如果不为null,则仅检索晚于给定时间(不包括)的事件
  4. windowEnd-如果不为null,则仅检索早于给定时间(包括该时间)的事件
  5. eventType-限制返回给定类型的事件。如果为null,则将返回所有类型的事件。可以将多个eventType用作逗号分隔的值。

事件的元素(时间轴实体列表)对象

当您请求时间轴事件列表时,该信息将作为事件对象的集合返回。

项目 数据类型 描述
大事记 时间轴事件对象的数组(JSON) 时间轴事件对象的集合

以下是单个事件对象的元素。需要注意的是价值eventinfo活动促销是一个对象而不是字符串。

项目 数据类型 描述
事件类型 活动类型
事件信息 地图 事件的信息,该信息在keyvalue映射中进行组织
时间戳记 事件的时间戳

响应示例:

JSON回应

HTTP请求:

GET http:// localhost:8188 / ws / v1 / timeline / DS_APP_ATTEMPT / events?entityId = appattempt_1430424020775_0003_000001

响应标题:

HTTP / 1.1 200 OK
内容类型:application / json
传输编码:分块

响应主体:

{
“事件”:[
  {
  “ entity”:“ appattempt_1430424020775_0003_000001”,
  “ entitytype”:“ DS_APP_ATTEMPT”}
  “事件”:[
    {
    “时间戳记”:1430424963836,
    “ eventtype”:“ DS_APP_ATTEMPT_END”,
    “ eventinfo”:{}},
    {
    “时间戳记”:1430424959169,
    “ eventtype”:“ DS_APP_ATTEMPT_START”,
    “ eventinfo”:{}}
    ],
   }
  ]
}

通用数据REST API

用户可以通过REST API访问应用程序的一般历史信息。

关于

使用about API,您可以获得有关资源的时间表,其中包含通用历史记录REST API描述和版本信息。

它本质上是YARN TimelineAbout结构的XML / JSON序列化形式。

URI:

使用以下URI获取有关对象的时间轴。

http(s):// <时间轴服务器http(s)地址:端口> / ws / v1 / applicationhistory / about

支持的HTTP操作:

得到

支持的查询参数:

没有

about(应用程序)对象的元素:

项目 数据类型 描述
关于 关于服务的描述
时间线服务版本 时间轴服务版本
时间轴服务构建版本 时间轴服务构建版本
建立时间轴服务版本 时间轴服务在什么时间建立
Hadoop版本 Hadoop版本
hadoop-build-version Hadoop构建版本
hadoop版本内置 何时构建Hadoop

响应示例:

JSON回应

HTTP请求:

http:// localhost:8188 / ws / v1 / applicationhistory / about

响应标题:

HTTP / 1.1 200 OK
内容类型:application / json
传输编码:分块

响应主体:

{
  关于:“通用历史记录服务API”,
  timeline-service-version:“ 3.0.0-SNAPSHOT”,
  timeline-service-build-version:“ zshen源校验和e9ec74ea3ff7bc9f3d35e35c9cac694fb的fcd0702c10ce574b887280476aba63d6682d5271中的3.0.0-SNAPSHOT”,
  时间轴服务版本内置:“ 2015-05-13T19:45Z”,
  hadoop版本:“ 3.0.0-SNAPSHOT”,
  hadoop-build-version:“ zshen源校验和95874b192923b43cdb96a6e483afd60的fcd0702c10ce574b887280476476aba63d6682d5271中的3.0.0-SNAPSHOT”,
  hadoop-version-build-on:“ 2015-05-13T19:44Z”
}

XML回应

HTTP请求:

GET http:// localhost:8188 / ws / v1 / applicationhistory / about
接受:application / xml

响应标题:

HTTP / 1.1 200 OK
内容类型:application / xml
内容长度:748

响应主体:

 <?xml版本=“ 1.0”编码=“ UTF-8”独立=“是”?>
 <关于>
   <About>通用历史记录服务API </ About>
   <hadoop-build-version> 3.0.0-SNAPSHOT(来自zshen源校验和95874b192923b43cdb96a6e483afd60的fcd0702c10ce574b887280476aba63d6682d5271)</ hadoop-build-version>
   <hadoop-version> 3.0.0-SNAPSHOT </ hadoop-version>
   <hadoop-version-built-on> 2015-05-13T19:44Z </ hadoop-version-built-on>
   <timeline-service-build-version> 3.0.0-SNAPSHOT(来自zshen源校验和e9ec74ea3ff7bc9f3d35e35c9cac694fb的fcd0702c10ce574b887280476aba63d6682d5271)</ timeline-service-build-version>
   <timeline-service-version> 3.0.0-SNAPSHOT </ timeline-service-version>
   <timeline-service-version-built-on> 2015-05-13T19:45Z </ timeline-service-version-built-on>
 </ about>

申请清单

使用Application List API,您可以获得资源的集合,每个资源代表一个应用程序。在此资源上运行GET操作时,将获得应用程序对象的集合。

URI:

http(s):// <时间轴服务器http(s)地址:端口> / ws / v1 / applicationhistory / apps

支持的HTTP操作:

得到

支持的查询参数:

  1. 状态 -与给定应用程序状态匹配的应用程序,指定为以逗号分隔的列表

  2. finalStatus-应用程序的最终状态-由应用程序本身报告

  3. 用户 -用户名

  4. 队列 -队列名称

  5. 限制 -要返回的应用程序对象总数

  6. startsTimeBegin-开始时间从该时间开始的应用程序,从纪元开始以毫秒为单位指定

  7. startsTimeEnd-开始时间以该时间结束的应用程序,从纪元开始以毫秒为单位指定

  8. finishTimeBegin-结束时间从该时间开始的应用程序,从纪元开始以毫秒为单位指定

  9. finishTimeEnd-结束时间以该时间结束的应用程序,从纪元开始以毫秒为单位指定

  10. applicationTypes-与给定应用程序类型匹配的应用程序,以逗号分隔的列表形式指定

应用程序的元素(应用程序列表)对象

当您请求应用程序列表时,该信息将作为应用程序对象的集合返回。另请参阅应用程序以获取应用程序对象的语法。

项目 数据类型 描述
应用程式 应用程序对象数组(JSON)/零个或多个应用程序对象(XML) 应用程序对象的集合

响应示例:

JSON回应

HTTP请求:

GET http:// <时间轴服务器http地址:端口> / ws / v1 / applicationhistory / apps

响应标题:

HTTP / 1.1 200 OK
内容类型:application / json
传输编码:分块

响应主体:

{
  “应用”:
  [
      {
      “ appId”:“ application_1430424020775_0004”,
      “ currentAppAttemptId”:“ appattempt_1430424020775_0004_000001”,
      “ user”:“ zshen”,
      “ name”:“ DistributedShell”,
      “ queue”:“默认”,
      “ type”:“ YARN”,
      “主机”:“ d-69-91-129-173.dhcp4.washington.edu/69.91.129.173”,
      “ rpcPort”:-1,
      “ appState”:“完成”,
      “进度”:100.0,
      “ diagnosticsInfo”:“”,
      “ originalTrackingUrl”:“不适用”,
      “ trackingUrl”:“ http://d-69-91-129-173.dhcp4.washington.edu:8088/proxy/application_1430424020775_0004/”,
      “ finalAppStatus”:“成功”,
      “ submittedTime”:1430425001004,
      “ startedTime”:1430425001004,
      “ finishedTime”:1430425008861,
      “ elapsedTime”:7857,
      “ unmanagedApplication”:“ false”,
      “ applicationPriority”:0,
      “ appNodeLabelExpression”:“”,
      “ amNodeLabelExpression”:“”
      },
      {
      “ appId”:“ application_1430424020775_0003”,
      “ currentAppAttemptId”:“ appattempt_1430424020775_0003_000001”,
      “ user”:“ zshen”,
      “ name”:“ DistributedShell”,
      “ queue”:“默认”,
      “ type”:“ YARN”,
      “主机”:“ d-69-91-129-173.dhcp4.washington.edu/69.91.129.173”,
      “ rpcPort”:-1,
      “ appState”:“完成”,
      “进度”:100.0,
      “ diagnosticsInfo”:“”,
      “ originalTrackingUrl”:“不适用”,
      “ trackingUrl”:“ http://d-69-91-129-173.dhcp4.washington.edu:8088/proxy/application_1430424020775_0003/”,
      “ finalAppStatus”:“成功”,
      “ submittedTime”:1430424956650,
      “ startedTime”:1430424956650,
      “ finishedTime”:1430424963907,
      “ elapsedTime”:7257,
      “ unmanagedApplication”:“ false”,
      “ applicationPriority”:0,
      “ appNodeLabelExpression”:“”,
      “ amNodeLabelExpression”:“”
      },
      {
      “ appId”:“ application_1430424020775_0002”,
      “ currentAppAttemptId”:“ appattempt_1430424020775_0002_000001”,
      “ user”:“ zshen”,
      “ name”:“ DistributedShell”,
      “ queue”:“默认”,
      “ type”:“ YARN”,
      “主机”:“ d-69-91-129-173.dhcp4.washington.edu/69.91.129.173”,
      “ rpcPort”:-1,
      “ appState”:“完成”,
      “进度”:100.0,
      “ diagnosticsInfo”:“”,
      “ originalTrackingUrl”:“不适用”,
      “ trackingUrl”:“ http://d-69-91-129-173.dhcp4.washington.edu:8088/proxy/application_1430424020775_0002/”,
      “ finalAppStatus”:“成功”,
      “ submittedTime”:1430424769395,
      “ startedTime”:1430424769395,
      “ finishedTime”:1430424776594,
      “ elapsedTime”:7199,
      “ unmanagedApplication”:“ false”,
      “ applicationPriority”:0,
      “ appNodeLabelExpression”:“”,
      “ amNodeLabelExpression”:“”
      },
      {
      “ appId”:“ application_1430424020775_0001”,
      “ currentAppAttemptId”:“ appattempt_1430424020775_0001_000001”,
      “ user”:“ zshen”,
      “ name”:“ QuasiMonteCarlo”,
      “ queue”:“默认”,
      “ type”:“ MAPREDUCE”,
      “ host”:“ localhost”,
      “ rpcPort”:56264,
      “ appState”:“完成”,
      “进度”:100.0,
      “ diagnosticsInfo”:“”,
      “ originalTrackingUrl”:“ http://d-69-91-129-173.dhcp4.washington.edu:19888/jobhistory/job/job_1430424020775_0001”,
      “ trackingUrl”:“ http://d-69-91-129-173.dhcp4.washington.edu:8088/proxy/application_1430424020775_0001/”,
      “ finalAppStatus”:“成功”,
      “ submittedTime”:1430424053809,
      “ startedTime”:1430424072153,
      “ finishedTime”:1430424776594,
      “ elapsedTime”:18344,
      “ applicationTags”:“ mrapplication,ta-example”,
      “ unmanagedApplication”:“ false”,
      “ applicationPriority”:0,
      “ appNodeLabelExpression”:“”,
      “ amNodeLabelExpression”:“”
      }
  ]
}

XML回应

HTTP请求:

GET http:// localhost:8188 / ws / v1 / applicationhistory / apps

响应标题:

HTTP / 1.1 200 OK
内容类型:application / xml
内容长度:1710

响应主体:

<?xml版本=“ 1.0”编码=“ UTF-8”独立=“是”?>
<apps>
  <app>
    <appId> application_1430424020775_0004 </ appId>
    <currentAppAttemptId> appattempt_1430424020775_0004_000001 </ currentAppAttemptId>
    <user> zshen </ user>
    <name> DistributedShell </ name>
    <queue>默认</ queue>
    <type> YARN </ type>
    <host> d-69-91-129-173.dhcp4.washington.edu/69.91.129.173 </ host>
    <rpcPort> -1 </ rpcPort>
    <appState>完成</ appState>
    <progress> 100.0 </ progress>
    <diagnosticsInfo> </ diagnosticsInfo>
    <originalTrackingUrl>不适用</ originalTrackingUrl>
    <trackingUrl> http://d-69-91-129-173.dhcp4.washington.edu:8088/proxy/application_1430424020775_0004/ </ trackingUrl>
    <finalAppStatus>已成功</ finalAppStatus>
    <submittedTime> 1430425001004 </ submittedTime>
    <startedTime> 1430425001004 </ startedTime>
    <finishedTime> 1430425008861 </ finishedTime>
    <elapsedTime> 7857 </ elapsedTime>
    <unmanagedApplication> false </ unmanagedApplication>
    <applicationPriority> 0 </ applicationPriority>
    <appNodeLabelExpression> </ appNodeLabelExpression>
    <amNodeLabelExpression> </ amNodeLabelExpression>
  </ app>
  <app>
    <appId> application_1430424020775_0003 </ appId>
    <currentAppAttemptId> appattempt_1430424020775_0003_000001 </ currentAppAttemptId>
    <user> zshen </ user>
    <name> DistributedShell </ name>
    <queue>默认</ queue>
    <type> YARN </ type>
    <host> d-69-91-129-173.dhcp4.washington.edu/69.91.129.173 </ host>
    <rpcPort> -1 </ rpcPort>
    <appState>完成</ appState>
    <progress> 100.0 </ progress>
    <diagnosticsInfo> </ diagnosticsInfo>
    <originalTrackingUrl>不适用</ originalTrackingUrl>
    <trackingUrl> http://d-69-91-129-173.dhcp4.washington.edu:8088/proxy/application_1430424020775_0003/ </ trackingUrl>
    <finalAppStatus>已成功</ finalAppStatus>
    <submittedTime> 1430424956650 </ submittedTime>
    <startedTime> 1430424956650 </ startedTime>
    <finishedTime> 1430424963907 </ finishedTime>
    <elapsedTime> 7257 </ elapsedTime>
    <unmanagedApplication> false </ unmanagedApplication>
    <applicationPriority> 0 </ applicationPriority>
    <appNodeLabelExpression> </ appNodeLabelExpression>
    <amNodeLabelExpression> </ amNodeLabelExpression>
  </ app>
  <app>
    <appId> application_1430424020775_0002 </ appId>
    <currentAppAttemptId> appattempt_1430424020775_0002_000001 </ currentAppAttemptId>
    <user> zshen </ user>
    <name> DistributedShell </ name>
    <queue>默认</ queue>
    <type> YARN </ type>
    <host> d-69-91-129-173.dhcp4.washington.edu/69.91.129.173 </ host>
    <rpcPort> -1 </ rpcPort>
    <appState>完成</ appState>
    <progress> 100.0 </ progress>
    <diagnosticsInfo> </ diagnosticsInfo>
    <originalTrackingUrl>不适用</ originalTrackingUrl>
    <trackingUrl> http://d-69-91-129-173.dhcp4.washington.edu:8088/proxy/application_1430424020775_0002/ </ trackingUrl>
    <finalAppStatus>已成功</ finalAppStatus>
    <submittedTime> 1430424769395 </ submittedTime>
    <startedTime> 1430424769395 </ startedTime>
    <finishedTime> 1430424776594 </ finishedTime>
    <elapsedTime> 7199 </ elapsedTime>
    <unmanagedApplication> false </ unmanagedApplication>
    <applicationPriority> 0 </ applicationPriority>
    <appNodeLabelExpression> </ appNodeLabelExpression>
    <amNodeLabelExpression> </ amNodeLabelExpression>
  </ app>
  <app>
    <appId> application_1430424020775_0001 </ appId>
    <currentAppAttemptId> appattempt_1430424020775_0001_000001 </ currentAppAttemptId>
    <user> zshen </ user>
    <name> QuasiMonteCarlo </ name>
    <queue>默认</ queue>
    <type> MAPREDUCE </ type>
    <host>本地主机</ host>
    <rpcPort> 56264 </ rpcPort>
    <appState>完成</ appState>
    <progress> 100.0 </ progress>
    <diagnosticsInfo> </ diagnosticsInfo>
    <originalTrackingUrl> http://d-69-91-129-173.dhcp4.washington.edu:19888/jobhistory/job/job_1430424020775_0001 </ originalTrackingUrl>
    <trackingUrl> http://d-69-91-129-173.dhcp4.washington.edu:8088/proxy/application_1430424020775_0001/ </ trackingUrl>
    <finalAppStatus>已成功</ finalAppStatus>
    <submittedTime> 1430424053809 </ submittedTime>
    <startedTime> 1430424053809 </ startedTime>
    <finishedTime> 1430424072153 </ finishedTime>
    <elapsedTime> 18344 </ elapsedTime>
    <applicationTags> mrapplication,ta-example </ applicationTags>
    <unmanagedApplication> false </ unmanagedApplication>
    <applicationPriority> 0 </ applicationPriority>
    <appNodeLabelExpression> </ appNodeLabelExpression>
    <amNodeLabelExpression> </ amNodeLabelExpression>
  </ app>
</ apps>

应用

使用Application API,您可以获得包含有关在YARN群集上运行的特定应用程序的信息的应用程序资源。

它本质上是YARN ApplicationReport结构的XML / JSON序列化形式。

URI:

使用以下URI获取由appid值标识的应用程序对象。

http(s):// <时间轴服务器http(s)地址:端口> / ws / v1 / applicationhistory / apps / {appid}

支持的HTTP操作:

得到

支持的查询参数:

没有

应用程序(应用程序)对象的元素:

项目 数据类型 描述
appId 应用程序ID
用户 启动应用程序的用户
名称 应用名称
类型 申请类型
队列 应用程序提交到的队列
appState 根据ResourceManager的应用程序状态-有效值是YarnApplicationState枚举的成员:FINISHEDFAILEDKILLED
finalStatus 应用程序的最终状态,如果完成了-报告由应用程序本身-有效值为:UNDEFINEDSUCCEEDED失败镇静
进展 浮动 报告的应用程序进度百分比。长期的YARN服务可能无法在此处提供有意义的值-或将其用作实际容器数量与所需容器数量的度量
trackingUrl 应用程序的Web URL(通过RM代理)
originalTrackingUrl 应用程序的实际Web URL
诊断信息 有关完整应用程序的详细诊断信息
开始时间 应用程序启动的时间(从纪元开始以毫秒为单位)
完成时间 应用程序完成的时间(自纪元以来以毫秒为单位)
经过时间 自应用程序启动以来经过的时间(以毫秒为单位)
分配的MB 整型 分配给应用程序运行容器的内存总和(以MB为单位)
分配的VCore 整型 分配给应用程序运行容器的虚拟核的总和
currentAppAttemptId 最新的应用尝试ID
主办 ApplicationMaster的主机
rpcPort 整型 ApplicationMaster的RPC端口;如果未声明IPC服务,则为零
applicationTags 应用程序标签。
非托管应用 布尔值 应用程序不受管理吗?
applicationPriority 整型 提交申请的优先权。
appNodeLabelExpression 节点标签表达式,用于标识默认情况下应在其上运行应用程序容器的节点。
amNodeLabelExpression 节点标签表达式,用于标识预期在其上运行应用程序的AM容器的节点。

响应示例:

JSON回应

HTTP请求:

http:// localhost:8188 / ws / v1 / applicationhistory / apps / application_1430424020775_0001

响应标题:

HTTP / 1.1 200 OK
内容类型:application / json
传输编码:分块

响应主体:

{
  “ appId”:“ application_1430424020775_0001”,
  “ currentAppAttemptId”:“ appattempt_1430424020775_0001_000001”,
  “ user”:“ zshen”,
  “ name”:“ QuasiMonteCarlo”,
  “ queue”:“默认”,
  “ type”:“ MAPREDUCE”,
  “ host”:“ localhost”,
  “ rpcPort”:56264,
  “ appState”:“完成”,
  “进度”:100.0,
  “ diagnosticsInfo”:“”,
  “ originalTrackingUrl”:“ http://d-69-91-129-173.dhcp4.washington.edu:19888/jobhistory/job/job_1430424020775_0001”,
  “ trackingUrl”:“ http://d-69-91-129-173.dhcp4.washington.edu:8088/proxy/application_1430424020775_0001/”,
  “ finalAppStatus”:“成功”,
  “ submittedTime”:1430424053809,
  “ startedTime”:1430424053809,
  “ finishedTime”:1430424072153,
  “ elapsedTime”:18344,
  “ applicationTags”:mrapplication,标签示例,
  “ unmanagedApplication”:“ false”,
  “ applicationPriority”:0,
  “ appNodeLabelExpression”:“”,
  “ amNodeLabelExpression”:“”
}

XML回应

HTTP请求:

GET http:// localhost:8188 / ws / v1 / applicationhistory / apps / application_1430424020775_0001
接受:application / xml

响应标题:

HTTP / 1.1 200 OK
内容类型:application / xml
内容长度:873

响应主体:

 <?xml版本=“ 1.0”编码=“ UTF-8”独立=“是”?>
 <app>
   <appId> application_1430424020775_0001 </ appId>
   <currentAppAttemptId> appattempt_1430424020775_0001_000001 </ currentAppAttemptId>
   <user> zshen </ user>
   <name> QuasiMonteCarlo </ name>
   <queue>默认</ queue>
   <type> MAPREDUCE </ type>
   <host>本地主机</ host>
   <rpcPort> 56264 </ rpcPort>
   <appState>完成</ appState>
   <progress> 100.0 </ progress>
   <diagnosticsInfo> </ diagnosticsInfo>
   <originalTrackingUrl> http://d-69-91-129-173.dhcp4.washington.edu:19888/jobhistory/job/job_1430424020775_0001 </ originalTrackingUrl>
   <trackingUrl> http://d-69-91-129-173.dhcp4.washington.edu:8088/proxy/application_1430424020775_0001/ </ trackingUrl>
   <finalAppStatus>已成功</ finalAppStatus>
   <submittedTime> 1430424053809 </ submittedTime>
   <startedTime> 1430424053809 </ startedTime>
   <finishedTime> 1430424072153 </ finishedTime>
   <elapsedTime> 18344 </ elapsedTime>
   <applicationTags> mrapplication,ta-example </ applicationTags>
   <unmanagedApplication> false </ unmanagedApplication>
   <applicationPriority> 0 </ applicationPriority>
   <appNodeLabelExpression> <appNodeLabelExpression>
   <amNodeLabelExpression> <amNodeLabelExpression>
 </ app>

申请尝试清单

使用“应用程序尝试列表” API,您可以获取资源的集合,每个资源代表一个应用程序尝试。在此资源上运行GET操作时,将获得应用程序尝试对象的集合。

URI:

使用以下URI获取由appid值标识的应用程序的所有尝试对象。

http(s):// <时间轴服务器http(s)地址:端口> / ws / v1 / applicationhistory / apps / {appid} / appattempts

支持的HTTP操作:

得到

支持的查询参数:

没有

Appattempts(应用程序尝试列表)对象的元素

当您请求应用程序尝试列表时,该信息将作为应用程序尝试对象的集合返回。有关应用程序尝试对象的语法,请参见应用程序尝试。

项目 数据类型 描述
适当的 适用对象数组(JSON)/零个或多个应用尝试对象(XML) 应用程序尝试对象的集合

响应示例:

JSON回应

HTTP请求:

GET http:// localhost:8188 / ws / v1 / applicationhistory / apps / application_1430424020775_0001 / appattempts

响应标题:

HTTP / 1.1 200 OK
内容类型:application / json
传输编码:分块

响应主体:

{
  “ appAttempt”:[
    {
      “ appAttemptId”:“ appattempt_1430424020775_0001_000001”,
      “ host”:“ localhost”,
      “ rpcPort”:56264,
      “ trackingUrl”:“ http://d-69-91-129-173.dhcp4.washington.edu:8088/proxy/application_1430424020775_0001/”,
      “ originalTrackingUrl”:“ http://d-69-91-129-173.dhcp4.washington.edu:19888/jobhistory/job/job_1430424020775_0001”,
      “ diagnosticsInfo”:“”,
      “ appAttemptState”:“完成”,
      “ amContainerId”:“ container_1430424020775_0001_01_000001”
    }
  ]
}

XML回应

HTTP请求:

GET http:// localhost:8188 / ws / v1 / applicationhistory / apps / application_1430424020775_0001 / appattempts
接受:application / xml

响应标题:

HTTP / 1.1 200 OK
内容类型:application / xml

响应主体:

<?xml版本=“ 1.0”编码=“ UTF-8”独立=“是”?>
<appAttempts>
  <appAttempt>
    <appAttemptId> appattempt_1430424020775_0001_000001 </ appAttemptId>
    <host>本地主机</ host>
    <rpcPort> 56264 </ rpcPort>
    <trackingUrl> http://d-69-91-129-173.dhcp4.washington.edu:8088/proxy/application_1430424020775_0001/ </ trackingUrl>
    <originalTrackingUrl> http://d-69-91-129-173.dhcp4.washington.edu:19888/jobhistory/job/job_1430424020775_0001 </ originalTrackingUrl>
    <diagnosticsInfo> </ diagnosticsInfo>
    <appAttemptState>完成</ appAttemptState>
    <amContainerId> container_1430424020775_0001_01_000001 </ amContainerId>
  </ appAttempt>
</ appAttempts>

申请尝试

使用Application Attempt API,您可以获得应用程序尝试资源,该资源包含有关在YARN群集上运行的应用程序的特定应用程序尝试的信息。

URI:

使用以下URI获取由appid值和appattemptid值标识的应用程序尝试对象。

http(s):// <时间轴服务器http(s)地址:端口> / ws / v1 / applicationhistory / apps / {appid} / appattempts / {appattemptid}

支持的HTTP操作:

得到

支持的查询参数:

没有

appattempt(应用程序尝试)对象的元素:

项目 数据类型 描述
appAttemptId 应用尝试ID
amContainerId ApplicationMaster容器ID
appAttemptState 根据ResourceManager的应用程序尝试状态-有效值是YarnApplicationAttemptState枚举的成员:FINISHED,FAILED,KILLED
trackingUrl 可用于跟踪应用程序的Web URL
originalTrackingUrl 应用程序的实际Web URL
诊断信息 详细的诊断信息
主办 ApplicationMaster的主机
rpcPort 整型 ApplicationMaster的rpc端口

响应示例:

JSON回应

HTTP请求:

http:// localhost:8188 / ws / v1 / applicationhistory / apps / application_1430424020775_0001 / appattempts / appattempt_1430424020775_0001_000001

响应标题:

HTTP / 1.1 200 OK
内容类型:application / json
传输编码:分块

响应主体:

{
  “ appAttemptId”:“ appattempt_1430424020775_0001_000001”,
  “ host”:“ localhost”,
  “ rpcPort”:56264,
  “ trackingUrl”:“ http://d-69-91-129-173.dhcp4.washington.edu:8088/proxy/application_1430424020775_0001/”,
  “ originalTrackingUrl”:“ http://d-69-91-129-173.dhcp4.washington.edu:19888/jobhistory/job/job_1430424020775_0001”,
  “ diagnosticsInfo”:“”,
  “ appAttemptState”:“完成”,
  “ amContainerId”:“ container_1430424020775_0001_01_000001”
}

XML回应

HTTP请求:

GET http:// <时间轴服务器http地址:端口> / ws / v1 / applicationhistory / apps / application_1395789200506_0001 / appattempts / appattempt_1395789200506_0001_000001
接受:application / xml

响应标题:

HTTP / 1.1 200 OK
内容类型:application / xml
内容长度:488

响应主体:

<?xml版本=“ 1.0”编码=“ UTF-8”独立=“是”?>
<appAttempt>
  <appAttemptId> appattempt_1430424020775_0001_000001 </ appAttemptId>
  <host>本地主机</ host>
  <rpcPort> 56264 </ rpcPort>
  <trackingUrl> http://d-69-91-129-173.dhcp4.washington.edu:8088/proxy/application_1430424020775_0001/ </ trackingUrl>
  <originalTrackingUrl> http://d-69-91-129-173.dhcp4.washington.edu:19888/jobhistory/job/job_1430424020775_0001 </ originalTrackingUrl>
  <diagnosticsInfo> </ diagnosticsInfo>
  <appAttemptState>完成</ appAttemptState>
  <amContainerId> container_1430424020775_0001_01_000001 </ amContainerId>
</ appAttempt>

货柜清单

使用Container List API,您可以获得资源的集合,每个资源代表一个容器。在此资源上运行GET操作时,将获得容器对象的集合。

URI:

使用以下URI获取由appid值和appattemptid值标识的应用程序尝试的所有容器对象。

http(s):// <时间轴服务器http(s)地址:端口> / ws / v1 / applicationhistory / apps / {appid} / appattempts / {appattemptid} / containers

支持的HTTP操作:

得到

支持的查询参数:

没有

容器的元素(容器列表)对象

当您请求容器列表时,信息将作为容器对象的集合返回。另请参见容器以获取容器对象的语法。

项目 数据类型 描述
容器 容器对象数组(JSON)/零个或多个容器对象(XML) 容器对象的集合

响应示例:

JSON回应

HTTP请求:

GET http:// localhost:8188 / ws / v1 / applicationhistory / apps / application_1430424020775_0001 / appattempts / appattempt_1430424020775_0001_000001 /容器?

响应标题:

HTTP / 1.1 200 OK
内容类型:application / json
传输编码:分块

响应主体:

{
  “容器”: [
    {
      “ containerId”:“ container_1430424020775_0001_01_000007”,
      “ allocatedMB”:1024,
      “ allocatedVCores”:1,
      “ assignedNodeId”:“ localhost:9105”,
      “优先级”:10,
      “ startedTime”:1430424068296,
      “ finishedTime”:1430424073006,
      “ elapsedTime”:4710,
      “ diagnosticsInfo”:“容器被ApplicationMaster杀死。\ n容器根据请求被杀死。退出代码为143 \ n容器退出,退出代码为非零143 \ n”,
      “ logUrl”:“ http://0.0.0.0:8188/applicationhistory/logs/localhost:9105/container_1430424020775_0001_01_000007/container_1430424020775_0001_01_000007/zshen”,
      “ containerExitStatus”:-105,
      “ containerState”:“ COMPLETE”,
      “ nodeHttpAddress”:“ http:// localhost:8042”
    },
    {
      “ containerId”:“ container_1430424020775_0001_01_000006”,
      “ allocatedMB”:1024,
      “ allocatedVCores”:1,
      “ assignedNodeId”:“ localhost:9105”,
      “优先级”:20,
      “ startedTime”:1430424060317,
      “ finishedTime”:1430424068293,
      “ elapsedTime”:7976,
      “ diagnosticsInfo”:“容器被ApplicationMaster杀死。\ n容器根据请求被杀死。退出代码为143 \ n容器退出,退出代码为非零143 \ n”,
      “ logUrl”:“ http://0.0.0.0:8188/applicationhistory/logs/localhost:9105/container_1430424020775_0001_01_000006/container_1430424020775_0001_01_000006/zshen”,
      “ containerExitStatus”:-105,
      “ containerState”:“ COMPLETE”,
      “ nodeHttpAddress”:“ http:// localhost:8042”
    },
    {
      “ containerId”:“ container_1430424020775_0001_01_000005”,
      “ allocatedMB”:1024,
      “ allocatedVCores”:1,
      “ assignedNodeId”:“ localhost:9105”,
      “优先级”:20,
      “ startedTime”:1430424060316,
      “ finishedTime”:1430424068294,
      “ elapsedTime”:7978,
      “ diagnosticsInfo”:“容器被ApplicationMaster杀死。\ n容器根据请求被杀死。退出代码为143 \ n容器退出,退出代码为非零143 \ n”,
      “ logUrl”:“ http://0.0.0.0:8188/applicationhistory/logs/localhost:9105/container_1430424020775_0001_01_000005/container_1430424020775_0001_01_000005/zshen”,
      “ containerExitStatus”:-105,
      “ containerState”:“ COMPLETE”,
      “ nodeHttpAddress”:“ http:// localhost:8042”
    },
    {
      “ containerId”:“ container_1430424020775_0001_01_000003”,
      “ allocatedMB”:1024,
      “ allocatedVCores”:1,
      “ assignedNodeId”:“ localhost:9105”,
      “优先级”:20,
      “ startedTime”:1430424060315,
      “ finishedTime”:1430424068289,
      “ elapsedTime”:7974,
      “ diagnosticsInfo”:“容器被ApplicationMaster杀死。\ n容器根据请求被杀死。退出代码为143 \ n容器退出,退出代码为非零143 \ n”,
      “ logUrl”:“ http://0.0.0.0:8188/applicationhistory/logs/localhost:9105/container_1430424020775_0001_01_000003/container_1430424020775_0001_01_000003/zshen”,
      “ containerExitStatus”:-105,
      “ containerState”:“ COMPLETE”,
      “ nodeHttpAddress”:“ http:// localhost:8042”
    },
    {
      “ containerId”:“ container_1430424020775_0001_01_000004”,
      “ allocatedMB”:1024,
      “ allocatedVCores”:1,
      “ assignedNodeId”:“ localhost:9105”,
      “优先级”:20,
      “ startedTime”:1430424060315,
      “ finishedTime”:1430424068291,
      “ elapsedTime”:7976,
      “ diagnosticsInfo”:“容器被ApplicationMaster杀死。\ n容器根据请求被杀死。退出代码为143 \ n容器退出,退出代码为非零143 \ n”,
      “ logUrl”:“ http://0.0.0.0:8188/applicationhistory/logs/localhost:9105/container_1430424020775_0001_01_000004/container_1430424020775_0001_01_000004/zshen”,
      “ containerExitStatus”:-105,
      “ containerState”:“ COMPLETE”,
      “ nodeHttpAddress”:“ http:// localhost:8042”
    },
    {
      “ containerId”:“ container_1430424020775_0001_01_000002”,
      “ allocatedMB”:1024,
      “ allocatedVCores”:1,
      “ assignedNodeId”:“ localhost:9105”,
      “优先级”:20,
      “ startedTime”:1430424060313,
      “ finishedTime”:1430424067250,
      “ elapsedTime”:6937,
      “ diagnosticsInfo”:“容器被ApplicationMaster杀死。\ n容器根据请求被杀死。退出代码为143 \ n容器退出,退出代码为非零143 \ n”,
      “ logUrl”:“ http://0.0.0.0:8188/applicationhistory/logs/localhost:9105/container_1430424020775_0001_01_000002/container_1430424020775_0001_01_000002/zshen”,
      “ containerExitStatus”:-105,
      “ containerState”:“ COMPLETE”,
      “ nodeHttpAddress”:“ http:// localhost:8042”
    },
    {
      “ containerId”:“ container_1430424020775_0001_01_000001”,
      “ allocatedMB”:2048,
      “ allocatedVCores”:1,
      “ assignedNodeId”:“ localhost:9105”,
      “优先级”:0,
      “ startedTime”:1430424054314,
      “ finishedTime”:1430424079022,
      “ elapsedTime”:24708,
      “ diagnosticsInfo”:“”,
      “ logUrl”:“ http://0.0.0.0:8188/applicationhistory/logs/localhost:9105/container_1430424020775_0001_01_000001/container_1430424020775_0001_01_000001/zshen”,
      “ containerExitStatus”:0,
      “ containerState”:“ COMPLETE”,
      “ nodeHttpAddress”:“ http:// localhost:8042”
    }
  ]
}

XML回应

HTTP请求:

GET http:// localhost:8188 / ws / v1 / applicationhistory / apps / application_1430424020775_0001 / appattempts / appattempt_1430424020775_0001_000001 /容器
接受:application / xml

响应标题:

  HTTP / 1.1 200 OK
  内容类型:application / xml
  内容长度:1428

响应主体:

<?xml版本=“ 1.0”编码=“ UTF-8”独立=“是”?>
<容器>
  <容器>
    <containerId> container_1430424020775_0001_01_000007 </ containerId>
    <allocatedMB> 1024 </ allocatedMB>
    <allocatedVCores> 1 </ allocatedVCores>
    <assignedNodeId>本地主机:9105 </ assignedNodeId>
    <priority> 10 </ priority>
    <startedTime> 1430424068296 </ startedTime>
    <finishedTime> 1430424073006 </ finishedTime>
    <elapsedTime> 4710 </ elapsedTime>
    <diagnosticsInfo>被ApplicationMaster杀死的容器。
      集装箱应要求被杀死。退出代码是143
      容器退出,退出代码为非零143
    </ diagnosticsInfo>
    <logUrl> http://0.0.0.0:8188/applicationhistory/logs/localhost:9105/container_1430424020775_0001_01_000007/container_1430424020775_0001_01_000007/zshen </ logUrl>
    <containerExitStatus> -105 </ containerExitStatus>
    <containerState>完成</ containerState>
    <nodeHttpAddress> http:// localhost:8042 </ nodeHttpAddress>
  </ container>
  <容器>
    <containerId> container_1430424020775_0001_01_000006 </ containerId>
    <allocatedMB> 1024 </ allocatedMB>
    <allocatedVCores> 1 </ allocatedVCores>
    <assignedNodeId>本地主机:9105 </ assignedNodeId>
    <priority> 20 </ priority>
    <startedTime> 1430424060317 </ startedTime>
    <finishedTime> 1430424068293 </ finishedTime>
    <elapsedTime> 7976 </ elapsedTime>
    <diagnosticsInfo>被ApplicationMaster杀死的容器。
      集装箱应要求被杀死。退出代码是143
      容器退出,退出代码为非零143
    </ diagnosticsInfo>
    <logUrl> http://0.0.0.0:8188/applicationhistory/logs/localhost:9105/container_1430424020775_0001_01_000006/container_1430424020775_0001_01_000006/zshen </ logUrl>
    <containerExitStatus> -105 </ containerExitStatus>
    <containerState>完成</ containerState>
    <nodeHttpAddress> http:// localhost:8042 </ nodeHttpAddress>
  </ container>
  <容器>
    <containerId> container_1430424020775_0001_01_000005 </ containerId>
    <allocatedMB> 1024 </ allocatedMB>
    <allocatedVCores> 1 </ allocatedVCores>
    <assignedNodeId>本地主机:9105 </ assignedNodeId>
    <priority> 20 </ priority>
    <startedTime> 1430424060316 </ startedTime>
    <finishedTime> 1430424068294 </ finishedTime>
    <elapsedTime> 7978 </ elapsedTime>
    <diagnosticsInfo>被ApplicationMaster杀死的容器。
      集装箱应要求被杀死。退出代码是143
      容器退出,退出代码为非零143
    </ diagnosticsInfo>
    <logUrl> http://0.0.0.0:8188/applicationhistory/logs/localhost:9105/container_1430424020775_0001_01_000005/container_1430424020775_0001_01_000005/zshen </ logUrl>
    <containerExitStatus> -105 </ containerExitStatus>
    <containerState>完成</ containerState>
    <nodeHttpAddress> http:// localhost:8042 </ nodeHttpAddress>
  </ container>
  <容器>
    <containerId> container_1430424020775_0001_01_000003 </ containerId>
    <allocatedMB> 1024 </ allocatedMB>
    <allocatedVCores> 1 </ allocatedVCores>
    <assignedNodeId>本地主机:9105 </ assignedNodeId>
    <priority> 20 </ priority>
    <startedTime> 1430424060315 </ startedTime>
    <finishedTime> 1430424068289 </ finishedTime>
    <elapsedTime> 7974 </ elapsedTime>
    <diagnosticsInfo>被ApplicationMaster杀死的容器。
      集装箱应要求被杀死。退出代码是143
      容器退出,退出代码为非零143
    </ diagnosticsInfo>
    <logUrl> http://0.0.0.0:8188/applicationhistory/logs/localhost:9105/container_1430424020775_0001_01_000003/container_1430424020775_0001_01_000003/zshen </ logUrl>
    <containerExitStatus> -105 </ containerExitStatus>
    <containerState>完成</ containerState>
    <nodeHttpAddress> http:// localhost:8042 </ nodeHttpAddress>
  </ container>
  <容器>
    <containerId> container_1430424020775_0001_01_000004 </ containerId>
    <allocatedMB> 1024 </ allocatedMB>
    <allocatedVCores> 1 </ allocatedVCores>
    <assignedNodeId>本地主机:9105 </ assignedNodeId>
    <priority> 20 </ priority>
    <startedTime> 1430424060315 </ startedTime>
    <finishedTime> 1430424068291 </ finishedTime>
    <elapsedTime> 7976 </ elapsedTime>
    <diagnosticsInfo>被ApplicationMaster杀死的容器。
      集装箱应要求被杀死。退出代码是143
      容器退出,退出代码为非零143
    </ diagnosticsInfo>
    <logUrl> http://0.0.0.0:8188/applicationhistory/logs/localhost:9105/container_1430424020775_0001_01_000004/container_1430424020775_0001_01_000004/zshen </ logUrl>
    <containerExitStatus> -105 </ containerExitStatus>
    <containerState>完成</ containerState>
    <nodeHttpAddress> http:// localhost:8042 </ nodeHttpAddress>
  </ container>
  <容器>
    <containerId> container_1430424020775_0001_01_000002 </ containerId>
    <allocatedMB> 1024 </ allocatedMB>
    <allocatedVCores> 1 </ allocatedVCores>
    <assignedNodeId>本地主机:9105 </ assignedNodeId>
    <priority> 20 </ priority>
    <startedTime> 1430424060313 </ startedTime>
    <finishedTime> 1430424067250 </ finishedTime>
    <elapsedTime> 6937 </ elapsedTime>
    <diagnosticsInfo>被ApplicationMaster杀死的容器。
      集装箱应要求被杀死。退出代码是143
      容器退出,退出代码为非零143
    </ diagnosticsInfo>
    <logUrl> http://0.0.0.0:8188/applicationhistory/logs/localhost:9105/container_1430424020775_0001_01_000002/container_1430424020775_0001_01_000002/zshen </ logUrl>
    <containerExitStatus> -105 </ containerExitStatus>
    <containerState>完成</ containerState>
    <nodeHttpAddress> http:// localhost:8042 </ nodeHttpAddress>
  </ container>
  <容器>
    <containerId> container_1430424020775_0001_01_000001 </ containerId>
    <allocatedMB> 2048 </ allocatedMB>
    <allocatedVCores> 1 </ allocatedVCores>
    <assignedNodeId>本地主机:9105 </ assignedNodeId>
    <priority> 0 </ priority>
    <startedTime> 1430424054314 </ startedTime>
    <finishedTime> 1430424079022 </ finishedTime>
    <elapsedTime> 24708 </ elapsedTime>
    <diagnosticsInfo> </ diagnosticsInfo>
    <logUrl> http://0.0.0.0:8188/applicationhistory/logs/localhost:9105/container_1430424020775_0001_01_000001/container_1430424020775_0001_01_000001/zshen </ logUrl>
    <containerExitStatus> 0 </ containerExitStatus>
    <containerState>完成</ containerState>
    <nodeHttpAddress> http:// localhost:8042 </ nodeHttpAddress>
  </ container>
</容器>

容器

使用Container API,您可以获得包含有关YARN群集上运行的应用程序的应用程序尝试的特定容器信息的容器资源。

URI:

使用以下URI获取由appid值,appattemptid值和containerid值标识的容器对象。

http(s):// <时间轴服务器http(s)地址:端口> / ws / v1 / applicationhistory / apps / {appid} / appattempts / {appattemptid} / containers / {containerid}

支持的HTTP操作:

得到

支持的查询参数:

没有

容器(Container)对象的元素:

项目 数据类型 描述
containerId 容器编号
containerState 根据ResourceManager的容器状态-有效值是ContainerState枚举的成员:COMPLETE
containerExitStatus 整型 容器出口状态
logUrl 可用于访问容器聚合日志的日志URL
诊断信息 详细的诊断信息
开始时间 容器启动的时间(从纪元开始以毫秒为单位)
完成时间 容器完成的时间(自纪元以来以毫秒为单位)
经过时间 自容器启动以来经过的时间(以毫秒为单位)
分配的MB 整型 分配给容器的内存(MB)
分配的VCore 整型 分配给容器的虚拟核心
优先 整型 容器的优先级
AssignedNodeId 容器的分配节点主机和端口

响应示例:

JSON回应

HTTP请求:

GET http:// localhost:8188 / ws / v1 / applicationhistory / apps / application_1430424020775_0001 / appattempts / appattempt_1430424020775_0001_000001 / containers / container_1430424020775_0001_01_000001

响应标题:

HTTP / 1.1 200 OK
内容类型:application / json
传输编码:分块

响应主体:

{
  “ containerId”:“ container_1430424020775_0001_01_000001”,
  “ allocatedMB”:2048,
  “ allocatedVCores”:1,
  “ assignedNodeId”:“ localhost:9105”,
  “优先级”:0,
  “ startedTime”:1430424054314,
  “ finishedTime”:1430424079022,
  “ elapsedTime”:24708,
  “ diagnosticsInfo”:“”,
  “ logUrl”:“ http://0.0.0.0:8188/applicationhistory/logs/localhost:9105/container_1430424020775_0001_01_000001/container_1430424020775_0001_01_000001/zshen”,
  “ containerExitStatus”:0,
  “ containerState”:“ COMPLETE”,
  “ nodeHttpAddress”:“ http:// localhost:8042”
}

XML回应

HTTP请求:

GET http:// localhost:8188 / ws / v1 / applicationhistory / apps / application_1430424020775_0001 / appattempts / appattempt_1430424020775_0001_000001 / containers / container_1430424020775_0001_01_000001
接受:application / xml

响应标题:

HTTP / 1.1 200 OK
内容类型:application / xml
内容长度:669

响应主体:

<?xml版本=“ 1.0”编码=“ UTF-8”独立=“是”?>
<容器>
  <containerId> container_1430424020775_0001_01_000001 </ containerId>
  <allocatedMB> 2048 </ allocatedMB>
  <allocatedVCores> 1 </ allocatedVCores>
  <assignedNodeId>本地主机:9105 </ assignedNodeId>
  <priority> 0 </ priority>
  <startedTime> 1430424054314 </ startedTime>
  <finishedTime> 1430424079022 </ finishedTime>
  <elapsedTime> 24708 </ elapsedTime>
  <diagnosticsInfo> </ diagnosticsInfo>
  <logUrl> http://0.0.0.0:8188/applicationhistory/logs/localhost:9105/container_1430424020775_0001_01_000001/container_1430424020775_0001_01_000001/zshen </ logUrl>
  <containerExitStatus> 0 </ containerExitStatus>
  <containerState>完成</ containerState>
  <nodeHttpAddress> http:// localhost:8042 </ nodeHttpAddress>
</ container>

响应码

  1. 无法解析域,实体类型,实体ID或类似内容的查询会导致HTTP 404“未找到”响应。
  2. 路径,参数或值无效的请求将导致Bad Request 400响应。
  3. 在安全群集中,当尝试执行调用方没有足够权限的操作时,会生成401(“禁止”)响应。查询某些实体(例如域)时,有一个例外。在此,API故意将拒绝权限的结果降级为空且无根据的响应。这对未经授权的呼叫者隐藏了其他域的详细信息。
  4. 如果时间轴实体PUT操作的内容无效,则此失败将不会导致HTTP错误代码被撤消。将返回状态码200-但是,每个实体的失败实体列表中都会出现一个错误代码,该代码无法添加。

时间轴服务器性能测试工具

强调

时间轴服务器性能测试工具可帮助测量时间轴服务器的写入性能。该测试将启动SimpleEntityWriter映射器或JobHistoryFileReplay映射器,以将时间线实体写入时间线服务器。最后,将测量并打印出每个映射器的事务速率(ops / s)和总事务速率。使用SimpleEntityWriter映射器运行测试还将测量并显示每个映射器的IO速率(KB / s)和总IO速率。

用法

映射器类型说明:

  1. SimpleEntityWriter映射器每个映射器都会将用户指定数量的具有用户指定大小的时间轴实体写入时间轴服务器。SimpleEntityWrite是性能测试工具的默认映射器。
    1. JobHistoryFileReplay映射器每个映射器都在指定目录下重播作业历史文件(jhist文件及其相应的conf.xml都必须存在才能重播。映射器的数量不得超过作业历史文件的数量)。每个映射器将被分配一些作业历史文件以重播。对于每个作业历史记录文件,映射器将对其进行解析以获取jobinfo,然后创建时间轴实体。每个映射器还可以选择一次写入一个或一次创建的所有时间轴实体。

选项:

[-m <maps>]映射器数(默认值:1)
[-v]时间轴服务版本
[-mtype <映射器类型,整数>]
      1.简单实体写映射器(默认)
      2. Jobhistory文件重播映射器
[-s <(KBs)test>]每认沽的KB数(mtype = 1,默认值:1 KB)
[-t]程序包为每个映射器发送迭代(mtype = 1,默认值:100)
[-d <路径>]作业历史记录文件的根路径(mtype = 2)
[-r <重放模式>](mtype = 2)
      1.一口气写一份工作的所有实体(默认)
      2.一次写一个实体

样品运行

运行SimpleEntityWriter测试:

bin / hadoop jar性能Test.jar时间轴性能-m 4 -mtype 1 -s 3 -t 200

SimpleEntityWriter测试的示例输出:

交易速率(每个映射器):20000.0 ops / s
IO速率(每个映射器):60000.0 KB / s
交易速率(总计):80000.0 ops / s
IO速率(总计):240000.0 KB / s

运行JobHistoryFileReplay映射器测试

$ bin / hadoop jar performanceTest.jar时间轴性能-m 2 -mtype 2 -d / testInput -r 2

JobHistoryFileReplay映射器测试的示例输入:

$ bin / hadoop fs -ls / testInput
/testInput/job_1.jhist
/testInput/job_1_conf.xml
/testInput/job_2.jhist
/testInput/job_2_conf.xml

JobHistoryFileReplay测试的示例输出:

交易速率(每个映射器):4000.0 ops / s
IO速率(每个映射器):0.0 KB / s
交易速率(总计):8000.0 ops / s
IO速率(总计):0.0 KB /秒