Java Code Examples for org.apache.hadoop.yarn.util.ConverterUtils#toString()

The following examples show how to use org.apache.hadoop.yarn.util.ConverterUtils#toString() . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: ResourceLocalizationService.java    From hadoop with Apache License 2.0 6 votes vote down vote up
/**
 * Handle event received the first time any container is scheduled
 * by a given application.
 */
@SuppressWarnings("unchecked")
private void handleInitApplicationResources(Application app) {
  // 0) Create application tracking structs
  String userName = app.getUser();
  privateRsrc.putIfAbsent(userName, new LocalResourcesTrackerImpl(userName,
      null, dispatcher, true, super.getConfig(), stateStore));
  String appIdStr = ConverterUtils.toString(app.getAppId());
  appRsrc.putIfAbsent(appIdStr, new LocalResourcesTrackerImpl(app.getUser(),
      app.getAppId(), dispatcher, false, super.getConfig(), stateStore));
  // 1) Signal container init
  //
  // This is handled by the ApplicationImpl state machine and allows
  // containers to proceed with launching.
  dispatcher.getEventHandler().handle(new ApplicationInitedEvent(
        app.getAppId()));
}
 
Example 2
Source File: TaskAttemptInfo.java    From big-c with Apache License 2.0 6 votes vote down vote up
public TaskAttemptInfo(TaskAttempt ta, TaskType type, Boolean isRunning) {
  final TaskAttemptReport report = ta.getReport();
  this.type = type.toString();
  this.id = MRApps.toString(ta.getID());
  this.nodeHttpAddress = ta.getNodeHttpAddress();
  this.startTime = report.getStartTime();
  this.finishTime = report.getFinishTime();
  this.assignedContainerId = ConverterUtils.toString(report.getContainerId());
  this.assignedContainer = report.getContainerId();
  this.progress = report.getProgress() * 100;
  this.status = report.getStateString();
  this.state = report.getTaskAttemptState();
  this.elapsedTime = Times
      .elapsed(this.startTime, this.finishTime, isRunning);
  if (this.elapsedTime == -1) {
    this.elapsedTime = 0;
  }
  this.diagnostics = report.getDiagnosticInfo();
  this.rack = ta.getNodeRackName();
}
 
Example 3
Source File: ContainerImpl.java    From big-c with Apache License 2.0 5 votes vote down vote up
@Override
public String toString() {
  this.readLock.lock();
  try {
    return ConverterUtils.toString(this.containerId);
  } finally {
    this.readLock.unlock();
  }
}
 
Example 4
Source File: ContainerLogsUtils.java    From big-c with Apache License 2.0 5 votes vote down vote up
static List<File> getContainerLogDirs(ContainerId containerId,
    LocalDirsHandlerService dirsHandler) throws YarnException {
  List<String> logDirs = dirsHandler.getLogDirsForRead();
  List<File> containerLogDirs = new ArrayList<File>(logDirs.size());
  for (String logDir : logDirs) {
    logDir = new File(logDir).toURI().getPath();
    String appIdStr = ConverterUtils.toString(containerId
        .getApplicationAttemptId().getApplicationId());
    File appLogDir = new File(logDir, appIdStr);
    containerLogDirs.add(new File(appLogDir, containerId.toString()));
  }
  return containerLogDirs;
}
 
Example 5
Source File: LocalizerResourceRequestEvent.java    From big-c with Apache License 2.0 5 votes vote down vote up
public LocalizerResourceRequestEvent(LocalizedResource resource,
    LocalResourceVisibility vis, LocalizerContext context, String pattern) {
  super(LocalizerEventType.REQUEST_RESOURCE_LOCALIZATION,
      ConverterUtils.toString(context.getContainerId()));
  this.vis = vis;
  this.context = context;
  this.resource = resource;
  this.pattern = pattern;
}
 
