/** * @return Mesos Protos FrameworkInfo. */ public Protos.FrameworkInfo getFrameworkInfo() throws Exception { final int frameworkFailoverTimeout = 0; Protos.FrameworkInfo.Builder frameworkBuilder = Protos.FrameworkInfo.newBuilder() .setName(IGNITE_FRAMEWORK_NAME) .setUser(getUser()) .setRole(getRole()) .setFailoverTimeout(frameworkFailoverTimeout); if (System.getenv(MESOS_CHECKPOINT) != null) { log.info("Enabling checkpoint for the framework"); frameworkBuilder.setCheckpoint(true); } if (System.getenv(MESOS_AUTHENTICATE) != null) frameworkBuilder.setPrincipal(System.getenv(DEFAULT_PRINCIPAL)); else frameworkBuilder.setPrincipal("ignite-framework-java"); return frameworkBuilder.build(); }
/** * Create the Mesos scheduler driver based on this configuration. * @param scheduler the scheduler to use. * @param implicitAcknowledgements whether to configure the driver for implicit acknowledgements. * @return a scheduler driver. */ public SchedulerDriver createDriver(Scheduler scheduler, boolean implicitAcknowledgements) { MesosSchedulerDriver schedulerDriver; if (this.credential().isDefined()) { schedulerDriver = new MesosSchedulerDriver(scheduler, frameworkInfo.build(), this.masterUrl(), implicitAcknowledgements, this.credential().get().build()); } else { schedulerDriver = new MesosSchedulerDriver(scheduler, frameworkInfo.build(), this.masterUrl(), implicitAcknowledgements); } return schedulerDriver; }
private MesosSchedulerDriver createMesosDriver() throws IOException { MesosSchedulerDriver driver; Credential credential; FrameworkInfo.Builder finfo = createFrameworkBuilder(); LOG.info(String.format("Registering framework with role '%s'", finfo.getRole())); if ((credential = getCredential(finfo)) != null) { driver = new MesosSchedulerDriver(_mesosScheduler, finfo.build(), (String) mesosStormConf.get(CONF_MASTER_URL), credential); } else { driver = new MesosSchedulerDriver(_mesosScheduler, finfo.build(), (String) mesosStormConf.get(CONF_MASTER_URL)); } return driver; }
.setRole(conf.get("mapred.mesos.role", "*")) .setName("Hadoop: (RPC port: " + jobTracker.port + "," + " WebUI port: " + jobTracker.infoPort + ")").build();
.setCheckpoint(mesosCloud.isCheckpoint()) .setWebuiUrl(webUrl != null ? webUrl : "") .build();
return fwkInfoBuilder.build();
final Protos.FrameworkInfo frameworkInfo = builder.build();
.build() .build();
private void start() { try { FrameworkInfo frameworkInfo = FrameworkInfo.newBuilder() .setUser("") // Let Mesos fill in the user. .setCheckpoint(conf.getBoolean("bsp.master.port", false)) .setRole(conf.get("hama.mesos.role", "*")) .setName( "Hama: (Master Port: " + conf.get("bsp.groom.rpc.port") + "," + " WebUI port: " + conf.get("bsp.http.groomserver.port") + ")").build(); String master = conf.get("hama.mesos.master", "local"); driver = new MesosSchedulerDriver(this, frameworkInfo, master); driver.start(); } catch (Exception e) { // If the MesosScheduler can't be loaded, the JobTracker won't be useful // at all, so crash it now so that the user notices. LOG.fatal("Failed to start MesosScheduler", e); System.exit(1); } }
@Inject REEFScheduler(final REEFEventHandlers reefEventHandlers, final MesosRemoteManager mesosRemoteManager, final REEFExecutors executors, final REEFFileNames fileNames, final EStage<SchedulerDriver> schedulerDriverEStage, final ClasspathProvider classpath, @Parameter(JobIdentifier.class) final String jobIdentifier, @Parameter(MesosMasterIp.class) final String masterIp, @Parameter(MesosSlavePort.class) final int slavePort, @Parameter(JobSubmissionDirectoryPrefix.class) final String jobSubmissionDirectoryPrefix) { this.mesosRemoteManager = mesosRemoteManager; this.reefEventHandlers = reefEventHandlers; this.executors = executors; this.fileNames = fileNames; this.jobSubmissionDirectoryPrefix = jobSubmissionDirectoryPrefix; this.reefTarUri = getReefTarUri(jobIdentifier); this.classpath = classpath; this.schedulerDriverEStage = schedulerDriverEStage; final Protos.FrameworkInfo frameworkInfo = Protos.FrameworkInfo.newBuilder() .setUser("") .setName(REEF_JOB_NAME_PREFIX + jobIdentifier) .build(); this.mesosMaster = new MesosSchedulerDriver(this, frameworkInfo, masterIp); this.mesosSlavePort = slavePort; }
/** * <pre> * See the comments below on 'framework_id' on the semantics for * 'framework_info.id'. * </pre> * * <code>required .mesos.FrameworkInfo framework_info = 1;</code> */ public Builder setFrameworkInfo( org.apache.mesos.Protos.FrameworkInfo.Builder builderForValue) { if (frameworkInfoBuilder_ == null) { frameworkInfo_ = builderForValue.build(); onChanged(); } else { frameworkInfoBuilder_.setMessage(builderForValue.build()); } bitField0_ |= 0x00000001; return this; } /**
private SchedulerDriver getSchedulerDriver(final TaskScheduler taskScheduler, final JobEventBus jobEventBus, final FrameworkIDService frameworkIDService) { Optional<String> frameworkIDOptional = frameworkIDService.fetch(); Protos.FrameworkInfo.Builder builder = Protos.FrameworkInfo.newBuilder(); if (frameworkIDOptional.isPresent()) { builder.setId(Protos.FrameworkID.newBuilder().setValue(frameworkIDOptional.get()).build()); } Optional<String> role = env.getMesosRole(); String frameworkName = MesosConfiguration.FRAMEWORK_NAME; if (role.isPresent()) { builder.setRole(role.get()); frameworkName += "-" + role.get(); } builder.addCapabilitiesBuilder().setType(Protos.FrameworkInfo.Capability.Type.PARTITION_AWARE); MesosConfiguration mesosConfig = env.getMesosConfiguration(); Protos.FrameworkInfo frameworkInfo = builder.setUser(mesosConfig.getUser()).setName(frameworkName) .setHostname(mesosConfig.getHostname()).setFailoverTimeout(MesosConfiguration.FRAMEWORK_FAILOVER_TIMEOUT_SECONDS) .setWebuiUrl(WEB_UI_PROTOCOL + env.getFrameworkHostPort()).setCheckpoint(true).build(); return new MesosSchedulerDriver(new SchedulerEngine(taskScheduler, facadeService, jobEventBus, frameworkIDService, statisticManager), frameworkInfo, mesosConfig.getUrl()); }
public void start() { logger.info("Starting Mesos-Starter Framework"); MesosSchedulerDriver driver; Protos.Credential credential = credentialFactory.create(); final String zookeeperUrl = "zk://" + zookeeperMaster + "/mesos"; if (credential.isInitialized()) { logger.debug("Starting scheduler driver with supplied credentials for principal=" + credential.getPrincipal()); driver = new MesosSchedulerDriver(this, frameworkInfoFactory.create().build(), zookeeperUrl, credential); } else { logger.debug("Starting scheduler driver without authorisation."); //TODO: The follow MesosSchedulerDriver constructor will be deprecated at some point. driver = new MesosSchedulerDriver(this, frameworkInfoFactory.create().build(), zookeeperUrl); } if (!this.driver.compareAndSet(null, driver)) { throw new IllegalStateException("Driver already initialised"); } driver.start(); new Thread(driver::join).start(); }
/** * <code>required .mesos.FrameworkInfo framework_info = 2;</code> */ public Builder setFrameworkInfo( org.apache.mesos.Protos.FrameworkInfo.Builder builderForValue) { if (frameworkInfoBuilder_ == null) { frameworkInfo_ = builderForValue.build(); onChanged(); } else { frameworkInfoBuilder_.setMessage(builderForValue.build()); } bitField0_ |= 0x00000002; return this; } /**
public Protos.FrameworkInfo asInfo() { Protos.FrameworkInfo.Builder builder = Protos.FrameworkInfo.newBuilder() .setName(name) .setId(Protos.FrameworkID .newBuilder() .setValue(id)) .setPrincipal(principal) .setRole(role) .setUser(user) .setCheckpoint(checkpoint) .setFailoverTimeout(failoverTimeout.getSeconds()); return builder.build(); }
@Override public void run() { // Have Mesos fill in the current user. FrameworkInfo framework = FrameworkInfo.newBuilder().setUser("") .setName("Gitlab CI Framework").build(); driver = new MesosSchedulerDriver(GitlabScheduler.this, framework, mesosMaster); if (driver.run() != Status.DRIVER_STOPPED) { LOGGER.severe("The mesos driver was aborted!"); } driver = null; } }).start();
@Test public void shouldReturnPrincipalIfEnabled() { when(configuration.getFrameworkPrincipal()).thenReturn(PRINCIPAL); FrameworkInfoFactory frameworkInfoFactory = new FrameworkInfoFactory(configuration, frameworkState); Protos.FrameworkInfo frameworkInfo = frameworkInfoFactory.getBuilder().build(); assertTrue(frameworkInfo.getPrincipal().equals(PRINCIPAL)); } }
@Test public void shouldGetBuilder() { FrameworkInfoFactory frameworkInfoFactory = new FrameworkInfoFactory(configuration, frameworkState); Protos.FrameworkInfo frameworkInfo = frameworkInfoFactory.getBuilder().build(); assertTrue(frameworkInfo.getWebuiUrl().contains("http://")); assertTrue(frameworkInfo.getWebuiUrl().contains(Integer.toString(DUMMY_PORT))); assertEquals(DUMMY_FRAMEWORK_ROLE, frameworkInfo.getRole()); }