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); } }
/// <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); } }
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); }
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); } }
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); } }
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); } }
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); } }
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); } }
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); } }
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); } }
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); } }
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); } }
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); } }
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); } }