Example 6
Source File: ShuffleHandler.java    From tez with Apache License 2.0 5 votes vote down vote up
private String getBaseLocation(String jobIdString, String user) {
  String parts[] = jobIdString.split("_");
  Preconditions.checkArgument(parts.length == 3, "Invalid jobId. Expecting 3 parts");
  final ApplicationId appID =
      ApplicationId.newInstance(Long.parseLong(parts[1]), Integer.parseInt(parts[2]));
  final String baseStr =
      USERCACHE_CONSTANT + "/" + user + "/"
          + APPCACHE_CONSTANT + "/"
          + ConverterUtils.toString(appID) + "/output" + "/";
  return baseStr;
}
 
Example 7
Source File: ResourceLocalizationService.java    From big-c with Apache License 2.0 5 votes vote down vote up
/**
 * Once a container's resources are localized, kill the corresponding
 * {@link ContainerLocalizer}
 */
private void handleContainerResourcesLocalized(
    ContainerLocalizationEvent event) {
  Container c = event.getContainer();
  String locId = ConverterUtils.toString(c.getContainerId());
  localizerTracker.endContainerLocalization(locId);
}
 
Example 8
Source File: LocalizerResourceRequestEvent.java    From hadoop with Apache License 2.0 5 votes vote down vote up
public LocalizerResourceRequestEvent(LocalizedResource resource,
    LocalResourceVisibility vis, LocalizerContext context, String pattern) {
  super(LocalizerEventType.REQUEST_RESOURCE_LOCALIZATION,
      ConverterUtils.toString(context.getContainerId()));
  this.vis = vis;
  this.context = context;
  this.resource = resource;
  this.pattern = pattern;
}
 
Example 9
Source File: ResourceLocalizationService.java    From hadoop with Apache License 2.0 5 votes vote down vote up
/**
 * Once a container's resources are localized, kill the corresponding
 * {@link ContainerLocalizer}
 */
private void handleContainerResourcesLocalized(
    ContainerLocalizationEvent event) {
  Container c = event.getContainer();
  String locId = ConverterUtils.toString(c.getContainerId());
  localizerTracker.endContainerLocalization(locId);
}
 
Example 10
Source File: ContainerLogsUtils.java    From hadoop with Apache License 2.0 5 votes vote down vote up
static List<File> getContainerLogDirs(ContainerId containerId,
    LocalDirsHandlerService dirsHandler) throws YarnException {
  List<String> logDirs = dirsHandler.getLogDirsForRead();
  List<File> containerLogDirs = new ArrayList<File>(logDirs.size());
  for (String logDir : logDirs) {
    logDir = new File(logDir).toURI().getPath();
    String appIdStr = ConverterUtils.toString(containerId
        .getApplicationAttemptId().getApplicationId());
    File appLogDir = new File(logDir, appIdStr);
    containerLogDirs.add(new File(appLogDir, containerId.toString()));
  }
  return containerLogDirs;
}
 
Example 11
Source File: AppInfo.java    From hadoop with Apache License 2.0 5 votes vote down vote up
public AppInfo(final Application app) {
  this.id = ConverterUtils.toString(app.getAppId());
  this.state = app.getApplicationState().toString();
  this.user = app.getUser();

  this.containerids = new ArrayList<String>();
  Map<ContainerId, Container> appContainers = app.getContainers();
  for (ContainerId containerId : appContainers.keySet()) {
    String containerIdStr = ConverterUtils.toString(containerId);
    containerids.add(containerIdStr);
  }
}
 
