[
https://issues.apache.org/jira/browse/YARN-1871?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Wangda Tan updated YARN-1871:
-
Attachment: YARN-1871.demo.patch
Attached a demo patch according to idea #3, (see YARN-1871.demo.patch)
bq. 3. Similar to @AtMostOnce annotation, make the ser-de as a runtime behavior.
The demo patch consists 3 parts,
*1. Changes on record class, (AllocateRequest in this patch)*
Make record class become a non-abstract class, add simple getters/setters
implementation.
And we need know that if is a variable set by user or not. So we consider for
non-primitive fields, null is not set. For primitives, we consider MIN_VALUE is
not set.
*2. Add a demo implementation (not completed) of serialization a record to
Proto type using reflection*
See ProtoSerdeUtils.getProto
*3. Changes in *PBClientImpl using our ser-de utils*
See ApplicationMasterProtocolPBClientImpl.allocate
Looking forward your opinions on this!
We should eliminate writing *PBImpl code in YARN
Key: YARN-1871
URL: https://issues.apache.org/jira/browse/YARN-1871
Project: Hadoop YARN
Issue Type: Improvement
Components: api
Affects Versions: 2.4.0
Reporter: Wangda Tan
Assignee: Wangda Tan
Attachments: YARN-1871.demo.patch
Currently, We need write PBImpl classes one by one. After running find .
-name *PBImpl*.java | xargs wc -l under hadoop source code directory, we
can see, there're more than 25,000 LOC. I think we should improve this, which
will be very helpful for YARN developers to make changes for YARN protocols.
There're only some limited patterns in current *PBImpl,
* Simple types, like string, int32, float.
* List? types
* Map? types
* Enum types
Code generation should be enough to generate such PBImpl classes.
Some other requirements are,
* Leave other related code alone, like service implemention (e.g.
ContainerManagerImpl).
* (If possible) Forward compatibility, developpers can write their own PBImpl
or genereate them.
--
This message was sent by Atlassian JIRA
(v6.2#6252)