package com.sequenceiq.yarntest.queue;
import java.util.List;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.mapreduce.JobID;
import org.apache.hadoop.yarn.api.records.QueueInfo;
import org.apache.hadoop.yarn.client.api.YarnClient;
import org.apache.hadoop.yarn.client.api.impl.YarnClientImpl;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.sequenceiq.yarntest.mr.QuasiMonteCarlo;
public class QueueOrchestrator {
private static final Logger LOGGER = LoggerFactory.getLogger(QueueOrchestrator.class);
public JobID submitJobsIntoQueues(String queueName, Path tempDir) throws Exception {
Configuration priorityConf = this.getConfiguration(queueName);
/**
list queue with YarnClient, not so useful
YarnClient yarnClient = new YarnClientImpl();
yarnClient.init(priorityConf);
yarnClient.start();
List<QueueInfo> queues = yarnClient.getAllQueues();
for (QueueInfo queueInfo : queues) {
LOGGER.info("Queue Informations (name, capacity, current capacity): " + queueInfo.getQueueName() + " "+ queueInfo.getCapacity() + " " + queueInfo.getCurrentCapacity());
}
*/
FileSystem fs = FileSystem.get(priorityConf);
try {
// submit MR App to highPriority queue
JobID jobID = QuasiMonteCarlo.submitPiEstimationMRApp("PiEstimation into: " + queueName, 10, 3, tempDir, priorityConf);
return jobID;
} finally {
fs.deleteOnExit(tempDir);
// yarnClient.close();
LOGGER.debug("Deleting temp dir and closign YARN client");
}
}
public Configuration getConfiguration(String queueName) {
Configuration priorityConf = new Configuration();
priorityConf.set("mapreduce.job.queuename", queueName);
/**
* Additional job configuration parameters can be submitted for the job programatically
conf.set(MRJobConfig.MAP_CPU_VCORES, "2");
conf.set(MRJobConfig.MAP_MEMORY_MB, "2048");
conf.set(MRJobConfig.REDUCE_CPU_VCORES, "1");
conf.set(MRJobConfig.REDUCE_MEMORY_MB, "1024");
*/
return priorityConf;
}
}