示例#1
0
        public virtual void FinishApp(string user, RMAppState rmAppFinalState)
        {
            switch (rmAppFinalState)
            {
            case RMAppState.Killed:
            {
                appsKilled.Incr();
                break;
            }

            case RMAppState.Failed:
            {
                appsFailed.Incr();
                break;
            }

            default:
            {
                appsCompleted.Incr();
                break;
            }
            }
            Org.Apache.Hadoop.Yarn.Server.Resourcemanager.Scheduler.QueueMetrics userMetrics =
                GetUserMetrics(user);
            if (userMetrics != null)
            {
                userMetrics.FinishApp(user, rmAppFinalState);
            }
            if (parent != null)
            {
                parent.FinishApp(user, rmAppFinalState);
            }
        }
示例#2
0
 /// <summary>Set available resources.</summary>
 /// <remarks>
 /// Set available resources. To be called by scheduler periodically as
 /// resources become available.
 /// </remarks>
 /// <param name="user"/>
 /// <param name="limit">resource limit</param>
 public virtual void SetAvailableResourcesToUser(string user, Resource limit)
 {
     Org.Apache.Hadoop.Yarn.Server.Resourcemanager.Scheduler.QueueMetrics userMetrics =
         GetUserMetrics(user);
     if (userMetrics != null)
     {
         userMetrics.SetAvailableResourcesToQueue(limit);
     }
 }
示例#3
0
        protected internal QueueMetrics(MetricsSystem ms, string queueName, Queue parent,
                                        bool enableUserMetrics, Configuration conf)
        {
            registry       = new MetricsRegistry(RecordInfo);
            this.queueName = queueName;
            this.parent    = parent != null?parent.GetMetrics() : null;

            this.users = enableUserMetrics ? new Dictionary <string, Org.Apache.Hadoop.Yarn.Server.Resourcemanager.Scheduler.QueueMetrics
                                                             >() : null;
            metricsSystem = ms;
            this.conf     = conf;
            runningTime   = BuildBuckets(conf);
        }
示例#4
0
 public virtual void DeactivateApp(string user)
 {
     activeApplications.Decr();
     Org.Apache.Hadoop.Yarn.Server.Resourcemanager.Scheduler.QueueMetrics userMetrics =
         GetUserMetrics(user);
     if (userMetrics != null)
     {
         userMetrics.DeactivateApp(user);
     }
     if (parent != null)
     {
         parent.DeactivateApp(user);
     }
 }
示例#5
0
 public virtual void SubmitAppAttempt(string user)
 {
     appsPending.Incr();
     Org.Apache.Hadoop.Yarn.Server.Resourcemanager.Scheduler.QueueMetrics userMetrics =
         GetUserMetrics(user);
     if (userMetrics != null)
     {
         userMetrics.SubmitAppAttempt(user);
     }
     if (parent != null)
     {
         parent.SubmitAppAttempt(user);
     }
 }
示例#6
0
 public virtual void DecrPendingResources(string user, int containers, Resource res
                                          )
 {
     _decrPendingResources(containers, res);
     Org.Apache.Hadoop.Yarn.Server.Resourcemanager.Scheduler.QueueMetrics userMetrics =
         GetUserMetrics(user);
     if (userMetrics != null)
     {
         userMetrics.DecrPendingResources(user, containers, res);
     }
     if (parent != null)
     {
         parent.DecrPendingResources(user, containers, res);
     }
 }
示例#7
0
 public virtual void UnreserveResource(string user, Resource res)
 {
     reservedContainers.Decr();
     reservedMB.Decr(res.GetMemory());
     reservedVCores.Decr(res.GetVirtualCores());
     Org.Apache.Hadoop.Yarn.Server.Resourcemanager.Scheduler.QueueMetrics userMetrics =
         GetUserMetrics(user);
     if (userMetrics != null)
     {
         userMetrics.UnreserveResource(user, res);
     }
     if (parent != null)
     {
         parent.UnreserveResource(user, res);
     }
 }
示例#8
0
 public virtual void RunAppAttempt(ApplicationId appId, string user)
 {
     runBuckets.Add(appId, Runtime.CurrentTimeMillis());
     appsRunning.Incr();
     appsPending.Decr();
     Org.Apache.Hadoop.Yarn.Server.Resourcemanager.Scheduler.QueueMetrics userMetrics =
         GetUserMetrics(user);
     if (userMetrics != null)
     {
         userMetrics.RunAppAttempt(appId, user);
     }
     if (parent != null)
     {
         parent.RunAppAttempt(appId, user);
     }
 }
