Пример #1
0
        protected override void Render(HtmlBlock.Block html)
        {
            string rmweb = $(AMParams.RmWeb);

            Hamlet.DIV <Org.Apache.Hadoop.Yarn.Webapp.Hamlet.Hamlet> nav = html.Div("#nav").H3
                                                                               ("Cluster").Ul().Li().A(Url(rmweb, "cluster", "cluster"), "About").().Li().A(Url
                                                                                                                                                                (rmweb, "cluster", "apps"), "Applications").().Li().A(Url(rmweb, "cluster", "scheduler"
                                                                                                                                                                                                                          ), "Scheduler").().().H3("Application").Ul().Li().A(Url("app/info"), "About").()
                                                                           .Li().A(Url("app"), "Jobs").().();
            if (app.GetJob() != null)
            {
                string         jobid           = MRApps.ToString(app.GetJob().GetID());
                IList <AMInfo> amInfos         = app.GetJob().GetAMInfos();
                AMInfo         thisAmInfo      = amInfos[amInfos.Count - 1];
                string         nodeHttpAddress = thisAmInfo.GetNodeManagerHost() + ":" + thisAmInfo.GetNodeManagerHttpPort
                                                     ();
                nav.H3("Job").Ul().Li().A(Url("job", jobid), "Overview").().Li().A(Url("jobcounters"
                                                                                       , jobid), "Counters").().Li().A(Url("conf", jobid), "Configuration").().Li().A(Url
                                                                                                                                                                          ("tasks", jobid, "m"), "Map tasks").().Li().A(Url("tasks", jobid, "r"), "Reduce tasks"
                                                                                                                                                                                                                        ).().Li().A(".logslink", Url(MRWebAppUtil.GetYARNWebappScheme(), nodeHttpAddress
                                                                                                                                                                                                                                                     , "node", "containerlogs", thisAmInfo.GetContainerId().ToString(), app.GetJob().
                                                                                                                                                                                                                                                     GetUserName()), "AM Logs").().();
                if (app.GetTask() != null)
                {
                    string taskid = MRApps.ToString(app.GetTask().GetID());
                    nav.H3("Task").Ul().Li().A(Url("task", taskid), "Task Overview").().Li().A(Url("taskcounters"
                                                                                                   , taskid), "Counters").().();
                }
            }
            nav.H3("Tools").Ul().Li().A("/conf", "Configuration").().Li().A("/logs", "Local logs"
                                                                            ).().Li().A("/stacks", "Server stacks").().Li().A("/jmx?qry=Hadoop:*", "Server metrics"
                                                                                                                              ).().().();
        }
Пример #2
0
 /*
  * (non-Javadoc)
  * @see org.apache.hadoop.yarn.webapp.view.HtmlBlock#render(org.apache.hadoop.yarn.webapp.view.HtmlBlock.Block)
  */
 protected override void Render(HtmlBlock.Block html)
 {
     Hamlet.DIV <Org.Apache.Hadoop.Yarn.Webapp.Hamlet.Hamlet> nav = html.Div("#nav").H3
                                                                        ("Application").Ul().Li().A(Url("about"), "About").().Li().A(Url("app"), "Jobs")
                                                                    .().();
     if (app.GetJob() != null)
     {
         string jobid = MRApps.ToString(app.GetJob().GetID());
         nav.H3("Job").Ul().Li().A(Url("job", jobid), "Overview").().Li().A(Url("jobcounters"
                                                                                , jobid), "Counters").().Li().A(Url("conf", jobid), "Configuration").().Li().A(Url
                                                                                                                                                                   ("tasks", jobid, "m"), "Map tasks").().Li().A(Url("tasks", jobid, "r"), "Reduce tasks"
                                                                                                                                                                                                                 ).().();
         if (app.GetTask() != null)
         {
             string taskid = MRApps.ToString(app.GetTask().GetID());
             nav.H3("Task").Ul().Li().A(Url("task", taskid), "Task Overview").().Li().A(Url("taskcounters"
                                                                                            , taskid), "Counters").().();
         }
     }
     nav.H3("Tools").Ul().Li().A("/conf", "Configuration").().Li().A("/logs", "Local logs"
                                                                     ).().Li().A("/stacks", "Server stacks").().Li().A("/jmx?qry=Hadoop:*", "Server metrics"
                                                                                                                       ).().().();
 }