Example 12
Source File: AppLogAggregatorImpl.java    From hadoop with Apache License 2.0 4 votes vote down vote up
public AppLogAggregatorImpl(Dispatcher dispatcher,
    DeletionService deletionService, Configuration conf,
    ApplicationId appId, UserGroupInformation userUgi, NodeId nodeId,
    LocalDirsHandlerService dirsHandler, Path remoteNodeLogFileForApp,
    ContainerLogsRetentionPolicy retentionPolicy,
    Map<ApplicationAccessType, String> appAcls,
    LogAggregationContext logAggregationContext, Context context,
    FileContext lfs) {
  this.dispatcher = dispatcher;
  this.conf = conf;
  this.delService = deletionService;
  this.appId = appId;
  this.applicationId = ConverterUtils.toString(appId);
  this.userUgi = userUgi;
  this.dirsHandler = dirsHandler;
  this.remoteNodeLogFileForApp = remoteNodeLogFileForApp;
  this.remoteNodeTmpLogFileForApp = getRemoteNodeTmpLogFileForApp();
  this.retentionPolicy = retentionPolicy;
  this.pendingContainers = new LinkedBlockingQueue<ContainerId>();
  this.appAcls = appAcls;
  this.lfs = lfs;
  this.logAggregationContext = logAggregationContext;
  this.context = context;
  this.nodeId = nodeId;
  int configuredRentionSize =
      conf.getInt(NM_LOG_AGGREGATION_NUM_LOG_FILES_SIZE_PER_APP,
          DEFAULT_NM_LOG_AGGREGATION_NUM_LOG_FILES_SIZE_PER_APP);
  if (configuredRentionSize <= 0) {
    this.retentionSize =
        DEFAULT_NM_LOG_AGGREGATION_NUM_LOG_FILES_SIZE_PER_APP;
  } else {
    this.retentionSize = configuredRentionSize;
  }
  long configuredRollingMonitorInterval = conf.getLong(
    YarnConfiguration
      .NM_LOG_AGGREGATION_ROLL_MONITORING_INTERVAL_SECONDS,
    YarnConfiguration
      .DEFAULT_NM_LOG_AGGREGATION_ROLL_MONITORING_INTERVAL_SECONDS);
  boolean debug_mode =
      conf.getBoolean(NM_LOG_AGGREGATION_DEBUG_ENABLED,
        DEFAULT_NM_LOG_AGGREGATION_DEBUG_ENABLED);
  if (configuredRollingMonitorInterval > 0
      && configuredRollingMonitorInterval <
        NM_LOG_AGGREGATION_MIN_ROLL_MONITORING_INTERVAL_SECONDS) {
    if (debug_mode) {
      this.rollingMonitorInterval = configuredRollingMonitorInterval;
    } else {
      LOG.warn(
          "rollingMonitorIntervall should be more than or equal to "
          + NM_LOG_AGGREGATION_MIN_ROLL_MONITORING_INTERVAL_SECONDS
          + " seconds. Using "
          + NM_LOG_AGGREGATION_MIN_ROLL_MONITORING_INTERVAL_SECONDS
          + " seconds instead.");
      this.rollingMonitorInterval =
          NM_LOG_AGGREGATION_MIN_ROLL_MONITORING_INTERVAL_SECONDS;
    }
  } else {
    if (configuredRollingMonitorInterval <= 0) {
      LOG.warn("rollingMonitorInterval is set as "
          + configuredRollingMonitorInterval + ". "
          + "The log rolling mornitoring interval is disabled. "
          + "The logs will be aggregated after this application is finished.");
    } else {
      LOG.warn("rollingMonitorInterval is set as "
          + configuredRollingMonitorInterval + ". "
          + "The logs will be aggregated every "
          + configuredRollingMonitorInterval + " seconds");
    }
    this.rollingMonitorInterval = configuredRollingMonitorInterval;
  }
  this.logAggregationInRolling =
      this.rollingMonitorInterval <= 0 || this.logAggregationContext == null
          || this.logAggregationContext.getRolledLogsIncludePattern() == null
          || this.logAggregationContext.getRolledLogsIncludePattern()
            .isEmpty() ? false : true;
}
 
Example 13
Source File: Task.java    From incubator-tajo with Apache License 2.0 4 votes vote down vote up
public String getFileCacheDir() {
  fileCache = USERCACHE + "/" + "hyunsik" + "/" + APPCACHE + "/" +
      ConverterUtils.toString(ApplicationIdUtils.queryIdToAppId(taskId.getQueryUnitId().getExecutionBlockId().getQueryId())) +
      "/" + "output";
  return fileCache;
}
 
