Skip to content

Commit 16991d6

Browse files
committed
YARN-11484. [Federation] Router Supports Yarn Client CLI Cmds.
1 parent 5f47f09 commit 16991d6

File tree

6 files changed

+188
-4
lines changed

6 files changed

+188
-4
lines changed

hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/QueueInfo.java

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -340,4 +340,57 @@ public abstract void setQueueConfigurations(
340340
@Unstable
341341
public abstract void setIntraQueuePreemptionDisabled(
342342
boolean intraQueuePreemptionDisabled);
343+
344+
/**
345+
* Get Scheduler type.
346+
*
347+
* @return SchedulerType.
348+
*/
349+
@Public
350+
@Stable
351+
public abstract String getSchedulerType();
352+
353+
@Private
354+
@Unstable
355+
public abstract void setSchedulerType(String schedulerType);
356+
357+
@Public
358+
@Stable
359+
public abstract String getMinResource();
360+
361+
@Private
362+
@Unstable
363+
public abstract void setMinResource(String minResource);
364+
365+
@Public
366+
@Stable
367+
public abstract String getMaxResource();
368+
369+
@Private
370+
@Unstable
371+
public abstract void setMaxResource(String maxResource);
372+
373+
@Public
374+
@Stable
375+
public abstract String getReservedResource();
376+
377+
@Private
378+
@Unstable
379+
public abstract void setReservedResource(String reservedResource);
380+
381+
@Public
382+
@Stable
383+
public abstract String getSteadyFairShare();
384+
385+
@Private
386+
@Unstable
387+
public abstract void setSteadyFairShare(String fairShare);
388+
389+
@Public
390+
@Stable
391+
public abstract String getInstantaneousFairShare();
392+
393+
@Private
394+
@Unstable
395+
public abstract void setInstantaneousFairShare(String fairShare);
343396
}

hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/proto/yarn_protos.proto

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -636,6 +636,12 @@ message QueueInfoProto {
636636
optional float weight = 14;
637637
optional string queuePath = 15;
638638
optional int32 maxParallelApps = 16;
639+
optional string schedulerType = 17;
640+
optional string minResource = 18;
641+
optional string maxResource = 19;
642+
optional string reservedResource = 20;
643+
optional string steadyFairShare = 21;
644+
optional string instantaneousFairShare = 22;
639645
}
640646

641647
message QueueConfigurationsProto {

hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/QueueCLI.java

Lines changed: 47 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
import org.apache.commons.cli.HelpFormatter;
3333
import org.apache.commons.cli.MissingArgumentException;
3434
import org.apache.commons.cli.Options;
35+
import org.apache.commons.lang3.StringUtils;
3536
import org.apache.hadoop.classification.InterfaceAudience.Private;
3637
import org.apache.hadoop.classification.InterfaceStability.Unstable;
3738
import org.apache.hadoop.util.ToolRunner;
@@ -174,6 +175,49 @@ private int listChildQueues(String parentQueueName) throws IOException, YarnExce
174175
}
175176