示例#9
0
 public virtual void ReleaseResources(string user, int containers, Resource res)
 {
     allocatedContainers.Decr(containers);
     aggregateContainersReleased.Incr(containers);
     allocatedMB.Decr(res.GetMemory() * containers);
     allocatedVCores.Decr(res.GetVirtualCores() * containers);
     Org.Apache.Hadoop.Yarn.Server.Resourcemanager.Scheduler.QueueMetrics userMetrics =
         GetUserMetrics(user);
     if (userMetrics != null)
     {
         userMetrics.ReleaseResources(user, containers, res);
     }
     if (parent != null)
     {
         parent.ReleaseResources(user, containers, res);
     }
 }
示例#10
0
 public virtual void MoveAppTo(AppSchedulingInfo app)
 {
     if (app.IsPending())
     {
         appsPending.Incr();
     }
     else
     {
         appsRunning.Incr();
     }
     Org.Apache.Hadoop.Yarn.Server.Resourcemanager.Scheduler.QueueMetrics userMetrics =
         GetUserMetrics(app.GetUser());
     if (userMetrics != null)
     {
         userMetrics.MoveAppTo(app);
     }
     if (parent != null)
     {
         parent.MoveAppTo(app);
     }
 }
示例#11
0
 public virtual void AllocateResources(string user, int containers, Resource res,
                                       bool decrPending)
 {
     allocatedContainers.Incr(containers);
     aggregateContainersAllocated.Incr(containers);
     allocatedMB.Incr(res.GetMemory() * containers);
     allocatedVCores.Incr(res.GetVirtualCores() * containers);
     if (decrPending)
     {
         _decrPendingResources(containers, res);
     }
     Org.Apache.Hadoop.Yarn.Server.Resourcemanager.Scheduler.QueueMetrics userMetrics =
         GetUserMetrics(user);
     if (userMetrics != null)
     {
         userMetrics.AllocateResources(user, containers, res, decrPending);
     }
     if (parent != null)
     {
         parent.AllocateResources(user, containers, res, decrPending);
     }
 }
示例#12
0
 GetUserMetrics(string userName)
 {
     lock (this)
     {
         if (users == null)
         {
             return(null);
         }
         Org.Apache.Hadoop.Yarn.Server.Resourcemanager.Scheduler.QueueMetrics metrics = users
                                                                                        [userName];
         if (metrics == null)
         {
             metrics = new Org.Apache.Hadoop.Yarn.Server.Resourcemanager.Scheduler.QueueMetrics
                           (metricsSystem, queueName, null, false, conf);
             users[userName] = metrics;
             metricsSystem.Register(SourceName(queueName).Append(",user="******"Metrics for user '" + userName + "' in queue '" + queueName + "'", metrics.
                                    Tag(QueueInfo, queueName).Tag(UserInfo, userName));
         }
         return(metrics);
     }
 }
示例#13
0
 ForQueue(MetricsSystem ms, string queueName, Queue parent, bool enableUserMetrics
          , Configuration conf)
 {
     lock (typeof(QueueMetrics))
     {
         Org.Apache.Hadoop.Yarn.Server.Resourcemanager.Scheduler.QueueMetrics metrics = queueMetrics
                                                                                        [queueName];
         if (metrics == null)
         {
             metrics = new Org.Apache.Hadoop.Yarn.Server.Resourcemanager.Scheduler.QueueMetrics
                           (ms, queueName, parent, enableUserMetrics, conf).Tag(QueueInfo, queueName);
             // Register with the MetricsSystems
             if (ms != null)
             {
                 metrics = ms.Register(SourceName(queueName).ToString(), "Metrics for queue: " + queueName
                                       , metrics);
             }
             queueMetrics[queueName] = metrics;
         }
         return(metrics);
     }
 }
示例#14
0
 public virtual void FinishAppAttempt(ApplicationId appId, bool isPending, string
                                      user)
 {
     runBuckets.Remove(appId);
     if (isPending)
     {
         appsPending.Decr();
     }
     else
     {
         appsRunning.Decr();
     }
     Org.Apache.Hadoop.Yarn.Server.Resourcemanager.Scheduler.QueueMetrics userMetrics =
         GetUserMetrics(user);
     if (userMetrics != null)
     {
         userMetrics.FinishAppAttempt(appId, isPending, user);
     }
     if (parent != null)
     {
         parent.FinishAppAttempt(appId, isPending, user);
     }
 }