Example 14
Source File: ResourceLocalizationService.java    From hadoop with Apache License 2.0 4 votes vote down vote up
@SuppressWarnings("unchecked")
private void handleCleanupContainerResources(
    ContainerLocalizationCleanupEvent rsrcCleanup) {
  Container c = rsrcCleanup.getContainer();
  Map<LocalResourceVisibility, Collection<LocalResourceRequest>> rsrcs =
    rsrcCleanup.getResources();
  for (Map.Entry<LocalResourceVisibility, Collection<LocalResourceRequest>> e :
       rsrcs.entrySet()) {
    LocalResourcesTracker tracker = getLocalResourcesTracker(e.getKey(), c.getUser(), 
        c.getContainerId().getApplicationAttemptId()
        .getApplicationId());
    for (LocalResourceRequest req : e.getValue()) {
      tracker.handle(new ResourceReleaseEvent(req,
          c.getContainerId()));
    }
  }
  String locId = ConverterUtils.toString(c.getContainerId());
  localizerTracker.cleanupPrivLocalizers(locId);
  
  // Delete the container directories
  String userName = c.getUser();
  String containerIDStr = c.toString();
  String appIDStr = ConverterUtils.toString(
      c.getContainerId().getApplicationAttemptId().getApplicationId());
  
  // Try deleting from good local dirs and full local dirs because a dir might
  // have gone bad while the app was running(disk full). In addition
  // a dir might have become good while the app was running.
  // Check if the container dir exists and if it does, try to delete it

  for (String localDir : dirsHandler.getLocalDirsForCleanup()) {
    // Delete the user-owned container-dir
    Path usersdir = new Path(localDir, ContainerLocalizer.USERCACHE);
    Path userdir = new Path(usersdir, userName);
    Path allAppsdir = new Path(userdir, ContainerLocalizer.APPCACHE);
    Path appDir = new Path(allAppsdir, appIDStr);
    Path containerDir = new Path(appDir, containerIDStr);
    submitDirForDeletion(userName, containerDir);

    // Delete the nmPrivate container-dir

    Path sysDir = new Path(localDir, NM_PRIVATE_DIR);
    Path appSysDir = new Path(sysDir, appIDStr);
    Path containerSysDir = new Path(appSysDir, containerIDStr);
    submitDirForDeletion(null, containerSysDir);
  }

  dispatcher.getEventHandler().handle(
      new ContainerEvent(c.getContainerId(),
          ContainerEventType.CONTAINER_RESOURCES_CLEANEDUP));
}
 
Example 15
Source File: TestLogAggregationService.java    From hadoop with Apache License 2.0 4 votes vote down vote up
@Test
public void testVerifyAndCreateRemoteDirsFailure()
    throws Exception {
  this.conf.set(YarnConfiguration.NM_LOG_DIRS, localLogDir.getAbsolutePath());
  this.conf.set(YarnConfiguration.NM_REMOTE_APP_LOG_DIR,
      this.remoteRootLogDir.getAbsolutePath());
  
  LogAggregationService logAggregationService = spy(
      new LogAggregationService(dispatcher, this.context, this.delSrvc,
                                super.dirsHandler));
  logAggregationService.init(this.conf);
  
  YarnRuntimeException e = new YarnRuntimeException("KABOOM!");
  doThrow(e)
    .when(logAggregationService).verifyAndCreateRemoteLogDir(
        any(Configuration.class));
      
  logAggregationService.start();
  
  // Now try to start an application
  ApplicationId appId =
      BuilderUtils.newApplicationId(System.currentTimeMillis(),
        (int) (Math.random() * 1000));
  logAggregationService.handle(new LogHandlerAppStartedEvent(appId,
      this.user, null,
      ContainerLogsRetentionPolicy.AM_AND_FAILED_CONTAINERS_ONLY,
      this.acls));
  dispatcher.await();
  
  // Verify that it failed
  ApplicationEvent[] expectedEvents = new ApplicationEvent[] {
      new ApplicationEvent(appId, 
          ApplicationEventType.APPLICATION_LOG_HANDLING_FAILED)
  };
  checkEvents(appEventHandler, expectedEvents, false,
      "getType", "getApplicationID", "getDiagnostic");

  Mockito.reset(logAggregationService);
  
  // Now try to start another one
  ApplicationId appId2 =
      BuilderUtils.newApplicationId(System.currentTimeMillis(),
        (int) (Math.random() * 1000));
  File appLogDir =
      new File(localLogDir, ConverterUtils.toString(appId2));
  appLogDir.mkdir();
  
  logAggregationService.handle(new LogHandlerAppStartedEvent(appId2,
      this.user, null,
      ContainerLogsRetentionPolicy.AM_AND_FAILED_CONTAINERS_ONLY,
      this.acls));
  dispatcher.await();
  
  // Verify that it worked
  expectedEvents = new ApplicationEvent[] {
      new ApplicationEvent(appId, // original failure
          ApplicationEventType.APPLICATION_LOG_HANDLING_FAILED), 
      new ApplicationEvent(appId2, // success
          ApplicationEventType.APPLICATION_LOG_HANDLING_INITED)
  };
  checkEvents(appEventHandler, expectedEvents, false,
      "getType", "getApplicationID", "getDiagnostic");
  
  logAggregationService.stop();
}
 
