JobQueueClient.java
上传用户:quxuerui
上传日期:2018-01-08
资源大小:41811k
文件大小:5k
- /**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- package org.apache.hadoop.mapred;
- import java.io.IOException;
- import org.apache.hadoop.conf.Configured;
- import org.apache.hadoop.util.Tool;
- import org.apache.hadoop.util.ToolRunner;
- /**
- * <code>JobQueueClient</code> is interface provided to the user in order
- * to get JobQueue related information from the {@link JobTracker}
- *
- * It provides the facility to list the JobQueues present and ability to
- * view the list of jobs within a specific JobQueue
- *
- **/
- class JobQueueClient extends Configured implements Tool {
-
- JobClient jc;
-
- public JobQueueClient() {
- }
-
- public JobQueueClient(JobConf conf) throws IOException {
- setConf(conf);
- }
-
- private void init(JobConf conf) throws IOException {
- setConf(conf);
- jc = new JobClient(conf);
- }
-
- @Override
- public int run(String[] argv) throws Exception {
- int exitcode = -1;
-
- if(argv.length < 1){
- displayUsage("");
- return exitcode;
- }
- String cmd = argv[0];
- boolean displayQueueList = false;
- boolean displayQueueInfoWithJobs = false;
- boolean displayQueueInfoWithoutJobs = false;
-
- if("-list".equals(cmd)){
- displayQueueList = true;
- }else if("-info".equals(cmd)){
- if(argv.length == 2 && !(argv[1].equals("-showJobs"))) {
- displayQueueInfoWithoutJobs = true;
- } else if(argv.length == 3){
- if(argv[2].equals("-showJobs")){
- displayQueueInfoWithJobs = true;
- }else {
- displayUsage(cmd);
- return exitcode;
- }
- }else {
- displayUsage(cmd);
- return exitcode;
- }
- } else {
- displayUsage(cmd);
- return exitcode;
- }
- JobConf conf = new JobConf(getConf());
- init(conf);
- if (displayQueueList) {
- displayQueueList();
- exitcode = 0;
- } else if (displayQueueInfoWithoutJobs){
- displayQueueInfo(argv[1],false);
- exitcode = 0;
- } else if (displayQueueInfoWithJobs) {
- displayQueueInfo(argv[1],true);
- exitcode = 0;
- }
-
- return exitcode;
- }
-
- /**
- * Method used to display information pertaining to a Single JobQueue
- * registered with the {@link QueueManager}. Display of the Jobs is
- * determine by the boolean
- *
- * @throws IOException
- */
- private void displayQueueInfo(String queue, boolean showJobs) throws IOException {
- JobQueueInfo schedInfo = jc.getQueueInfo(queue);
- if (schedInfo == null) {
- System.out.printf("Queue Name : %s has no scheduling information n", queue);
- } else {
- System.out.printf("Queue Name : %s n", schedInfo.getQueueName());
- System.out.printf("Scheduling Info : %s n",schedInfo.getSchedulingInfo());
- }
- if (showJobs) {
- System.out.printf("Job Listn");
- JobStatus[] jobs = jc.getJobsFromQueue(queue);
- if (jobs == null)
- jobs = new JobStatus[0];
- jc.displayJobList(jobs);
- }
- }
- /**
- * Method used to display the list of the JobQueues registered
- * with the {@link QueueManager}
- *
- * @throws IOException
- */
- private void displayQueueList() throws IOException {
- JobQueueInfo[] queues = jc.getQueues();
- for (JobQueueInfo queue : queues) {
- String schedInfo = queue.getSchedulingInfo();
- if(schedInfo.trim().equals("")){
- schedInfo = "N/A";
- }
- System.out.printf("Queue Name : %s n", queue.getQueueName());
- System.out.printf("Scheduling Info : %s n",queue.getSchedulingInfo());
- }
- }
- private void displayUsage(String cmd) {
- String prefix = "Usage: JobQueueClient ";
- if ("-queueinfo".equals(cmd)){
- System.err.println(prefix + "[" + cmd + "<job-queue-name> [-showJobs]]");
- }else {
- System.err.printf(prefix + "<command> <args>n");
- System.err.printf("t[-list]n");
- System.err.printf("t[-info <job-queue-name> [-showJobs]]nn");
- ToolRunner.printGenericCommandUsage(System.out);
- }
- }
- public static void main(String[] argv) throws Exception {
- int res = ToolRunner.run(new JobQueueClient(), argv);
- System.exit(res);
- }
-
- }