Package org.apache.hadoop.mapred

Source Code of org.apache.hadoop.mapred.MesosScheduler

package org.apache.hadoop.mapred;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

import mesos.MesosSchedulerDriver;
import mesos.SchedulerDriver;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.mapreduce.server.jobtracker.TaskTracker;

public class MesosScheduler extends TaskScheduler {
  static {
    System.loadLibrary("mesos");
  }
 
  public static final Log LOG =
    LogFactory.getLog(MesosScheduler.class);
 
  private boolean running = false;
  private FrameworkScheduler frameworkScheduler;
  private SchedulerDriver driver;
  JobTracker jobTracker;

  private EagerTaskInitializationListener eagerInitListener;

  public MesosScheduler() {
  }
 
  @Override
  public void start() throws IOException {
    try {
      LOG.info("Starting MesosScheduler");
      jobTracker = (JobTracker) super.taskTrackerManager;
     
      Configuration conf = getConf();
      String master = conf.get("mapred.mesos.master", "local");
     
      this.eagerInitListener = new EagerTaskInitializationListener(conf);
      eagerInitListener.setTaskTrackerManager(taskTrackerManager);
      eagerInitListener.start();
      taskTrackerManager.addJobInProgressListener(eagerInitListener);
     
      frameworkScheduler = new FrameworkScheduler(this);
      driver = new MesosSchedulerDriver(frameworkScheduler, master);
     
      driver.start();
    } catch (Exception e) {
      // If the MesosScheduler can't be loaded, the JT won't be useful at all,
      // so crash it now so that the user notices.
      LOG.fatal("Failed to start MesosScheduler", e);
      // TODO: Use System.exit(1) instead of RuntimeException?
      throw new RuntimeException("Failed to start MesosScheduler", e);
    }
  }

  @Override
  public void terminate() throws IOException {
    try {
      if (running) {
        LOG.info("Stopping MesosScheduler");
        driver.stop();
        frameworkScheduler.cleanUp();
      }
      if (eagerInitListener != null) {
        taskTrackerManager.removeJobInProgressListener(eagerInitListener);
      }
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
 
  @Override
  public List<Task> assignTasks(TaskTracker taskTracker) throws IOException {
    return frameworkScheduler.assignTasks(taskTracker);
  }

  @Override
  public Collection<JobInProgress> getJobs(String queueName) {
    // TODO Actually return some jobs
    ArrayList<JobInProgress> list = new ArrayList<JobInProgress>();
    return list;
  }

}
TOP

Related Classes of org.apache.hadoop.mapred.MesosScheduler

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.