Skip to content

Commit ae93820

Browse files
committed
YARN-11758. [UI2] On the Cluster Metrics page make the Resource Usage by Leaf Queues chart partition-aware
1 parent b6916eb commit ae93820

File tree

2 files changed

+59
-51
lines changed

2 files changed

+59
-51
lines changed

hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/queue-usage-donut-chart.js

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -16,29 +16,36 @@
1616
* limitations under the License.
1717
*/
1818

19-
import BaseUsageDonutChart from 'yarn-ui/components/base-usage-donut-chart';
19+
import DonutChart from 'yarn-ui/components/donut-chart';
2020
import ColorUtils from 'yarn-ui/utils/color-utils';
2121
import HrefAddressUtils from 'yarn-ui/utils/href-address-utils';
2222

23-
export default BaseUsageDonutChart.extend({
23+
export default DonutChart.extend({
2424
colors: d3.scale.category20().range(),
2525

2626
draw: function() {
2727
var usageByQueues = [];
2828
var avail = 100;
2929

30-
this.get("data").forEach(function (queue) {
31-
var v = queue.get("absUsedCapacity");
30+
let partitionFilter = this.partition;
3231

32+
this.get("data").forEach(function (queue) {
3333
if (queue.get("isLeafQueue")) {
34-
if (v > 1e-2) {
35-
usageByQueues.push({
36-
label: queue.get("id"),
37-
link: HrefAddressUtils.getQueueLink(queue.get("id")),
38-
value: v.toFixed(2)
39-
});
34+
let partitionMap = queue.get("partitionMap");
35+
console.log("partitionMap dump: ", partitionMap[partitionFilter]);
36+
let absUsedForPartition = 0;
37+
if(partitionMap[partitionFilter]){
38+
let v = partitionMap[partitionFilter].absoluteUsedCapacity;
39+
40+
if (v > 1e-2) {
41+
usageByQueues.push({
42+
label: queue.get("id"),
43+
link: HrefAddressUtils.getQueueLink(queue.get("id")),
44+
value: v.toFixed(2)
45+
});
4046

41-
avail = avail - v;
47+
avail = avail - v;
48+
}
4249
}
4350
}
4451
});
@@ -47,21 +54,14 @@ export default BaseUsageDonutChart.extend({
4754
return b.value - a.value;
4855
});
4956

50-
usageByQueues = this.mergeLongTails(usageByQueues, 8);
51-
5257
usageByQueues.push({
5358
label: "Available",
5459
value: avail.toFixed(2)
5560
});
5661

57-
this.colors = ColorUtils.getColors(usageByQueues.length, ["others", "good"], true);
62+
this.colors = ColorUtils.getColors(usageByQueues.length, [ "good"], true);
5863

5964
this.renderDonutChart(usageByQueues, this.get("title"), this.get("showLabels"),
6065
this.get("middleLabel"), "100%", "%");
6166
},
62-
63-
didInsertElement: function() {
64-
this.initChart();
65-
this.draw();
66-
},
67-
});
67+
});

hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/cluster-overview.hbs

Lines changed: 39 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -20,39 +20,24 @@
2020

2121
{{#if model}}
2222

23-
<div class="col-md-12 container-fluid">
24-
<div class="row">
25-
<div class="col-lg-6 container-fluid">
26-
<div class="panel panel-default">
27-
<div class="panel-heading">
28-
Cluster Resource Usage By Applications
29-
</div>
30-
<div class="container-fluid donut-chart" id="appusage-donut-chart">
31-
{{app-usage-donut-chart data=model.apps
32-
showLabels=true
33-
parentId="appusage-donut-chart"
34-
ratio=0.5
35-
maxHeight=400}}
36-
</div>
23+
<div class="col-md-12 container-fluid">
24+
<h3>Applications</h3>
25+
<div class="row">
26+
<div class="col-lg-6 container-fluid">
27+
<div class="panel panel-default">
28+
<div class="panel-heading">
29+
Cluster Resource Usage By Applications
3730
</div>
38-
</div>
39-
40-
<div class="col-lg-6 container-fluid">
41-
<div class="panel panel-default">
42-
<div class="panel-heading">
43-
Cluster Resource Usage By Leaf Queues
44-
</div>
45-
<div class="container-fluid donut-chart" id="queueusage-donut-chart">
46-
{{queue-usage-donut-chart data=model.queues
47-
showLabels=true
48-
parentId="queueusage-donut-chart"
49-
ratio=0.5
50-
maxHeight=400}}
51-
</div>
31+
<div class="container-fluid donut-chart" id="appusage-donut-chart">
32+
{{app-usage-donut-chart data=model.apps
33+
showLabels=true
34+
parentId="appusage-donut-chart"
35+
ratio=0.5
36+
maxHeight=500}}
5237
</div>
5338
</div>
5439
</div>
55-
<hr>
40+
</div>
5641

5742
<div class="row">
5843
<div class="col-lg-4 container-fluid">
@@ -88,7 +73,30 @@
8873
</div>
8974
</div>
9075

91-
<hr>
76+
<h3>Partitions</h3>
77+
<div class="row">
78+
{{#each model.queues.firstObject.partitions as | partition index|}}
79+
<div class="col-lg-4 container-fluid">
80+
<div class="panel panel-default">
81+
<div class="panel-heading">
82+
[{{partition}}] Cluster Resource Usage By Leaf Queues
83+
</div>
84+
85+
<div class="container-fluid donut-chart" id="queueusage-donut-chart-{{index}}">
86+
{{queue-usage-donut-chart data=model.queues
87+
showLabels=true
88+
parentIdPrefix="queueusage-donut-chart-"
89+
id=index
90+
ratio=0.5
91+
maxHeight=350
92+
partition=partition}}
93+
</div>
94+
</div>
95+
</div>
96+
{{/each}}
97+
</div>
98+
99+
<h3>Resources</h3>
92100
<div class="row">
93101
<!-- When getAllResourceTypesDonutChart is not null, use it to show per-resource-type usages. Otherwise only show
94102
vcore/memory usage from metrics -->
@@ -154,8 +162,8 @@
154162
</div>
155163
</div>
156164
{{/if}}
157-
158165
</div>
166+
159167
<div class="row">
160168
<div class="col-lg-6 container-fluid">
161169
<div class="panel panel-default">

0 commit comments

Comments
 (0)