@Override public void prepareAMAndConfigForLaunch( SliderFileSystem fileSystem, Configuration serviceConf, AbstractLauncher launcher, AggregateConf instanceDescription, Path snapshotConfDirPath, Path generatedConfDirPath, Configuration clientConfExtras, String libdir, Path tempPath, boolean miniClusterTestRun) throws IOException, SliderException { // load in the template site config log.debug("Loading template configuration from {}", snapshotConfDirPath); Configuration siteConf = ConfigHelper.loadTemplateConfiguration( serviceConf, snapshotConfDirPath, AccumuloKeys.SITE_XML, AccumuloKeys.SITE_XML_RESOURCE); Map<String, LocalResource> providerResources; providerResources = fileSystem.submitDirectory(generatedConfDirPath, SliderKeys.PROPAGATED_CONF_DIR_NAME); ProviderUtils.addProviderJar( providerResources, this, "slider-accumulo-provider.jar", fileSystem, tempPath, libdir, miniClusterTestRun); addAccumuloDependencyJars(providerResources, fileSystem, libdir, tempPath); launcher.addLocalResources(providerResources); // construct the cluster configuration values ConfTreeOperations appconf = instanceDescription.getAppConfOperations(); Map<String, String> clusterConfMap = buildSiteConfFromInstance(instanceDescription); // merge them ConfigHelper.addConfigMap(siteConf, clusterConfMap.entrySet(), "Accumulo Provider"); // now, if there is an extra client conf, merge it in too if (clientConfExtras != null) { ConfigHelper.mergeConfigurations(siteConf, clientConfExtras, "Slider Client"); } if (log.isDebugEnabled()) { log.debug("Merged Configuration"); ConfigHelper.dumpConf(siteConf); } Path sitePath = ConfigHelper.saveConfig(serviceConf, siteConf, generatedConfDirPath, AccumuloKeys.SITE_XML); log.debug("Saving the config to {}", sitePath); launcher.submitDirectory(generatedConfDirPath, SliderKeys.PROPAGATED_CONF_DIR_NAME); }
@Override public void buildContainerLaunchContext( ContainerLauncher launcher, AggregateConf instanceDefinition, Container container, String role, SliderFileSystem coreFS, Path generatedConfPath, MapOperations resourceComponent, MapOperations appComponent, Path containerTmpDirPath) throws IOException, SliderException { // Set the environment launcher.putEnv(SliderUtils.buildEnvMap(appComponent)); String logDirs = providerUtils.getLogdir(); String logDir; int idx = logDirs.indexOf(","); if (idx > 0) { // randomly choose a log dir candidate String[] segments = logDirs.split(","); Random rand = new Random(); logDir = segments[rand.nextInt(segments.length)]; } else logDir = logDirs; launcher.setEnv(HBASE_LOG_DIR, logDir); launcher.setEnv( PROPAGATED_CONFDIR, ProviderUtils.convertToAppRelativePath(SliderKeys.PROPAGATED_CONF_DIR_NAME)); // local resources // add the configuration resources launcher.addLocalResources( coreFS.submitDirectory(generatedConfPath, SliderKeys.PROPAGATED_CONF_DIR_NAME)); // Add binaries // now add the image if it was set String imageURI = instanceDefinition .getInternalOperations() .get(InternalKeys.INTERNAL_APPLICATION_IMAGE_PATH); coreFS.maybeAddImagePath(launcher.getLocalResources(), imageURI); CommandLineBuilder cli = new CommandLineBuilder(); String heap = appComponent.getOption(RoleKeys.JVM_HEAP, DEFAULT_JVM_HEAP); if (SliderUtils.isSet(heap)) { String adjustedHeap = SliderUtils.translateTrailingHeapUnit(heap); launcher.setEnv(HBASE_HEAPSIZE, adjustedHeap); } String gcOpts = appComponent.getOption(RoleKeys.GC_OPTS, DEFAULT_GC_OPTS); if (SliderUtils.isSet(gcOpts)) { launcher.setEnv(HBASE_GC_OPTS, gcOpts); } // this must stay relative if it is an image cli.add(providerUtils.buildPathToScript(instanceDefinition, "bin", HBASE_SCRIPT)); // config dir is relative to the generated file cli.add(ARG_CONFIG); cli.add("$PROPAGATED_CONFDIR"); String roleCommand; String logfile; // now look at the role /* JDK7 switch (role) { case ROLE_WORKER: //role is region server roleCommand = REGION_SERVER; logfile = "/region-server.txt"; break; case ROLE_MASTER: roleCommand = MASTER; logfile = "/master.txt"; break; case ROLE_REST_GATEWAY: roleCommand = REST_GATEWAY; logfile = "/rest-gateway.txt"; break; case ROLE_THRIFT_GATEWAY: roleCommand = THRIFT_GATEWAY; logfile = "/thrift-gateway.txt"; break; case ROLE_THRIFT2_GATEWAY: roleCommand = THRIFT2_GATEWAY; logfile = "/thrift2-gateway.txt"; break; default: throw new SliderInternalStateException("Cannot start role %s", role); } */ if (ROLE_WORKER.equals(role)) { // role is region server roleCommand = REGION_SERVER; logfile = "/region-server.txt"; } else if (ROLE_MASTER.equals(role)) { roleCommand = MASTER; logfile = "/master.txt"; } else if (ROLE_REST_GATEWAY.equals(role)) { roleCommand = REST_GATEWAY; logfile = "/rest-gateway.txt"; } else if (ROLE_THRIFT_GATEWAY.equals(role)) { roleCommand = THRIFT_GATEWAY; logfile = "/thrift-gateway.txt"; } else if (ROLE_THRIFT2_GATEWAY.equals(role)) { roleCommand = THRIFT2_GATEWAY; logfile = "/thrift2-gateway.txt"; } else { throw new SliderInternalStateException("Cannot start role %s", role); } cli.add(roleCommand); cli.add(ACTION_START); // log details cli.addOutAndErrFiles(logfile, null); launcher.addCommand(cli.build()); }