Example 16
Source File: TestLogAggregationService.java    From big-c with Apache License 2.0 4 votes vote down vote up
@Test
public void testVerifyAndCreateRemoteDirsFailure()
    throws Exception {
  this.conf.set(YarnConfiguration.NM_LOG_DIRS, localLogDir.getAbsolutePath());
  this.conf.set(YarnConfiguration.NM_REMOTE_APP_LOG_DIR,
      this.remoteRootLogDir.getAbsolutePath());
  
  LogAggregationService logAggregationService = spy(
      new LogAggregationService(dispatcher, this.context, this.delSrvc,
                                super.dirsHandler));
  logAggregationService.init(this.conf);
  
  YarnRuntimeException e = new YarnRuntimeException("KABOOM!");
  doThrow(e)
    .when(logAggregationService).verifyAndCreateRemoteLogDir(
        any(Configuration.class));
      
  logAggregationService.start();
  
  // Now try to start an application
  ApplicationId appId =
      BuilderUtils.newApplicationId(System.currentTimeMillis(),
        (int) (Math.random() * 1000));
  logAggregationService.handle(new LogHandlerAppStartedEvent(appId,
      this.user, null,
      ContainerLogsRetentionPolicy.AM_AND_FAILED_CONTAINERS_ONLY,
      this.acls));
  dispatcher.await();
  
  // Verify that it failed
  ApplicationEvent[] expectedEvents = new ApplicationEvent[] {
      new ApplicationEvent(appId, 
          ApplicationEventType.APPLICATION_LOG_HANDLING_FAILED)
  };
  checkEvents(appEventHandler, expectedEvents, false,
      "getType", "getApplicationID", "getDiagnostic");

  Mockito.reset(logAggregationService);
  
  // Now try to start another one
  ApplicationId appId2 =
      BuilderUtils.newApplicationId(System.currentTimeMillis(),
        (int) (Math.random() * 1000));
  File appLogDir =
      new File(localLogDir, ConverterUtils.toString(appId2));
  appLogDir.mkdir();
  
  logAggregationService.handle(new LogHandlerAppStartedEvent(appId2,
      this.user, null,
      ContainerLogsRetentionPolicy.AM_AND_FAILED_CONTAINERS_ONLY,
      this.acls));
  dispatcher.await();
  
  // Verify that it worked
  expectedEvents = new ApplicationEvent[] {
      new ApplicationEvent(appId, // original failure
          ApplicationEventType.APPLICATION_LOG_HANDLING_FAILED), 
      new ApplicationEvent(appId2, // success
          ApplicationEventType.APPLICATION_LOG_HANDLING_INITED)
  };
  checkEvents(appEventHandler, expectedEvents, false,
      "getType", "getApplicationID", "getDiagnostic");
  
  logAggregationService.stop();
}
 
