Examples of FileContext

While URI names are very flexible, it requires knowing the name or address of the server. For convenience one often wants to access the default system in one's environment without knowing its name/address. This has an additional benefit that it allows one to change one's default fs (e.g. admin moves application from cluster1 to cluster2).

To facilitate this, Hadoop supports a notion of a default file system. The user can set his default file system, although this is typically set up for you in your environment via your default config. A default file system implies a default scheme and authority; slash-relative names (such as /for/bar) are resolved relative to that default FS. Similarly a user can also have working-directory-relative names (i.e. names not starting with a slash). While the working directory is generally in the same default FS, the wd can be in a different FS.

Hence Hadoop path names can be one of:

Relative paths with scheme (scheme:foo/bar) are illegal.

****The Role of the FileContext and configuration defaults****

The FileContext provides file namespace context for resolving file names; it also contains the umask for permissions, In that sense it is like the per-process file-related state in Unix system. These two properties

in general, are obtained from the default configuration file in your environment, (@see {@link Configuration}). No other configuration parameters are obtained from the default config as far as the file context layer is concerned. All file system instances (i.e. deployments of file systems) have default properties; we call these server side (SS) defaults. Operation like create allow one to select many properties: either pass them in as explicit parameters or use the SS properties.

The file system related SS defaults are

*** Usage Model for the FileContext class ***

Example 1: use the default config read from the $HADOOP_CONFIG/core.xml. Unspecified values come from core-defaults.xml in the release jar.

