美文网首页
ResourceManager web页面

ResourceManager web页面

作者: JX907 | 来源:发表于2019-01-07 09:38 被阅读10次

    Yarn的监控页面在ResourceManager中。

    jetty服务启动过程:

    org.apache.hadoop.yarn.server.resourcemanager.ResourceManager#serviceStart
    org.apache.hadoop.yarn.server.resourcemanager.ResourceManager#startWepApp
    org.apache.hadoop.yarn.webapp.WebApps.Builder#start
    org.apache.hadoop.yarn.webapp.WebApp#setHttpServer
    org.apache.hadoop.yarn.server.resourcemanager.webapp.RMWebServices(页面访问的相应处理类)

    servlet及过滤定义:

    在WebApps#start方法中实例化HttpServer2,并定义Servlet和filter

            HttpServer2 server = builder.build();
    
            for(ServletStruct struct: servlets) {
              server.addServlet(struct.name, struct.spec, struct.clazz);
            }
            for(Map.Entry<String, Object> entry : attributes.entrySet()) {
              server.setAttribute(entry.getKey(), entry.getValue());
            }
            HttpServer2.defineFilter(server.getWebAppContext(), "guice",
              GuiceFilter.class.getName(), null, new String[] { "/*" });
    

    第一个for中成员变量servlets定义:

    private final HashSet<ServletStruct> servlets = new HashSet<ServletStruct>();
    

    ServletStruct类包括servlet的实现类、名称、路径,类定义如下:

    static class ServletStruct {
          public Class<? extends HttpServlet> clazz;
          public String name;
          public String spec;
        }
    

    变量servlets中的内容赋值过程:
    org.apache.hadoop.yarn.server.resourcemanager.ResourceManager#startWepApp
    org.apache.hadoop.yarn.webapp.WebApps.Builder#withServlet

    Resoucemanager#startWepApp中:

     builder.withServlet(ProxyUriUtils.PROXY_SERVLET_NAME,
              ProxyUriUtils.PROXY_PATH_SPEC, WebAppProxyServlet.class);
    

    其中
    ProxyUriUtils.PROXY_SERVLET_NAME="proxy"
    ProxyUriUtils.PROXY_PATH_SPEC="/proxy/*"
    WebAppProxyServlet是Sevlet实现类。

    从上面代码可以看出拦截器的实现类为GuiceFilter,拦截路径为/*,此处并不像NameNode进程中的拦截器定义可以从配置文件中配置实现类。

    其他拦截器定义位置:
    org.apache.hadoop.yarn.webapp.WebApp类实现com.google.inject.AbstractModule,在configure()方法中
    设置拦截器,该拦截器的实现类为RMWebAppFilter

    RMWebApp继承WebApp,其setup方法中bind上面提到的RMWebServices类

    相关文章

      网友评论

          本文标题:ResourceManager web页面

          本文链接:https://www.haomeiwen.com/subject/xdrelqtx.html