Example 17
Source File: TestContainerManager.java    From hadoop with Apache License 2.0 4 votes vote down vote up
@Test
public void testContainerSetup() throws Exception {

  containerManager.start();

  // ////// Create the resources for the container
  File dir = new File(tmpDir, "dir");
  dir.mkdirs();
  File file = new File(dir, "file");
  PrintWriter fileWriter = new PrintWriter(file);
  fileWriter.write("Hello World!");
  fileWriter.close();

  // ////// Construct the Container-id
  ContainerId cId = createContainerId(0);

  // ////// Construct the container-spec.
  ContainerLaunchContext containerLaunchContext = 
      recordFactory.newRecordInstance(ContainerLaunchContext.class);
  URL resource_alpha =
      ConverterUtils.getYarnUrlFromPath(localFS
          .makeQualified(new Path(file.getAbsolutePath())));
  LocalResource rsrc_alpha = recordFactory.newRecordInstance(LocalResource.class);    
  rsrc_alpha.setResource(resource_alpha);
  rsrc_alpha.setSize(-1);
  rsrc_alpha.setVisibility(LocalResourceVisibility.APPLICATION);
  rsrc_alpha.setType(LocalResourceType.FILE);
  rsrc_alpha.setTimestamp(file.lastModified());
  String destinationFile = "dest_file";
  Map<String, LocalResource> localResources = 
      new HashMap<String, LocalResource>();
  localResources.put(destinationFile, rsrc_alpha);
  containerLaunchContext.setLocalResources(localResources);

  StartContainerRequest scRequest =
      StartContainerRequest.newInstance(
        containerLaunchContext,
        createContainerToken(cId, DUMMY_RM_IDENTIFIER, context.getNodeId(),
          user, context.getContainerTokenSecretManager()));
  List<StartContainerRequest> list = new ArrayList<StartContainerRequest>();
  list.add(scRequest);
  StartContainersRequest allRequests =
      StartContainersRequest.newInstance(list);
  containerManager.startContainers(allRequests);

  BaseContainerManagerTest.waitForContainerState(containerManager, cId,
      ContainerState.COMPLETE);

  // Now ascertain that the resources are localised correctly.
  ApplicationId appId = cId.getApplicationAttemptId().getApplicationId();
  String appIDStr = ConverterUtils.toString(appId);
  String containerIDStr = ConverterUtils.toString(cId);
  File userCacheDir = new File(localDir, ContainerLocalizer.USERCACHE);
  File userDir = new File(userCacheDir, user);
  File appCache = new File(userDir, ContainerLocalizer.APPCACHE);
  File appDir = new File(appCache, appIDStr);
  File containerDir = new File(appDir, containerIDStr);
  File targetFile = new File(containerDir, destinationFile);
  File sysDir =
      new File(localDir,
          ResourceLocalizationService.NM_PRIVATE_DIR);
  File appSysDir = new File(sysDir, appIDStr);
  File containerSysDir = new File(appSysDir, containerIDStr);

  for (File f : new File[] { localDir, sysDir, userCacheDir, appDir,
      appSysDir,
      containerDir, containerSysDir }) {
    Assert.assertTrue(f.getAbsolutePath() + " doesn't exist!!", f.exists());
    Assert.assertTrue(f.getAbsolutePath() + " is not a directory!!",
        f.isDirectory());
  }
  Assert.assertTrue(targetFile.getAbsolutePath() + " doesn't exist!!",
      targetFile.exists());

  // Now verify the contents of the file
  BufferedReader reader = new BufferedReader(new FileReader(targetFile));
  Assert.assertEquals("Hello World!", reader.readLine());
  Assert.assertEquals(null, reader.readLine());
}
 
