[ https://issues.apache.org/jira/browse/YARN-2678?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Steve Loughran updated YARN-2678: --------------------------------- Summary: Improved Yarn Registry service record structure (was: Recommended improvements to Yarn Registry) > Improved Yarn Registry service record structure > ----------------------------------------------- > > Key: YARN-2678 > URL: https://issues.apache.org/jira/browse/YARN-2678 > Project: Hadoop YARN > Issue Type: Sub-task > Components: api, resourcemanager > Affects Versions: 2.6.0 > Reporter: Gour Saha > Assignee: Steve Loughran > Attachments: HADOOP-2678-002.patch, YARN-2678-001.patch, > YARN-2678-003.patch, YARN-2678-006.patch, YARN-2678-007.patch, > YARN-2678-008.patch, yarnregistry.pdf > > > In the process of binding to Slider AM from Slider agent python code here are > some of the items I stumbled upon and would recommend as improvements. > This is how the Slider's registry looks today - > {noformat} > jsonservicerec{ > "description" : "Slider Application Master", > "external" : [ { > "api" : "org.apache.slider.appmaster", > "addressType" : "host/port", > "protocolType" : "hadoop/protobuf", > "addresses" : [ [ "c6408.ambari.apache.org", "34837" ] ] > }, { > "api" : "org.apache.http.UI", > "addressType" : "uri", > "protocolType" : "webui", > "addresses" : [ [ "http://c6408.ambari.apache.org:43314" ] ] > }, { > "api" : "org.apache.slider.management", > "addressType" : "uri", > "protocolType" : "REST", > "addresses" : [ [ > "http://c6408.ambari.apache.org:43314/ws/v1/slider/mgmt" ] ] > }, { > "api" : "org.apache.slider.publisher", > "addressType" : "uri", > "protocolType" : "REST", > "addresses" : [ [ > "http://c6408.ambari.apache.org:43314/ws/v1/slider/publisher" ] ] > }, { > "api" : "org.apache.slider.registry", > "addressType" : "uri", > "protocolType" : "REST", > "addresses" : [ [ > "http://c6408.ambari.apache.org:43314/ws/v1/slider/registry" ] ] > }, { > "api" : "org.apache.slider.publisher.configurations", > "addressType" : "uri", > "protocolType" : "REST", > "addresses" : [ [ > "http://c6408.ambari.apache.org:43314/ws/v1/slider/publisher/slider" ] ] > } ], > "internal" : [ { > "api" : "org.apache.slider.agents.secure", > "addressType" : "uri", > "protocolType" : "REST", > "addresses" : [ [ > "https://c6408.ambari.apache.org:46958/ws/v1/slider/agents" ] ] > }, { > "api" : "org.apache.slider.agents.oneway", > "addressType" : "uri", > "protocolType" : "REST", > "addresses" : [ [ > "https://c6408.ambari.apache.org:57513/ws/v1/slider/agents" ] ] > } ], > "yarn:persistence" : "application", > "yarn:id" : "application_1412974695267_0015" > } > {noformat} > Recommendations: > 1. I would suggest to either remove the string > {color:red}jsonservicerec{color} or if it is desirable to have a non-null > data at all times then loop the string into the json structure as a top-level > attribute to ensure that the registry data is always a valid json document. > 2. The {color:red}addresses{color} attribute is currently a list of list. I > would recommend to convert it to a list of dictionary objects. In the > dictionary object it would be nice to have the host and port portions of > objects of addressType "uri" as separate key-value pairs to avoid parsing on > the client side. The URI should also be retained as a key say "uri" to avoid > clients trying to generate it by concatenating host, port, resource-path, > etc. Here is a proposed structure - > {noformat} > { > ... > "internal" : [ { > "api" : "org.apache.slider.agents.secure", > "addressType" : "uri", > "protocolType" : "REST", > "addresses" : [ > { "uri" : "https://c6408.ambari.apache.org:46958/ws/v1/slider/agents", > "host" : "c6408.ambari.apache.org", > "port": "46958" > } > ] > } > ], > } > {noformat} -- This message was sent by Atlassian JIRA (v6.3.4#6332)