Пример #3
0
        private void CreateContainerLocalityTable(HtmlBlock.Block html)
        {
            RMAppAttemptMetrics attemptMetrics = null;
            RMAppAttempt        attempt        = GetRMAppAttempt();

            if (attempt != null)
            {
                attemptMetrics = attempt.GetRMAppAttemptMetrics();
            }
            if (attemptMetrics == null)
            {
                return;
            }
            Hamlet.DIV <Org.Apache.Hadoop.Yarn.Webapp.Hamlet.Hamlet> div = html.Div(JQueryUI.InfoWrap
                                                                                    );
            Hamlet.TABLE <Hamlet.DIV <Org.Apache.Hadoop.Yarn.Webapp.Hamlet.Hamlet> > table = div
                                                                                             .H3("Total Allocated Containers: " + attemptMetrics.GetTotalAllocatedContainers(
                                                                                                     )).H3("Each table cell" + " represents the number of NodeLocal/RackLocal/OffSwitch containers"
                                                                                                           + " satisfied by NodeLocal/RackLocal/OffSwitch resource requests.").Table("#containerLocality"
                                                                                                                                                                                     );
            table.Tr().Th(JQueryUI.Th, string.Empty).Th(JQueryUI.Th, "Node Local Request").Th
                (JQueryUI.Th, "Rack Local Request").Th(JQueryUI.Th, "Off Switch Request").();
            string[] containersType = new string[] { "Num Node Local Containers (satisfied by)"
                                                     , "Num Rack Local Containers (satisfied by)", "Num Off Switch Containers (satisfied by)" };
            bool odd = false;

            for (int i = 0; i < attemptMetrics.GetLocalityStatistics().Length; i++)
            {
                table.Tr((odd = !odd) ? JQueryUI.Odd : JQueryUI.Even).Td(containersType[i]).Td(attemptMetrics
                                                                                               .GetLocalityStatistics()[i][0].ToString()).Td(i == 0 ? string.Empty : attemptMetrics
                                                                                                                                             .GetLocalityStatistics()[i][1].ToString()).Td(i <= 1 ? string.Empty : attemptMetrics
                                                                                                                                                                                           .GetLocalityStatistics()[i][2].ToString()).();
            }
            table.();
            div.();
        }
Пример #4
0
        private void CreateResourceRequestsTable(HtmlBlock.Block html)
        {
            AppInfo app = new AppInfo(rm, rm.GetRMContext().GetRMApps()[this.appAttemptId.GetApplicationId
                                                                            ()], true, WebAppUtils.GetHttpSchemePrefix(conf));
            IList <ResourceRequest> resourceRequests = app.GetResourceRequests();

            if (resourceRequests == null || resourceRequests.IsEmpty())
            {
                return;
            }
            Hamlet.DIV <Org.Apache.Hadoop.Yarn.Webapp.Hamlet.Hamlet> div = html.Div(JQueryUI.InfoWrap
                                                                                    );
            Hamlet.TABLE <Hamlet.DIV <Org.Apache.Hadoop.Yarn.Webapp.Hamlet.Hamlet> > table = div
                                                                                             .H3("Total Outstanding Resource Requests: " + GetTotalResource(resourceRequests)
                                                                                                 ).Table("#ResourceRequests");
            table.Tr().Th(JQueryUI.Th, "Priority").Th(JQueryUI.Th, "ResourceName").Th(JQueryUI
                                                                                      .Th, "Capability").Th(JQueryUI.Th, "NumContainers").Th(JQueryUI.Th, "RelaxLocality"
                                                                                                                                             ).Th(JQueryUI.Th, "NodeLabelExpression").();
            bool odd = false;

            foreach (ResourceRequest request in resourceRequests)
            {
                if (request.GetNumContainers() == 0)
                {
                    continue;
                }
                table.Tr((odd = !odd) ? JQueryUI.Odd : JQueryUI.Even).Td(request.GetPriority().ToString
                                                                             ()).Td(request.GetResourceName()).Td(request.GetCapability().ToString()).Td(request
                                                                                                                                                         .GetNumContainers().ToString()).Td(request.GetRelaxLocality().ToString()).Td(request
                                                                                                                                                                                                                                      .GetNodeLabelExpression() == null ? "N/A" : request.GetNodeLabelExpression()).();
            }
            table.();
            div.();
        }
