Li Lu updated YARN-3087:
    Attachment: YARN-3087-022315.patch

Since this issue is blocking some of us on the aggregator side, I did some 
investigation on this. In this patch I set up a separate HttpServer2 to hold 
the aggregator REST servlet. In this way we can avoid binding two yarn web apps 
inside one NM process. I've also modified the web service a little bit to work 
with HttpServer2.addJerseyResourcePackage(). The whole service now works in the 
same fashion as the NameNodeHttpServer (and NamenodeWebHdfsMethods for detailed 
REST calls). Lastly, I modified our maven file a little bit since HttpServer2 
requires a folder for each launched web server. Comments/suggestions are more 
than welcome. 

> [Aggregator implementation] the REST server (web server) for per-node 
> aggregator does not work if it runs inside node manager
> -----------------------------------------------------------------------------------------------------------------------------
>                 Key: YARN-3087
>                 URL: https://issues.apache.org/jira/browse/YARN-3087
>             Project: Hadoop YARN
>          Issue Type: Sub-task
>          Components: timelineserver
>            Reporter: Sangjin Lee
>            Assignee: Devaraj K
>         Attachments: YARN-3087-022315.patch
> This is related to YARN-3030. YARN-3030 sets up a per-node timeline 
> aggregator and the associated REST server. It runs fine as a standalone 
> process, but does not work if it runs inside the node manager due to possible 
> collisions of servlet mapping.
> Exception:
> {noformat}
> org.apache.hadoop.yarn.webapp.WebAppException: /v2/timeline: controller for 
> v2 not found
>       at org.apache.hadoop.yarn.webapp.Router.resolveDefault(Router.java:232)
>       at org.apache.hadoop.yarn.webapp.Router.resolve(Router.java:140)
>       at org.apache.hadoop.yarn.webapp.Dispatcher.service(Dispatcher.java:134)
>       at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
>       at 
> com.google.inject.servlet.ServletDefinition.doService(ServletDefinition.java:263)
>       at 
> com.google.inject.servlet.ServletDefinition.service(ServletDefinition.java:178)
>       at 
> com.google.inject.servlet.ManagedServletPipeline.service(ManagedServletPipeline.java:91)
>       at 
> com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:62)
>       at 
> com.sun.jersey.spi.container.servlet.ServletContainer.doFilter(ServletContainer.java:900)
>       at 
> com.sun.jersey.spi.container.servlet.ServletContainer.doFilter(ServletContainer.java:834)
>       at 
> com.sun.jersey.spi.container.servlet.ServletContainer.doFilter(ServletContainer.java:795)
> ...
> {noformat}

This message was sent by Atlassian JIRA

Reply via email to