Example 2: Get a FileContext with a specific URI as the default FS Example 3: FileContext with local file system as the default Example 4: Use a specific config, ignoring $HADOOP_CONFIG Generally you should not need use a config unless you are doing
  • org.eclipse.php.internal.core.typeinference.context.FileContext
    This is a context for PHP file (outside of classes or functions) @author michael
  • org.simpleframework.http.resource.FileContext
    The FileContext provides an implementation of the Context object that provides a direct mapping from a request URI as defined in RFC 2616 to an OS specific target. This uses a File object to define the mapping for the request URI paths. Using a File object allows the FileContext to be easily used with both DOS and UNIX systems.

    This Indexer implementation uses an MIME database to obtain mappings for the getContentType method. The file used is acquired from the class path as a mapping from file extension to MIME type. This file can be modified if any additional types are required. However it is more advisable to simple extend this object and override the content type method. @author Niall Gallagher @see org.simpleframework.http.resource.FileIndexer

  • org.uengine.contexts.FileContext
    @author Jinyoung Jang
  • simple.http.serve.FileContext

  • Examples of org.apache.hadoop.fs.FileContext

      }

      @Override
      public Configuration loadConfFile() throws IOException {
        Path confPath = getConfFile();
        FileContext fc = FileContext.getFileContext(confPath.toUri(), conf);
        Configuration jobConf = new Configuration(false);
        jobConf.addResource(fc.open(confPath), confPath.toString());
        return jobConf;
      }
    View Full Code Here

    Examples of org.apache.hadoop.fs.FileContext

       */
      @Test
      public void testSaveNamespace() throws IOException {
        MiniDFSCluster cluster = null;
        DistributedFileSystem fs = null;
        FileContext fc;
        try {
          Configuration conf = new HdfsConfiguration();
          cluster = new MiniDFSCluster.Builder(conf).numDataNodes(numDatanodes).format(true).build();
          cluster.waitActive();
          fs = (cluster.getFileSystem());
          fc = FileContext.getFileContext(cluster.getURI(0));

          // Saving image without safe mode should fail
          DFSAdmin admin = new DFSAdmin(conf);
          String[] args = new String[]{"-saveNamespace"};
          try {
            admin.run(args);
          } catch(IOException eIO) {
            assertTrue(eIO.getLocalizedMessage().contains("Safe mode should be turned ON"));
          } catch(Exception e) {
            throw new IOException(e);
          }
          // create new file
          Path file = new Path("namespace.dat");
          writeFile(fs, file, replication);
          checkFile(fs, file, replication);

          // create new link
          Path symlink = new Path("file.link");
          fc.createSymlink(file, symlink, false);
          assertTrue(fc.getFileLinkStatus(symlink).isSymlink());

          // verify that the edits file is NOT empty
          Collection<URI> editsDirs = cluster.getNameEditsDirs(0);
          for(URI uri : editsDirs) {
            File ed = new File(uri.getPath());
            assertTrue(new File(ed, "current/"
                                + NNStorage.getInProgressEditsFileName(1))
                       .length() > Integer.SIZE/Byte.SIZE);
          }

          // Saving image in safe mode should succeed
          fs.setSafeMode(SafeModeAction.SAFEMODE_ENTER);
          try {
            admin.run(args);
          } catch(Exception e) {
            throw new IOException(e);
          }
         
          // TODO: Fix the test to not require a hard-coded transaction count.
          final int EXPECTED_TXNS_FIRST_SEG = 13;
         
          // the following steps should have happened:
          //   edits_inprogress_1 -> edits_1-12  (finalized)
          //   fsimage_12 created
          //   edits_inprogress_13 created
          //
          for(URI uri : editsDirs) {
            File ed = new File(uri.getPath());
            File curDir = new File(ed, "current");
            LOG.info("Files in " + curDir + ":\n  " +
                Joiner.on("\n  ").join(curDir.list()));
            // Verify that the first edits file got finalized
            File originalEdits = new File(curDir,
                                          NNStorage.getInProgressEditsFileName(1));
            assertFalse(originalEdits.exists());
            File finalizedEdits = new File(curDir,
                NNStorage.getFinalizedEditsFileName(1, EXPECTED_TXNS_FIRST_SEG));
            GenericTestUtils.assertExists(finalizedEdits);
            assertTrue(finalizedEdits.length() > Integer.SIZE/Byte.SIZE);

            GenericTestUtils.assertExists(new File(ed, "current/"
                           + NNStorage.getInProgressEditsFileName(
                               EXPECTED_TXNS_FIRST_SEG + 1)));
          }
         
          Collection<URI> imageDirs = cluster.getNameDirs(0);
          for (URI uri : imageDirs) {
            File imageDir = new File(uri.getPath());
            File savedImage = new File(imageDir, "current/"
                                       + NNStorage.getImageFileName(
                                           EXPECTED_TXNS_FIRST_SEG));
            assertTrue("Should have saved image at " + savedImage,
                savedImage.exists());       
          }

          // restart cluster and verify file exists
          cluster.shutdown();
          cluster = null;

          cluster = new MiniDFSCluster.Builder(conf).numDataNodes(numDatanodes).format(false).build();
          cluster.waitActive();
          fs = (cluster.getFileSystem());
          checkFile(fs, file, replication);
          fc = FileContext.getFileContext(cluster.getURI(0));
          assertTrue(fc.getFileLinkStatus(symlink).isSymlink());
        } finally {
          if(fs != null) fs.close();
          cleanup(cluster);
          cluster = null;
        }
    View Full Code Here

    Examples of org.apache.hadoop.fs.FileContext

        nmStartError = null;
      }

      @After
      public void deleteBaseDir() throws IOException {
        FileContext lfs = FileContext.getLocalFSFileContext();
        lfs.delete(new Path(basedir.getPath()), true);
      }
    View Full Code Here

    Examples of org.apache.hadoop.fs.FileContext

        nm = new MyNodeManager2(syncBarrier, conf);
        nm.init(conf);
        nm.start();
        // start a container
        ContainerId cId = TestNodeManagerShutdown.createContainerId();
        FileContext localFS = FileContext.getLocalFSFileContext();
        TestNodeManagerShutdown.startContainer(nm, cId, localFS, nmLocalDir,
          new File("start_file.txt"));

        try {
          syncBarrier.await(10000, TimeUnit.MILLISECONDS);
    View Full Code Here

    Examples of org.apache.hadoop.fs.FileContext

      }

      @Override
      public Configuration loadConfFile() throws IOException {
        Path confPath = getConfFile();
        FileContext fc = FileContext.getFileContext(confPath.toUri(), conf);
        Configuration jobConf = new Configuration(false);
        jobConf.addResource(fc.open(confPath), confPath.toString());
        return jobConf;
      }
    View Full Code Here

    Examples of org.apache.hadoop.fs.FileContext

        app.waitForState(Service.STATE.STOPPED);

        String jobhistoryDir = JobHistoryUtils
            .getHistoryIntermediateDoneDirForUser(conf);

        FileContext fc = null;
        try {
          fc = FileContext.getFileContext(conf);
        } catch (IOException ioe) {
          LOG.info("Can not get FileContext", ioe);
          throw (new Exception("Can not get File Context"));
        }

        if (numMaps == numSuccessfulMaps) {
          String summaryFileName = JobHistoryUtils
              .getIntermediateSummaryFileName(jobId);
          Path summaryFile = new Path(jobhistoryDir, summaryFileName);
          String jobSummaryString = getJobSummary(fc, summaryFile);
          Assert.assertNotNull(jobSummaryString);
          Assert.assertTrue(jobSummaryString.contains("resourcesPerMap=100"));
          Assert.assertTrue(jobSummaryString.contains("resourcesPerReduce=100"));

          Map<String, String> jobSummaryElements = new HashMap<String, String>();
          StringTokenizer strToken = new StringTokenizer(jobSummaryString, ",");
          while (strToken.hasMoreTokens()) {
            String keypair = strToken.nextToken();
            jobSummaryElements.put(keypair.split("=")[0], keypair.split("=")[1]);
          }

          Assert.assertEquals("JobId does not match", jobId.toString(),
              jobSummaryElements.get("jobId"));
          Assert.assertEquals("JobName does not match", "test",
              jobSummaryElements.get("jobName"));
          Assert.assertTrue("submitTime should not be 0",
              Long.parseLong(jobSummaryElements.get("submitTime")) != 0);
          Assert.assertTrue("launchTime should not be 0",
              Long.parseLong(jobSummaryElements.get("launchTime")) != 0);
          Assert
              .assertTrue(
                  "firstMapTaskLaunchTime should not be 0",
                  Long.parseLong(jobSummaryElements.get("firstMapTaskLaunchTime")) != 0);
          Assert
              .assertTrue("firstReduceTaskLaunchTime should not be 0",
                  Long.parseLong(jobSummaryElements
                      .get("firstReduceTaskLaunchTime")) != 0);
          Assert.assertTrue("finishTime should not be 0",
              Long.parseLong(jobSummaryElements.get("finishTime")) != 0);
          Assert.assertEquals("Mismatch in num map slots", numSuccessfulMaps,
              Integer.parseInt(jobSummaryElements.get("numMaps")));
          Assert.assertEquals("Mismatch in num reduce slots", numReduces,
              Integer.parseInt(jobSummaryElements.get("numReduces")));
          Assert.assertEquals("User does not match",
              System.getProperty("user.name"), jobSummaryElements.get("user"));
          Assert.assertEquals("Queue does not match", "default",
              jobSummaryElements.get("queue"));
          Assert.assertEquals("Status does not match", "SUCCEEDED",
              jobSummaryElements.get("status"));
        }

        JobHistory jobHistory = new JobHistory();
        jobHistory.init(conf);
        HistoryFileInfo fileInfo = jobHistory.getJobFileInfo(jobId);
        JobInfo jobInfo;
        long numFinishedMaps;

        synchronized (fileInfo) {
          Path historyFilePath = fileInfo.getHistoryFile();
          FSDataInputStream in = null;
          LOG.info("JobHistoryFile is: " + historyFilePath);
          try {
            in = fc.open(fc.makeQualified(historyFilePath));
          } catch (IOException ioe) {
            LOG.info("Can not open history file: " + historyFilePath, ioe);
            throw (new Exception("Can not open History File"));
          }

          JobHistoryParser parser = new JobHistoryParser(in);
          final EventReader realReader = new EventReader(in);
          EventReader reader = Mockito.mock(EventReader.class);
          if (numMaps == numSuccessfulMaps) {
            reader = realReader;
          } else {
            final AtomicInteger numFinishedEvents = new AtomicInteger(0); // Hack!
            Mockito.when(reader.getNextEvent()).thenAnswer(
                new Answer<HistoryEvent>() {
                  public HistoryEvent answer(InvocationOnMock invocation)
                      throws IOException {
                    HistoryEvent event = realReader.getNextEvent();
                    if (event instanceof TaskFinishedEvent) {
                      numFinishedEvents.incrementAndGet();
                    }

                    if (numFinishedEvents.get() <= numSuccessfulMaps) {
                      return event;
                    } else {
                      throw new IOException("test");
                    }
                  }
                });
          }

          jobInfo = parser.parse(reader);

          numFinishedMaps = computeFinishedMaps(jobInfo, numMaps, numSuccessfulMaps);

          if (numFinishedMaps != numMaps) {
            Exception parseException = parser.getParseException();
            Assert.assertNotNull("Didn't get expected parse exception",
                parseException);
          }
        }

        Assert.assertEquals("Incorrect username ", System.getProperty("user.name"),
            jobInfo.getUsername());
        Assert.assertEquals("Incorrect jobName ", "test", jobInfo.getJobname());
        Assert.assertEquals("Incorrect queuename ", "default",
            jobInfo.getJobQueueName());
        Assert
            .assertEquals("incorrect conf path", "test", jobInfo.getJobConfPath());
        Assert.assertEquals("incorrect finishedMap ", numSuccessfulMaps,
            numFinishedMaps);
        Assert.assertEquals("incorrect finishedReduces ", numReduces,
            jobInfo.getFinishedReduces());
        Assert.assertEquals("incorrect uberized ", job.isUber(),
            jobInfo.getUberized());
        Map<TaskID, TaskInfo> allTasks = jobInfo.getAllTasks();
        int totalTasks = allTasks.size();
        Assert.assertEquals("total number of tasks is incorrect  ",
            (numMaps + numReduces), totalTasks);

        // Verify aminfo
        Assert.assertEquals(1, jobInfo.getAMInfos().size());
        Assert.assertEquals(MRApp.NM_HOST, jobInfo.getAMInfos().get(0)
            .getNodeManagerHost());
        AMInfo amInfo = jobInfo.getAMInfos().get(0);
        Assert.assertEquals(MRApp.NM_PORT, amInfo.getNodeManagerPort());
        Assert.assertEquals(MRApp.NM_HTTP_PORT, amInfo.getNodeManagerHttpPort());
        Assert.assertEquals(1, amInfo.getAppAttemptId().getAttemptId());
        Assert.assertEquals(amInfo.getAppAttemptId(), amInfo.getContainerId()
            .getApplicationAttemptId());
        Assert.assertTrue(amInfo.getStartTime() <= System.currentTimeMillis()
            && amInfo.getStartTime() >= amStartTimeEst);

        ContainerId fakeCid = MRApp.newContainerId(-1, -1, -1, -1);
        // Assert at taskAttempt level
        for (TaskInfo taskInfo : allTasks.values()) {
          int taskAttemptCount = taskInfo.getAllTaskAttempts().size();
          Assert
              .assertEquals("total number of task attempts ", 1, taskAttemptCount);
          TaskAttemptInfo taInfo = taskInfo.getAllTaskAttempts().values()
              .iterator().next();
          Assert.assertNotNull(taInfo.getContainerId());
          // Verify the wrong ctor is not being used. Remove after mrv1 is removed.
          Assert.assertFalse(taInfo.getContainerId().equals(fakeCid));
        }

        // Deep compare Job and JobInfo
        for (Task task : job.getTasks().values()) {
          TaskInfo taskInfo = allTasks.get(TypeConverter.fromYarn(task.getID()));
          Assert.assertNotNull("TaskInfo not found", taskInfo);
          for (TaskAttempt taskAttempt : task.getAttempts().values()) {
            TaskAttemptInfo taskAttemptInfo = taskInfo.getAllTaskAttempts().get(
                TypeConverter.fromYarn((taskAttempt.getID())));
            Assert.assertNotNull("TaskAttemptInfo not found", taskAttemptInfo);
            Assert.assertEquals("Incorrect shuffle port for task attempt",
                taskAttempt.getShufflePort(), taskAttemptInfo.getShufflePort());
            if (numMaps == numSuccessfulMaps) {
              Assert.assertEquals(MRApp.NM_HOST, taskAttemptInfo.getHostname());
              Assert.assertEquals(MRApp.NM_PORT, taskAttemptInfo.getPort());

              // Verify rack-name
              Assert.assertEquals("rack-name is incorrect",
                  taskAttemptInfo.getRackname(), RACK_NAME);
            }
          }
        }

        // test output for HistoryViewer
        PrintStream stdps = System.out;
        try {
          System.setOut(new PrintStream(outContent));
          HistoryViewer viewer;
          synchronized (fileInfo) {
            viewer = new HistoryViewer(fc.makeQualified(
                fileInfo.getHistoryFile()).toString(), conf, true);
          }
          viewer.print();

          for (TaskInfo taskInfo : allTasks.values()) {
    View Full Code Here

    Examples of org.apache.hadoop.fs.FileContext

          JobHistoryParser parser;
          JobInfo jobInfo;
          synchronized (fileInfo) {
            Path historyFilePath = fileInfo.getHistoryFile();
            FSDataInputStream in = null;
            FileContext fc = null;
            try {
              fc = FileContext.getFileContext(conf);
              in = fc.open(fc.makeQualified(historyFilePath));
            } catch (IOException ioe) {
              LOG.info("Can not open history file: " + historyFilePath, ioe);
              throw (new Exception("Can not open History File"));
            }
    View Full Code Here

    Examples of org.apache.hadoop.fs.FileContext

          JobHistoryParser parser;
          JobInfo jobInfo;
          synchronized (fileInfo) {
            Path historyFilePath = fileInfo.getHistoryFile();
            FSDataInputStream in = null;
            FileContext fc = null;
            try {
              fc = FileContext.getFileContext(conf);
              in = fc.open(fc.makeQualified(historyFilePath));
            } catch (IOException ioe) {
              LOG.info("Can not open history file: " + historyFilePath, ioe);
              throw (new Exception("Can not open History File"));
            }
    View Full Code Here

    Examples of org.apache.hadoop.fs.FileContext

                    containerLogDir.toString())
                );
          }
          // /////////////////////////// End of variable expansion

          FileContext lfs = FileContext.getLocalFSFileContext();

          Path nmPrivateContainerScriptPath =
              dirsHandler.getLocalPathForWrite(
                  getContainerPrivateDir(appIdStr, containerIdStr) + Path.SEPARATOR
                      + CONTAINER_SCRIPT);
          Path nmPrivateTokensPath =
              dirsHandler.getLocalPathForWrite(
                  getContainerPrivateDir(appIdStr, containerIdStr)
                      + Path.SEPARATOR
                      + String.format(ContainerLocalizer.TOKEN_FILE_NAME_FMT,
                          containerIdStr));

          DataOutputStream containerScriptOutStream = null;
          DataOutputStream tokensOutStream = null;

          // Select the working directory for the container
          Path containerWorkDir =
              dirsHandler.getLocalPathForWrite(ContainerLocalizer.USERCACHE
                  + Path.SEPARATOR + user + Path.SEPARATOR
                  + ContainerLocalizer.APPCACHE + Path.SEPARATOR + appIdStr
                  + Path.SEPARATOR + containerIdStr,
                  LocalDirAllocator.SIZE_UNKNOWN, false);

          String pidFileSuffix = String.format(ContainerLaunch.PID_FILE_NAME_FMT,
              containerIdStr);

          // pid file should be in nm private dir so that it is not
          // accessible by users
          pidFilePath = dirsHandler.getLocalPathForWrite(
              ResourceLocalizationService.NM_PRIVATE_DIR + Path.SEPARATOR
              + pidFileSuffix);
          List<String> localDirs = dirsHandler.getLocalDirs();
          List<String> logDirs = dirsHandler.getLogDirs();

          List<String> containerLogDirs = new ArrayList<String>();
          for( String logDir : logDirs) {
            containerLogDirs.add(logDir + Path.SEPARATOR + relativeContainerLogDir);
          }

          if (!dirsHandler.areDisksHealthy()) {
            ret = ContainerExitStatus.DISKS_FAILED;
            throw new IOException("Most of the disks failed. "
                + dirsHandler.getDisksHealthReport());
          }

          try {
            // /////////// Write out the container-script in the nmPrivate space.
            List<Path> appDirs = new ArrayList<Path>(localDirs.size());
            for (String localDir : localDirs) {
              Path usersdir = new Path(localDir, ContainerLocalizer.USERCACHE);
              Path userdir = new Path(usersdir, user);
              Path appsdir = new Path(userdir, ContainerLocalizer.APPCACHE);
              appDirs.add(new Path(appsdir, appIdStr));
            }
            containerScriptOutStream =
              lfs.create(nmPrivateContainerScriptPath,
                  EnumSet.of(CREATE, OVERWRITE));

            // Set the token location too.
            environment.put(
                ApplicationConstants.CONTAINER_TOKEN_FILE_ENV_NAME,
                new Path(containerWorkDir,
                    FINAL_CONTAINER_TOKENS_FILE).toUri().getPath());
            // Sanitize the container's environment
            sanitizeEnv(environment, containerWorkDir, appDirs, containerLogDirs,
              localResources);
           
            // Write out the environment
            writeLaunchEnv(containerScriptOutStream, environment, localResources,
                launchContext.getCommands());
           
            // /////////// End of writing out container-script

            // /////////// Write out the container-tokens in the nmPrivate space.
            tokensOutStream =
                lfs.create(nmPrivateTokensPath, EnumSet.of(CREATE, OVERWRITE));
            Credentials creds = container.getCredentials();
            creds.writeTokenStorageToStream(tokensOutStream);
            // /////////// End of writing out container-tokens
          } finally {
            IOUtils.cleanup(LOG, containerScriptOutStream, tokensOutStream);
    View Full Code Here

    Examples of org.apache.hadoop.fs.FileContext

          dispatcher.getEventHandler().handle(
            new ContainerDiagnosticsUpdateEvent(containerId, message));
        } finally {
          // cleanup pid file if present
          if (pidFilePath != null) {
            FileContext lfs = FileContext.getLocalFSFileContext();
            lfs.delete(pidFilePath, false);
          }
        }
      }
    View Full Code Here
    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.