Пример #5
0
        protected override void Render(HtmlBlock.Block html)
        {
            //Yes this is a hack, but there is no other way to insert
            //CSS in the correct spot
            html.Style(".metrics {margin-bottom:5px}");
            ClusterMetricsInfo clusterMetrics = new ClusterMetricsInfo(this.rm);

            Hamlet.DIV <Org.Apache.Hadoop.Yarn.Webapp.Hamlet.Hamlet> div = html.Div().$class("metrics"
                                                                                             );
            div.H3("Cluster Metrics").Table("#metricsoverview").Thead().$class("ui-widget-header"
                                                                               ).Tr().Th().$class("ui-state-default").("Apps Submitted").().Th().$class("ui-state-default"
                                                                                                                                                        ).("Apps Pending").().Th().$class("ui-state-default").("Apps Running").().Th().$class
                ("ui-state-default").("Apps Completed").().Th().$class("ui-state-default").("Containers Running"
                                                                                            ).().Th().$class("ui-state-default").("Memory Used").().Th().$class("ui-state-default"
                                                                                                                                                                ).("Memory Total").().Th().$class("ui-state-default").("Memory Reserved").().Th(
                ).$class("ui-state-default").("VCores Used").().Th().$class("ui-state-default").
            ("VCores Total").().Th().$class("ui-state-default").("VCores Reserved").().Th().
            $class("ui-state-default").("Active Nodes").().Th().$class("ui-state-default").(
                "Decommissioned Nodes").().Th().$class("ui-state-default").("Lost Nodes").().Th(
                ).$class("ui-state-default").("Unhealthy Nodes").().Th().$class("ui-state-default"
                                                                                ).("Rebooted Nodes").().().().Tbody().$class("ui-widget-content").Tr().Td(clusterMetrics
                                                                                                                                                          .GetAppsSubmitted().ToString()).Td(clusterMetrics.GetAppsPending().ToString()).Td
                (clusterMetrics.GetAppsRunning().ToString()).Td((clusterMetrics.GetAppsCompleted
                                                                     () + clusterMetrics.GetAppsFailed() + clusterMetrics.GetAppsKilled()).ToString()
                                                                ).Td(clusterMetrics.GetContainersAllocated().ToString()).Td(StringUtils.ByteDesc
                                                                                                                                (clusterMetrics.GetAllocatedMB() * BytesInMb)).Td(StringUtils.ByteDesc(clusterMetrics
                                                                                                                                                                                                       .GetTotalMB() * BytesInMb)).Td(StringUtils.ByteDesc(clusterMetrics.GetReservedMB
                                                                                                                                                                                                                                                               () * BytesInMb)).Td(clusterMetrics.GetAllocatedVirtualCores().ToString()).Td(clusterMetrics
                                                                                                                                                                                                                                                                                                                                            .GetTotalVirtualCores().ToString()).Td(clusterMetrics.GetReservedVirtualCores().
                                                                                                                                                                                                                                                                                                                                                                                   ToString()).Td().A(Url("nodes"), clusterMetrics.GetActiveNodes().ToString()).().
            Td().A(Url("nodes/decommissioned"), clusterMetrics.GetDecommissionedNodes().ToString
                       ()).().Td().A(Url("nodes/lost"), clusterMetrics.GetLostNodes().ToString()).().Td
                ().A(Url("nodes/unhealthy"), clusterMetrics.GetUnhealthyNodes().ToString()).().Td
                ().A(Url("nodes/rebooted"), clusterMetrics.GetRebootedNodes().ToString()).().().
            ().();
            string user = Request().GetRemoteUser();

            if (user != null)
            {
                UserMetricsInfo userMetrics = new UserMetricsInfo(this.rm, user);
                if (userMetrics.MetricsAvailable())
                {
                    div.H3("User Metrics for " + user).Table("#usermetricsoverview").Thead().$class("ui-widget-header"
                                                                                                    ).Tr().Th().$class("ui-state-default").("Apps Submitted").().Th().$class("ui-state-default"
                                                                                                                                                                             ).("Apps Pending").().Th().$class("ui-state-default").("Apps Running").().Th().$class
                        ("ui-state-default").("Apps Completed").().Th().$class("ui-state-default").("Containers Running"
                                                                                                    ).().Th().$class("ui-state-default").("Containers Pending").().Th().$class("ui-state-default"
                                                                                                                                                                               ).("Containers Reserved").().Th().$class("ui-state-default").("Memory Used").().
                    Th().$class("ui-state-default").("Memory Pending").().Th().$class("ui-state-default"
                                                                                      ).("Memory Reserved").().Th().$class("ui-state-default").("VCores Used").().Th()
                    .$class("ui-state-default").("VCores Pending").().Th().$class("ui-state-default"
                                                                                  ).("VCores Reserved").().().().Tbody().$class("ui-widget-content").Tr().Td(userMetrics
                                                                                                                                                             .GetAppsSubmitted().ToString()).Td(userMetrics.GetAppsPending().ToString()).Td(userMetrics
                                                                                                                                                                                                                                            .GetAppsRunning().ToString()).Td((userMetrics.GetAppsCompleted() + userMetrics.GetAppsFailed
                                                                                                                                                                                                                                                                                  () + userMetrics.GetAppsKilled()).ToString()).Td(userMetrics.GetRunningContainers
                                                                                                                                                                                                                                                                                                                                       ().ToString()).Td(userMetrics.GetPendingContainers().ToString()).Td(userMetrics.
                                                                                                                                                                                                                                                                                                                                                                                                           GetReservedContainers().ToString()).Td(StringUtils.ByteDesc(userMetrics.GetAllocatedMB
                                                                                                                                                                                                                                                                                                                                                                                                                                                                           () * BytesInMb)).Td(StringUtils.ByteDesc(userMetrics.GetPendingMB() * BytesInMb)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               ).Td(StringUtils.ByteDesc(userMetrics.GetReservedMB() * BytesInMb)).Td(userMetrics
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .GetAllocatedVirtualCores().ToString()).Td(userMetrics.GetPendingVirtualCores().
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 ToString()).Td(userMetrics.GetReservedVirtualCores().ToString()).().().();
                }
            }
            SchedulerInfo schedulerInfo = new SchedulerInfo(this.rm);

            div.H3("Scheduler Metrics").Table("#schedulermetricsoverview").Thead().$class("ui-widget-header"
                                                                                          ).Tr().Th().$class("ui-state-default").("Scheduler Type").().Th().$class("ui-state-default"
                                                                                                                                                                   ).("Scheduling Resource Type").().Th().$class("ui-state-default").("Minimum Allocation"
                                                                                                                                                                                                                                      ).().Th().$class("ui-state-default").("Maximum Allocation").().().().Tbody().$class
                ("ui-widget-content").Tr().Td(schedulerInfo.GetSchedulerType().ToString()).Td(schedulerInfo
                                                                                              .GetSchedulerResourceTypes().ToString()).Td(schedulerInfo.GetMinAllocation().ToString
                                                                                                                                              ()).Td(schedulerInfo.GetMaxAllocation().ToString()).().().();
            div.();
        }