Example 18
Source File: ResourceLocalizationService.java    From big-c with Apache License 2.0 4 votes vote down vote up
@SuppressWarnings("unchecked")
private void handleCleanupContainerResources(
    ContainerLocalizationCleanupEvent rsrcCleanup) {
  Container c = rsrcCleanup.getContainer();
  Map<LocalResourceVisibility, Collection<LocalResourceRequest>> rsrcs =
    rsrcCleanup.getResources();
  for (Map.Entry<LocalResourceVisibility, Collection<LocalResourceRequest>> e :
       rsrcs.entrySet()) {
    LocalResourcesTracker tracker = getLocalResourcesTracker(e.getKey(), c.getUser(), 
        c.getContainerId().getApplicationAttemptId()
        .getApplicationId());
    for (LocalResourceRequest req : e.getValue()) {
      tracker.handle(new ResourceReleaseEvent(req,
          c.getContainerId()));
    }
  }
  String locId = ConverterUtils.toString(c.getContainerId());
  localizerTracker.cleanupPrivLocalizers(locId);
  
  // Delete the container directories
  String userName = c.getUser();
  String containerIDStr = c.toString();
  String appIDStr = ConverterUtils.toString(
      c.getContainerId().getApplicationAttemptId().getApplicationId());
  
  // Try deleting from good local dirs and full local dirs because a dir might
  // have gone bad while the app was running(disk full). In addition
  // a dir might have become good while the app was running.
  // Check if the container dir exists and if it does, try to delete it

  for (String localDir : dirsHandler.getLocalDirsForCleanup()) {
    // Delete the user-owned container-dir
    Path usersdir = new Path(localDir, ContainerLocalizer.USERCACHE);
    Path userdir = new Path(usersdir, userName);
    Path allAppsdir = new Path(userdir, ContainerLocalizer.APPCACHE);
    Path appDir = new Path(allAppsdir, appIDStr);
    Path containerDir = new Path(appDir, containerIDStr);
    submitDirForDeletion(userName, containerDir);

    // Delete the nmPrivate container-dir

    Path sysDir = new Path(localDir, NM_PRIVATE_DIR);
    Path appSysDir = new Path(sysDir, appIDStr);
    Path containerSysDir = new Path(appSysDir, containerIDStr);
    submitDirForDeletion(null, containerSysDir);
  }

  dispatcher.getEventHandler().handle(
      new ContainerEvent(c.getContainerId(),
          ContainerEventType.CONTAINER_RESOURCES_CLEANEDUP));
}
 
Example 19
Source File: TestLogAggregationService.java    From big-c with Apache License 2.0 4 votes vote down vote up
@Test
public void testNoContainerOnNode() throws Exception {
  this.conf.set(YarnConfiguration.NM_LOG_DIRS, localLogDir.getAbsolutePath());
  this.conf.set(YarnConfiguration.NM_REMOTE_APP_LOG_DIR,
      this.remoteRootLogDir.getAbsolutePath());
  
  LogAggregationService logAggregationService =
      new LogAggregationService(dispatcher, this.context, this.delSrvc,
                                super.dirsHandler);
  logAggregationService.init(this.conf);
  logAggregationService.start();

  ApplicationId application1 = BuilderUtils.newApplicationId(1234, 1);

  // AppLogDir should be created
  File app1LogDir =
    new File(localLogDir, ConverterUtils.toString(application1));
  app1LogDir.mkdir();
  logAggregationService
      .handle(new LogHandlerAppStartedEvent(
          application1, this.user, null,
          ContainerLogsRetentionPolicy.ALL_CONTAINERS, this.acls));

  logAggregationService.handle(new LogHandlerAppFinishedEvent(
      application1));

  logAggregationService.stop();
  assertEquals(0, logAggregationService.getNumAggregators());

  Assert.assertFalse(new File(logAggregationService
      .getRemoteNodeLogFileForApp(application1, this.user).toUri().getPath())
      .exists());

  dispatcher.await();
  
  ApplicationEvent expectedEvents[] = new ApplicationEvent[]{
      new ApplicationEvent(
          application1,
          ApplicationEventType.APPLICATION_LOG_HANDLING_INITED),
      new ApplicationEvent(
          application1,
          ApplicationEventType.APPLICATION_LOG_HANDLING_FINISHED)
  };
  checkEvents(appEventHandler, expectedEvents, true, "getType", "getApplicationID");
  logAggregationService.close();
}
 
