use of com.datatorrent.stram.StramClient in project apex-core by apache.
the class StramAppLauncher method launchApp.
/**
* Submit application to the cluster and return the app id.
* Sets the context class loader for application dependencies.
*
* @param appConfig
* @return ApplicationId
* @throws Exception
*/
public ApplicationId launchApp(AppFactory appConfig) throws Exception {
loadDependencies();
Configuration conf = propertiesBuilder.conf;
conf.setEnum(StreamingApplication.ENVIRONMENT, StreamingApplication.Environment.CLUSTER);
LogicalPlan dag = appConfig.createApp(propertiesBuilder);
if (UserGroupInformation.isSecurityEnabled()) {
long hdfsTokenMaxLifeTime = conf.getLong(StramClientUtils.DT_HDFS_TOKEN_MAX_LIFE_TIME, conf.getLong(StramClientUtils.HDFS_TOKEN_MAX_LIFE_TIME, StramClientUtils.DELEGATION_TOKEN_MAX_LIFETIME_DEFAULT));
dag.setAttribute(LogicalPlan.HDFS_TOKEN_LIFE_TIME, hdfsTokenMaxLifeTime);
long rmTokenMaxLifeTime = conf.getLong(StramClientUtils.DT_RM_TOKEN_MAX_LIFE_TIME, conf.getLong(YarnConfiguration.DELEGATION_TOKEN_MAX_LIFETIME_KEY, YarnConfiguration.DELEGATION_TOKEN_MAX_LIFETIME_DEFAULT));
dag.setAttribute(LogicalPlan.RM_TOKEN_LIFE_TIME, rmTokenMaxLifeTime);
setTokenRefreshCredentials(dag, conf);
}
String tokenRefreshFactor = conf.get(StramClientUtils.TOKEN_ANTICIPATORY_REFRESH_FACTOR);
if (tokenRefreshFactor != null && tokenRefreshFactor.trim().length() > 0) {
dag.setAttribute(LogicalPlan.TOKEN_REFRESH_ANTICIPATORY_FACTOR, Double.parseDouble(tokenRefreshFactor));
}
StramClient client = new StramClient(conf, dag);
try {
client.start();
LinkedHashSet<String> libjars = Sets.newLinkedHashSet();
String libjarsCsv = conf.get(LIBJARS_CONF_KEY_NAME);
if (libjarsCsv != null) {
String[] jars = StringUtils.splitByWholeSeparator(libjarsCsv, StramClient.LIB_JARS_SEP);
libjars.addAll(Arrays.asList(jars));
}
if (deployJars != null) {
for (File deployJar : deployJars) {
libjars.add(deployJar.getAbsolutePath());
}
}
client.setResources(libjars);
client.setFiles(conf.get(FILES_CONF_KEY_NAME));
client.setArchives(conf.get(ARCHIVES_CONF_KEY_NAME));
client.setOriginalAppId(conf.get(ORIGINAL_APP_ID));
client.setQueueName(conf.get(QUEUE_NAME));
String tags = conf.get(TAGS);
if (tags != null) {
for (String tag : tags.split(",")) {
client.addTag(tag.trim());
}
}
client.startApplication();
return client.getApplicationReport().getApplicationId();
} finally {
client.stop();
}
}
Aggregations