176177
private void printQueueInfo(PrintWriter writer, QueueInfo queueInfo) {
178+
String schedulerType = queueInfo.getSchedulerType();
179+
180+
if (StringUtils.equals("FairScheduler", schedulerType)) {
181+
printFairSchedulerQueue(writer, queueInfo);
182+
return;
183+
}
184+
185+
if (StringUtils.equals("CapacityScheduler", schedulerType)) {
186+
printCapacitySchedulerQueue(writer, queueInfo);
187+
return;
188+
}
189+
}
190+
191+
private void printFairSchedulerQueue(PrintWriter writer, QueueInfo queueInfo) {
192+
writer.print("Scheduler Name : ");
193+
writer.println(queueInfo.getSchedulerType());
194+
writer.print("Queue Name : ");
195+
writer.println(queueInfo.getQueueName());
196+
writer.print("\tWeight : ");
197+
DecimalFormat df = new DecimalFormat("#.00");
198+
writer.println(df.format(queueInfo.getWeight()));
199+
writer.print("\tState : ");
200+
writer.println(queueInfo.getQueueState());
201+
writer.println("\tMinResource : ");
202+
writer.print(queueInfo.getMinResource());
203+
writer.println("\tMaxResource : ");
204+
writer.print(queueInfo.getMaxResource());
205+
writer.println("\tReservedResource : ");
206+
writer.print(queueInfo.getReservedResource());
207+
writer.println("\tSteadyFairShare : ");
208+
writer.print(queueInfo.getSteadyFairShare());
209+
writer.println("\tInstantaneousFairShare : ");
210+
writer.print(queueInfo.getSteadyFairShare());
211+
Boolean queuePreemption = queueInfo.getPreemptionDisabled();
212+
if (queuePreemption != null) {
213+
writer.println("\tqueue Preemption : ");
214+
writer.print(queuePreemption ? "disabled" : "enabled");
215+
}
216+
}
217+
218+
private void printCapacitySchedulerQueue(PrintWriter writer, QueueInfo queueInfo) {
219+
writer.print("Scheduler Name : ");
220+
writer.println(queueInfo.getSchedulerType());
177221
writer.print("Queue Name : ");
178222
writer.println(queueInfo.getQueueName());
179223
writer.print("Queue Path : ");
@@ -195,8 +239,8 @@ private void printQueueInfo(PrintWriter writer, QueueInfo queueInfo) {
195239
writer.print("\tDefault Node Label expression : ");
196240
String nodeLabelExpression = queueInfo.getDefaultNodeLabelExpression();
197241
nodeLabelExpression =
198-
(nodeLabelExpression == null || nodeLabelExpression.trim().isEmpty())
199-
? NodeLabel.DEFAULT_NODE_LABEL_PARTITION : nodeLabelExpression;
242+
(nodeLabelExpression == null || nodeLabelExpression.trim().isEmpty())
243+
? NodeLabel.DEFAULT_NODE_LABEL_PARTITION : nodeLabelExpression;
200244
writer.println(nodeLabelExpression);
201245

202246
Set<String> nodeLabels = queueInfo.getAccessibleNodeLabels();
@@ -208,7 +252,7 @@ private void printQueueInfo(PrintWriter writer, QueueInfo queueInfo) {
208252
}
209253
labelList.append(nodeLabel);
210254
}
211-
writer.println(labelList.toString());
255+
writer.println(labelList);
212256

213257
Boolean preemptStatus = queueInfo.getPreemptionDisabled();
214258
if (preemptStatus != null) {

hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/QueueInfoPBImpl.java

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -553,4 +553,76 @@ public void setIntraQueuePreemptionDisabled(
553553
maybeInitBuilder();
554554
builder.setIntraQueuePreemptionDisabled(intraQueuePreemptionDisabled);
555555
}
556+
557+
@Override
558+
public String getSchedulerType() {
559+
QueueInfoProtoOrBuilder p = viaProto ? proto : builder;
560+
return (p.hasSchedulerType()) ? p.getSchedulerType() : null;
561+
}
562+
563+
@Override
564+
public void setSchedulerType(String schedulerType) {
565+
maybeInitBuilder();
566+
builder.setSchedulerType(schedulerType);
567+
}
568+
569+
@Override
570+
public String getMinResource() {
571+
QueueInfoProtoOrBuilder p = viaProto ? proto : builder;
572+
return (p.hasMinResource()) ? p.getMinResource() : null;
573+
}
574+
575+
@Override
576+
public void setMinResource(String minResource) {
577+
maybeInitBuilder();
578+
builder.setMinResource(minResource);
579+
}
580+
581+
@Override
582+
public String getMaxResource() {
583+
QueueInfoProtoOrBuilder p = viaProto ? proto : builder;
584+
return (p.hasMaxResource()) ? p.getMaxResource() : null;
585+
}
586+
587+
@Override
588+
public void setMaxResource(String maxResource) {
589+
maybeInitBuilder();
590+
builder.setMaxResource(maxResource);
591+
}
592+
593+
@Override
594+
public String getReservedResource() {
595+
QueueInfoProtoOrBuilder p = viaProto ? proto : builder;
596+
return (p.hasReservedResource()) ? p.getReservedResource() : null;
597+
}
598+
599+
@Override
600+
public void setReservedResource(String reservedResource) {
601+
maybeInitBuilder();
602+
builder.setReservedResource(reservedResource);
603+
}
604+
605+
@Override
606+
public String getSteadyFairShare() {
607+
QueueInfoProtoOrBuilder p = viaProto ? proto : builder;
608+
return (p.hasSteadyFairShare()) ? p.getSteadyFairShare() : null;
609+
}
610+
611+
@Override
612+
public void setSteadyFairShare(String fairShare) {
613+
maybeInitBuilder();
614+
builder.setSteadyFairShare(fairShare);
615+
}
616+
617+
@Override
618+
public String getInstantaneousFairShare() {
619+
QueueInfoProtoOrBuilder p = viaProto ? proto : builder;
620+
return (p.hasInstantaneousFairShare()) ? p.getInstantaneousFairShare() : null;
621+
}
622+
623+
@Override
624+
public void setInstantaneousFairShare(String fairShare) {
625+
maybeInitBuilder();
626+
builder.setInstantaneousFairShare(fairShare);
627+
}
556628
}

hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/CSQueueInfoProvider.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ private CSQueueInfoProvider() {
3939

4040
public static QueueInfo getQueueInfo(AbstractCSQueue csQueue) {
4141
QueueInfo queueInfo = RECORD_FACTORY.newRecordInstance(QueueInfo.class);
42+
queueInfo.setSchedulerType("CapacityScheduler");
4243
queueInfo.setQueueName(csQueue.getQueuePathObject().getLeafName());
4344
queueInfo.setQueuePath(csQueue.getQueuePathObject().getFullPath());
4445
queueInfo.setAccessibleNodeLabels(csQueue.getAccessibleNodeLabels());

hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/FSQueue.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -234,6 +234,7 @@ public Priority getPriority() {
234234
@Override
235235
public QueueInfo getQueueInfo(boolean includeChildQueues, boolean recursive) {
236236
QueueInfo queueInfo = recordFactory.newRecordInstance(QueueInfo.class);
237+
queueInfo.setSchedulerType("FairScheduler");
237238
queueInfo.setQueueName(getQueueName());
238239

239240
if (scheduler.getClusterResource().getMemorySize() == 0) {
@@ -250,7 +251,14 @@ public QueueInfo getQueueInfo(boolean includeChildQueues, boolean recursive) {
250251
getFairShare().getMemorySize());
251252
}
252253

253-
ArrayList<QueueInfo> childQueueInfos = new ArrayList<QueueInfo>();
254+
queueInfo.setWeight(getWeight());
255+
queueInfo.setMaxResource(getMaxShare().toString());
256+
queueInfo.setMinResource(getMinShare().toString());
257+
queueInfo.setSteadyFairShare(getSteadyFairShare().toString());
258+
queueInfo.setInstantaneousFairShare(getFairShare().toString());
259+
queueInfo.setPreemptionDisabled(isPreemptable());
260+
261+
ArrayList<QueueInfo> childQueueInfos = new ArrayList<>();
254262
if (includeChildQueues) {
255263
Collection<FSQueue> childQueues = getChildQueues();
256264
for (FSQueue child : childQueues) {

0 commit comments

Comments
 (0)