Example 20
Source File: TestContainerManager.java    From big-c with Apache License 2.0 4 votes vote down vote up
@Test
public void testContainerSetup() throws Exception {

  containerManager.start();

  // ////// Create the resources for the container
  File dir = new File(tmpDir, "dir");
  dir.mkdirs();
  File file = new File(dir, "file");
  PrintWriter fileWriter = new PrintWriter(file);
  fileWriter.write("Hello World!");
  fileWriter.close();

  // ////// Construct the Container-id
  ContainerId cId = createContainerId(0);

  // ////// Construct the container-spec.
  ContainerLaunchContext containerLaunchContext = 
      recordFactory.newRecordInstance(ContainerLaunchContext.class);
  URL resource_alpha =
      ConverterUtils.getYarnUrlFromPath(localFS
          .makeQualified(new Path(file.getAbsolutePath())));
  LocalResource rsrc_alpha = recordFactory.newRecordInstance(LocalResource.class);    
  rsrc_alpha.setResource(resource_alpha);
  rsrc_alpha.setSize(-1);
  rsrc_alpha.setVisibility(LocalResourceVisibility.APPLICATION);
  rsrc_alpha.setType(LocalResourceType.FILE);
  rsrc_alpha.setTimestamp(file.lastModified());
  String destinationFile = "dest_file";
  Map<String, LocalResource> localResources = 
      new HashMap<String, LocalResource>();
  localResources.put(destinationFile, rsrc_alpha);
  containerLaunchContext.setLocalResources(localResources);

  StartContainerRequest scRequest =
      StartContainerRequest.newInstance(
        containerLaunchContext,
        createContainerToken(cId, DUMMY_RM_IDENTIFIER, context.getNodeId(),
          user, context.getContainerTokenSecretManager()));
  List<StartContainerRequest> list = new ArrayList<StartContainerRequest>();
  list.add(scRequest);
  StartContainersRequest allRequests =
      StartContainersRequest.newInstance(list);
  containerManager.startContainers(allRequests);

  BaseContainerManagerTest.waitForContainerState(containerManager, cId,
      ContainerState.COMPLETE);

  // Now ascertain that the resources are localised correctly.
  ApplicationId appId = cId.getApplicationAttemptId().getApplicationId();
  String appIDStr = ConverterUtils.toString(appId);
  String containerIDStr = ConverterUtils.toString(cId);
  File userCacheDir = new File(localDir, ContainerLocalizer.USERCACHE);
  File userDir = new File(userCacheDir, user);
  File appCache = new File(userDir, ContainerLocalizer.APPCACHE);
  File appDir = new File(appCache, appIDStr);
  File containerDir = new File(appDir, containerIDStr);
  File targetFile = new File(containerDir, destinationFile);
  File sysDir =
      new File(localDir,
          ResourceLocalizationService.NM_PRIVATE_DIR);
  File appSysDir = new File(sysDir, appIDStr);
  File containerSysDir = new File(appSysDir, containerIDStr);

  for (File f : new File[] { localDir, sysDir, userCacheDir, appDir,
      appSysDir,
      containerDir, containerSysDir }) {
    Assert.assertTrue(f.getAbsolutePath() + " doesn't exist!!", f.exists());
    Assert.assertTrue(f.getAbsolutePath() + " is not a directory!!",
        f.isDirectory());
  }
  Assert.assertTrue(targetFile.getAbsolutePath() + " doesn't exist!!",
      targetFile.exists());

  // Now verify the contents of the file
  BufferedReader reader = new BufferedReader(new FileReader(targetFile));
  Assert.assertEquals("Hello World!", reader.readLine());
  Assert.assertEquals(null, reader.readLine());
}