[ 
https://issues.apache.org/jira/browse/YARN-5585?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15470803#comment-15470803
 ] 

Varun Saxena commented on YARN-5585:
------------------------------------

The best solution for this will be that keys are stored in sorted order in 
Timeline service.
But generic entity in ATSv2 terms can be anything so for us to specify a well 
defined generic behaviour for every entity under the sun would be impossible. 
Only applications which are users of ATSv2 will be sure of what entity ID means 
for them. For Tez, it maybe DAG or Vertex ID, for Spark it maybe task ID and so 
on.

But then as your use case suggests ATSv2 just brushing off requests of users 
may not be very good as it might be useful to fetch even generic entities in 
sorted order for users of ATSv2.

So how about we provide a PUBLIC interface which ATSv2 users like Tez can 
implement to decide how to encode and decode a particular entity type so that 
it is stored in sorted fashion in ATSv2 ? Say something like an 
EntityIDConverter interface with encode function (takes a String and outputs an 
encoded byte array) and decode function (takes byte array and converts into its 
String equivalent).
ATSv2 can have a configuration which contains list of converters against entity 
types. Something like {{<entity type>:<interface impl>, <entity 
type>:<interface impl>...}}
All the collectors and readers can load these implementations if they exist in 
their classpath.
If implementation does not exist, default behavior specified above can be 
adopted. Or we can just carry out a full scan within the scope of entity type.
A DAG ID for instance consists of an AppID and 4 bytes of DAG seq number. So we 
can write an encode function which outputs a 16 bytes byte  array with 8 bytes 
of inverted cluster timestamp in AppID, 4 bytes of inverted sequence number (in 
App ID) and 4 bytes of inverted DAG seq number. This will ensure DAGs' are 
stored in descendingly sorted fashion. Such implementation for instance can be 
provided by Tez.

Will such a solution be acceptable to Tez ?

> [Atsv2] Add a new filter fromId in REST endpoints
> -------------------------------------------------
>
>                 Key: YARN-5585
>                 URL: https://issues.apache.org/jira/browse/YARN-5585
>             Project: Hadoop YARN
>          Issue Type: Sub-task
>          Components: timelinereader
>            Reporter: Rohith Sharma K S
>            Assignee: Rohith Sharma K S
>         Attachments: YARN-5585.v0.patch
>
>
> TimelineReader REST API's provides lot of filters to retrieve the 
> applications. Along with those, it would be good to add new filter i.e fromId 
> so that entities can be retrieved after the fromId. 
> Example : If applications are stored database, app-1 app-2 ... app-10.
> *getApps?limit=5* gives app-1 to app-10. But to retrieve next 5 apps, it is 
> difficult.
> So proposal is to have fromId in the filter like 
> *getApps?limit=5&&fromId=app-5* which gives list of apps from app-6 to 
> app-10. 
> This is very useful for pagination in web UI.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to