通过时间线服务器在YARN中解决了以通用方式存储和检索应用程序的当前和历史信息的问题。它有两个职责:
当前状态
未来的计划
时间轴域为时间轴服务器提供了一个命名空间,允许用户托管多个实体,将它们与其他用户和应用程序隔离。时间轴服务器安全性是在此级别定义的。
“域”主要存储所有者信息,读写ACL信息,创建和修改的时间戳信息。每个域由一个ID标识,该ID在YARN群集中的所有用户之间必须是唯一的。
配置属性 | 描述 |
---|---|
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时间轴状态存储的存储文件名。 |
配置属性 | 描述 |
---|---|
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.address和yarn.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(如果已启用)。该服务可以支持目录中托管的静态网站或捆绑的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>
注意,相同的命令可用于获取有关正在运行的应用程序的相应信息。
开发人员可以通过构造TimelineEntity和 TimelineEvent对象,然后通过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(); }
在Hadoop 2.6和2.7中,错误代码为:
错误代码 | 描述 |
---|---|
1个 | 没有开始时间 |
2 | IOException |
3 | 系统过滤器冲突(使用保留的过滤器密钥) |
4 | 拒绝访问 |
5 | 没有网域 |
6 | 禁止关系 |
将来可能会定义其他错误代码。
注意:以下是更新实体时需要注意的几点。
用户可以通过Web UI访问应用程序的常规历史信息:
http(s):// <时间轴服务器http(s)地址:端口> / applicationhistory
当前仅通过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” }
GET / ws / v1 /时间轴/域?owner = $ OWNER
在JSON编组的TimelineDomains数据结构中返回属于特定用户的域的列表。
该业主必须在未认证的GET来设置。
经身份验证的请求,所有者默认为呼叫者。
PUT / ws / v1 /时间轴/域
对此路径进行序列化的TimelineDomain结构的PUT 会将域添加到指定/当前用户拥有的域列表中。成功的操作将返回状态代码200和不包含任何错误的TimelinePutResponse。
返回描述域的JSON编组的TimelineDomain结构。
如果未找到域,则返回HTTP 404响应。
创建一个新的时间轴域,或覆盖现有的时间轴域。
尝试创建新域时,提交中的ID必须在集群中的所有域中都是唯一的。
尝试更新现有域时,必须设置该域的ID。提交者必须具有适当的权限才能更新域。
提交:TimelineDomain
响应:TimelinePutResponse
检索用户所有域的列表。
如果指定了所有者,则该所有者名称将覆盖呼叫者的名称。
查询参数 | 描述 |
---|---|
所有者 | 要列出的域的所有者 |
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 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,您可以将包含要记录的每个框架信息的实体和事件发布到时间轴服务器。
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 }] }
必填项
实体:type和id。除非实体包含一个或多个事件,否则starttime是必需的。事件:类型和时间戳。
使用时间轴实体列表API,您可以检索实体对象的列表,并按实体的开始时间戳降序排列。实体的开始时间戳可以是您的应用程序指定的时间戳。如果未明确指定,则商店会将其选择为该实体在第一篇文章中收到的事件的最早时间戳。
使用以下URI获取给定的EntityType的所有实体对象。
http(s):// <时间轴服务器http(s)地址:端口> / ws / v1 / timeline / {entityType}
请注意,primaryFilter和secondaryFilters参数的键/值对的值可以具有不同的数据类型,并且匹配对数据类型敏感。用户需要正确设置值的格式。例如,123和“ 123”分别表示整数和字符串。如果该实体的primaryFilter字符串为“ 123”,但参数设置为整数123,则该实体将不匹配。同样,true表示布尔值,而true表示字符串。通常,该值将转换为某种Java类型,这与解析JSON剪辑的jackson库一致。
当您请求时间轴实体列表时,该信息将作为容器对象的集合返回。另请参见时间线实体,以了解时间线实体对象的语法。
项目 | 数据类型 | 描述 |
---|---|---|
实体 | 时间轴实体对象的数组(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以获得由所标识的实体对象的EntityType值和ENTITYID值。
http(s):// <时间轴服务器http(s)地址:端口> / ws / v1 / timeline / {entityType} / {entityId}
另请参见时间线事件列表,以了解时间线事件对象的语法。需要注意的是价值的primaryfilters和活动促销是一个对象而不是字符串。
项目 | 数据类型 | 描述 |
---|---|---|
实体 | 串 | 实体编号 |
实体类型 | 串 | 实体类型 |
相关实体 | 地图 | 相关实体的标识符,这些标识符在entityType映射中进行组织:[entity1,entity2,...] |
大事记 | 清单 | 实体事件 |
主过滤器 | 地图 | 实体的主要过滤器,这些过滤器组织在键映射中:[value1,value2,…] |
其他信息 | 地图 | 实体的其他信息,以key:value的映射组织 |
开始时间 | 长 | 实体的开始时间 |
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获取给定的EntityType的事件对象。
http(s):// <时间轴服务器http(s)地址:端口> / ws / v1 / timeline / {entityType} / events
当您请求时间轴事件列表时,该信息将作为事件对象的集合返回。
项目 | 数据类型 | 描述 |
---|---|---|
大事记 | 时间轴事件对象的数组(JSON) | 时间轴事件对象的集合 |
以下是单个事件对象的元素。需要注意的是价值的eventinfo和活动促销是一个对象而不是字符串。
项目 | 数据类型 | 描述 |
---|---|---|
事件类型 | 串 | 活动类型 |
事件信息 | 地图 | 事件的信息,该信息在key:value映射中进行组织 |
时间戳记 | 长 | 事件的时间戳 |
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访问应用程序的一般历史信息。
使用about API,您可以获得有关资源的时间表,其中包含通用历史记录REST API描述和版本信息。
它本质上是YARN TimelineAbout结构的XML / JSON序列化形式。
项目 | 数据类型 | 描述 |
---|---|---|
关于 | 串 | 关于服务的描述 |
时间线服务版本 | 串 | 时间轴服务版本 |
时间轴服务构建版本 | 串 | 时间轴服务构建版本 |
建立时间轴服务版本 | 串 | 时间轴服务在什么时间建立 |
Hadoop版本 | 串 | Hadoop版本 |
hadoop-build-version | 串 | Hadoop构建版本 |
hadoop版本内置 | 串 | 何时构建Hadoop |
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” }
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操作时,将获得应用程序对象的集合。
状态 -与给定应用程序状态匹配的应用程序,指定为以逗号分隔的列表
finalStatus-应用程序的最终状态-由应用程序本身报告
用户 -用户名
队列 -队列名称
限制 -要返回的应用程序对象总数
startsTimeBegin-开始时间从该时间开始的应用程序,从纪元开始以毫秒为单位指定
startsTimeEnd-开始时间以该时间结束的应用程序,从纪元开始以毫秒为单位指定
finishTimeBegin-结束时间从该时间开始的应用程序,从纪元开始以毫秒为单位指定
finishTimeEnd-结束时间以该时间结束的应用程序,从纪元开始以毫秒为单位指定
applicationTypes-与给定应用程序类型匹配的应用程序,以逗号分隔的列表形式指定
当您请求应用程序列表时,该信息将作为应用程序对象的集合返回。另请参阅应用程序以获取应用程序对象的语法。
项目 | 数据类型 | 描述 |
---|---|---|
应用程式 | 应用程序对象数组(JSON)/零个或多个应用程序对象(XML) | 应用程序对象的集合 |
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”:“” } ] }
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获取由appid值标识的应用程序对象。
http(s):// <时间轴服务器http(s)地址:端口> / ws / v1 / applicationhistory / apps / {appid}
项目 | 数据类型 | 描述 |
---|---|---|
appId | 串 | 应用程序ID |
用户 | 串 | 启动应用程序的用户 |
名称 | 串 | 应用名称 |
类型 | 串 | 申请类型 |
队列 | 串 | 应用程序提交到的队列 |
appState | 串 | 根据ResourceManager的应用程序状态-有效值是YarnApplicationState枚举的成员:FINISHED,FAILED,KILLED |
finalStatus | 串 | 应用程序的最终状态,如果完成了-报告由应用程序本身-有效值为:UNDEFINED,SUCCEEDED,失败,镇静 |
进展 | 浮动 | 报告的应用程序进度百分比。长期的YARN服务可能无法在此处提供有意义的值-或将其用作实际容器数量与所需容器数量的度量 |
trackingUrl | 串 | 应用程序的Web URL(通过RM代理) |
originalTrackingUrl | 串 | 应用程序的实际Web URL |
诊断信息 | 串 | 有关完整应用程序的详细诊断信息 |
开始时间 | 长 | 应用程序启动的时间(从纪元开始以毫秒为单位) |
完成时间 | 长 | 应用程序完成的时间(自纪元以来以毫秒为单位) |
经过时间 | 长 | 自应用程序启动以来经过的时间(以毫秒为单位) |
分配的MB | 整型 | 分配给应用程序运行容器的内存总和(以MB为单位) |
分配的VCore | 整型 | 分配给应用程序运行容器的虚拟核的总和 |
currentAppAttemptId | 串 | 最新的应用尝试ID |
主办 | 串 | ApplicationMaster的主机 |
rpcPort | 整型 | ApplicationMaster的RPC端口;如果未声明IPC服务,则为零 |
applicationTags | 串 | 应用程序标签。 |
非托管应用 | 布尔值 | 应用程序不受管理吗? |
applicationPriority | 整型 | 提交申请的优先权。 |
appNodeLabelExpression | 串 | 节点标签表达式,用于标识默认情况下应在其上运行应用程序容器的节点。 |
amNodeLabelExpression | 串 | 节点标签表达式,用于标识预期在其上运行应用程序的AM容器的节点。 |
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”:“” }
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获取由appid值标识的应用程序的所有尝试对象。
http(s):// <时间轴服务器http(s)地址:端口> / ws / v1 / applicationhistory / apps / {appid} / appattempts
当您请求应用程序尝试列表时,该信息将作为应用程序尝试对象的集合返回。有关应用程序尝试对象的语法,请参见应用程序尝试。
项目 | 数据类型 | 描述 |
---|---|---|
适当的 | 适用对象数组(JSON)/零个或多个应用尝试对象(XML) | 应用程序尝试对象的集合 |
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” } ] }
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获取由appid值和appattemptid值标识的应用程序尝试对象。
http(s):// <时间轴服务器http(s)地址:端口> / ws / v1 / applicationhistory / apps / {appid} / appattempts / {appattemptid}
项目 | 数据类型 | 描述 |
---|---|---|
appAttemptId | 串 | 应用尝试ID |
amContainerId | 串 | ApplicationMaster容器ID |
appAttemptState | 串 | 根据ResourceManager的应用程序尝试状态-有效值是YarnApplicationAttemptState枚举的成员:FINISHED,FAILED,KILLED |
trackingUrl | 串 | 可用于跟踪应用程序的Web URL |
originalTrackingUrl | 串 | 应用程序的实际Web URL |
诊断信息 | 串 | 详细的诊断信息 |
主办 | 串 | ApplicationMaster的主机 |
rpcPort | 整型 | ApplicationMaster的rpc端口 |
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” }
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获取由appid值和appattemptid值标识的应用程序尝试的所有容器对象。
http(s):// <时间轴服务器http(s)地址:端口> / ws / v1 / applicationhistory / apps / {appid} / appattempts / {appattemptid} / containers
当您请求容器列表时,信息将作为容器对象的集合返回。另请参见容器以获取容器对象的语法。
项目 | 数据类型 | 描述 |
---|---|---|
容器 | 容器对象数组(JSON)/零个或多个容器对象(XML) | 容器对象的集合 |
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” } ] }
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获取由appid值,appattemptid值和containerid值标识的容器对象。
http(s):// <时间轴服务器http(s)地址:端口> / ws / v1 / applicationhistory / apps / {appid} / appattempts / {appattemptid} / containers / {containerid}
项目 | 数据类型 | 描述 |
---|---|---|
containerId | 串 | 容器编号 |
containerState | 串 | 根据ResourceManager的容器状态-有效值是ContainerState枚举的成员:COMPLETE |
containerExitStatus | 整型 | 容器出口状态 |
logUrl | 串 | 可用于访问容器聚合日志的日志URL |
诊断信息 | 串 | 详细的诊断信息 |
开始时间 | 长 | 容器启动的时间(从纪元开始以毫秒为单位) |
完成时间 | 长 | 容器完成的时间(自纪元以来以毫秒为单位) |
经过时间 | 长 | 自容器启动以来经过的时间(以毫秒为单位) |
分配的MB | 整型 | 分配给容器的内存(MB) |
分配的VCore | 整型 | 分配给容器的虚拟核心 |
优先 | 整型 | 容器的优先级 |
AssignedNodeId | 串 | 容器的分配节点主机和端口 |
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” }
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>
时间轴服务器性能测试工具可帮助测量时间轴服务器的写入性能。该测试将启动SimpleEntityWriter映射器或JobHistoryFileReplay映射器,以将时间线实体写入时间线服务器。最后,将测量并打印出每个映射器的事务速率(ops / s)和总事务速率。使用SimpleEntityWriter映射器运行测试还将测量并显示每个映射器的IO速率(KB / s)和总IO速率。
映射器类型说明:
选项:
[-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 /秒