## org.apache.hadoop.fs
Class HarFileSystem

    java.lang.Object
      org.apache.hadoop.conf.Configured
          org.apache.hadoop.fs.FileSystem
              org.apache.hadoop.fs.FilterFileSystem
                  org.apache.hadoop.fs.HarFileSystem

All Implemented Interfaces:
  Closeable, Configurable

    public class HarFileSystem

extends FilterFileSystem

This is an implementation of the Hadoop Archive Filesystem. This archive Filesystem has index files of the form _index* and has contents of the form part-*. The index files store the indexes of the real files. The index files are of the form _masterindex and _index. The master index is a level of indirection in to the index file to make the look ups faster. the index file is sorted with hash code of the paths that it contains and the master index contains pointers to the positions in index for ranges of hashcodes.

Nested Class Summary

Nested classes/interfaces inherited from class org.apache.hadoop.fs.FileSystem
`FileSystem.Statistics`

Field Summary
`static int` `VERSION`

Fields inherited from class org.apache.hadoop.fs.FilterFileSystem
`fs`

Fields inherited from class org.apache.hadoop.fs.FileSystem
`FS_DEFAULT_NAME_KEY, LOG, statistics`

Constructor Summary
`HarFileSystem()` public construction of harfilesystem
`HarFileSystem(FileSystem fs)` Constructor to create a HarFileSystem with an underlying filesystem.

Method Summary
`void` `close()` No more filesystem operations are needed.
`void` `completeLocalOutput(Path fsOutputFile, Path tmpLocalFile)` not implemented.
`void` `copyFromLocalFile(boolean delSrc, Path src, Path dst)` not implemented.
`void` `copyToLocalFile(boolean delSrc, Path src, Path dst)` copies the file in the har filesystem to a local file.
`FSDataOutputStream` `create(Path f, FsPermission permission, boolean overwrite, int bufferSize, short replication, long blockSize, Progressable progress)` Opens an FSDataOutputStream at the indicated Path with write-progress reporting.
`FSDataOutputStream` `create(Path f, int bufferSize)`
`boolean` `delete(Path f, boolean recursive)` Not implemented.
`String` `getCanonicalServiceName()` Get a canonical service name for this file system.
`BlockLocation[]` `getFileBlockLocations(FileStatus file, long start, long len)` Get block locations from the underlying fs and fix their offsets and lengths.
`FileChecksum` `getFileChecksum(Path f)` Get the checksum of a file.
`FileStatus` `getFileStatus(Path f)` return the filestatus of files in har archive.
`static int` `getHarHash(Path p)` the hash of the path p inside iniside the filesystem
`int` `getHarVersion()`
`Path` `getHomeDirectory()` return the top level archive path.
`URI` `getUri()` Returns the uri of this filesystem.
`Path` `getWorkingDirectory()` return the top level archive.
`void` `initialize(URI name, Configuration conf)` Initialize a Har filesystem per har archive.
`FileStatus[]` `listStatus(Path f)` liststatus returns the children of a directory after looking up the index files.
`Path` `makeQualified(Path path)` Make sure that a path specifies a FileSystem.
`boolean` `mkdirs(Path f, FsPermission permission)` not implemented.
`FSDataInputStream` `open(Path f, int bufferSize)` Returns a har input stream which fakes end of file.
`void` `setOwner(Path p, String username, String groupname)` not implemented.
`void` `setPermission(Path p, FsPermission permisssion)` Not implemented.
`boolean` `setReplication(Path src, short replication)` Not implemented.
`void` `setWorkingDirectory(Path newDir)` Set the current working directory for the given file system.
`Path` `startLocalOutput(Path fsOutputFile, Path tmpLocalFile)` not implemented.

Methods inherited from class org.apache.hadoop.fs.FilterFileSystem
`append, checkPath, delete, getConf, getDefaultBlockSize, getDefaultReplication, getName, rename, setVerifyChecksum`

Methods inherited from class org.apache.hadoop.fs.FileSystem

`addFileSystemForTesting, append, append, clearStatistics, closeAll, closeAllForUGI, copyFromLocalFile, copyFromLocalFile, copyFromLocalFile, copyToLocalFile, create, create, create, create, create, create, create, create, create, create, createNewFile, createNonRecursive, createNonRecursive, deleteOnExit, exists, get, get, get, getAllStatistics, getBlockSize, getCanonicalUri, getContentSummary, getDefaultPort, getDefaultUri, getDelegationToken, getLength, getLocal, getNamed, getReplication, getStatistics, getStatistics, getUsed, globStatus, globStatus, isDirectory, isFile, listStatus, listStatus, listStatus, mkdirs, mkdirs, moveFromLocalFile, moveFromLocalFile, moveToLocalFile, open, printStatistics, processDeleteOnExit, setDefaultUri, setDefaultUri, setTimes`

Methods inherited from class org.apache.hadoop.conf.Configured
`setConf`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### VERSION

    public static final int VERSION

See Also:
  Constant Field Values

Constructor Detail

### HarFileSystem

    public HarFileSystem()

  public construction of harfilesystem

### HarFileSystem

    public HarFileSystem(FileSystem fs)

  Constructor to create a HarFileSystem with an underlying filesystem.

  Parameters:
    `fs` -

Method Detail

### initialize

    public void initialize(URI name,
                           Configuration conf)
                    throws IOException

  Initialize a Har filesystem per har archive. The archive home directory is the top level directory in the filesystem that contains the HAR archive. Be careful with this method, you do not want to go on creating new Filesystem instances per call to path.getFileSystem(). the uri of Har is har://underlyingfsscheme-host:port/archivepath. or har:///archivepath. This assumes the underlying filesystem to be used in case not specified.

  Overrides:
    `initialize` in class `FilterFileSystem`
  Parameters:
    `name` - a uri whose authority section names the host, port, etc. for this FileSystem
    `conf` - the configuration
  Throws:
    `IOException`

### getHarVersion

    public int getHarVersion()
                      throws IOException

  Throws:
    `IOException`

### getWorkingDirectory

    public Path getWorkingDirectory()

  return the top level archive.

  Overrides:
    `getWorkingDirectory` in class `FilterFileSystem`
  Returns:
    the directory pathname

### getUri

    public URI getUri()

  Returns the uri of this filesystem. The uri is of the form har://underlyingfsschema-host:port/pathintheunderlyingfs

  Overrides:
    `getUri` in class `FilterFileSystem`

### getCanonicalServiceName

    public String getCanonicalServiceName()

  Description copied from class: `FileSystem`
  Get a canonical service name for this file system. The token cache is the only user of this value, and uses it to lookup this filesystem's service tokens. The token cache will not attempt to acquire tokens if the service is null.

  Overrides:
    `getCanonicalServiceName` in class `FilterFileSystem`
  Returns:
    a service string that uniquely identifies this file system, null if the filesystem does not implement tokens
  See Also:
    `SecurityUtil.buildDTServiceName(URI, int)`

### makeQualified

    public Path makeQualified(Path path)

  Description copied from class: `FilterFileSystem`
  Make sure that a path specifies a FileSystem.

  Overrides:
    `makeQualified` in class `FilterFileSystem`

### getFileBlockLocations

    public BlockLocation[] getFileBlockLocations(FileStatus file,
                                                 long start,
                                                 long len)
                                          throws IOException

  Get block locations from the underlying fs and fix their offsets and lengths.

  Overrides:
    `getFileBlockLocations` in class `FilterFileSystem`
  Parameters:
    `file` - the input filestatus to get block locations
    `start` - the start of the desired range in the contained file
    `len` - the length of the desired range
  Returns:
    block locations for this segment of file
  Throws:
    `IOException`

### getHarHash

    public static int getHarHash(Path p)

  the hash of the path p inside iniside the filesystem

  Parameters:
    `p` - the path in the harfilesystem
  Returns:
    the hash code of the path.

### getFileStatus

    public FileStatus getFileStatus(Path f)
                             throws IOException

  return the filestatus of files in har archive. The permission returned are that of the archive index files. The permissions are not persisted while creating a hadoop archive.

  Overrides:
    `getFileStatus` in class `FilterFileSystem`
  Parameters:
    `f` - the path in har filesystem
  Returns:
    filestatus.
  Throws:
    `IOException`
    `FileNotFoundException` - when the path does not exist; IOException see specific implementation

### getFileChecksum

    public FileChecksum getFileChecksum(Path f)

  Description copied from class: `FilterFileSystem`
  Get the checksum of a file.

  Overrides:
    `getFileChecksum` in class `FilterFileSystem`
  Parameters:
    `f` - The file path
  Returns:
    null since no checksum algorithm is implemented.

### open

    public FSDataInputStream open(Path f,
                                  int bufferSize)
                           throws IOException

  Returns a har input stream which fakes end of file. It reads the index files to get the part file name and the size and start of the file.

  Overrides:
    `open` in class `FilterFileSystem`
  Parameters:
    `f` - the file name to open
    `bufferSize` - the size of the buffer to be used.
  Throws:
    `IOException`

### create

    public FSDataOutputStream create(Path f,
                                     int bufferSize)
                              throws IOException

  Throws:
    `IOException`

### create

    public FSDataOutputStream create(Path f,
                                     FsPermission permission,
                                     boolean overwrite,
                                     int bufferSize,
                                     short replication,
                                     long blockSize,
                                     Progressable progress)
                              throws IOException

  Description copied from class: `FilterFileSystem`
  Opens an FSDataOutputStream at the indicated Path with write-progress reporting.

  Overrides:
    `create` in class `FilterFileSystem`
  Parameters:
    `f` - the file name to open
    `overwrite` - if a file with this name already exists, then if true, the file will be overwritten, and if false an error will be thrown.
    `bufferSize` - the size of the buffer to be used.
    `replication` - required block replication for the file.
  Throws:
    `IOException`
  See Also:
    `FileSystem.setPermission(Path, FsPermission)`

### close

    public void close()
               throws IOException

  Description copied from class: `FileSystem`
  No more filesystem operations are needed. Will release any held locks.

  Specified by:
    `close` in interface `Closeable`
  Overrides:
    `close` in class `FilterFileSystem`
  Throws:
    `IOException`

### setReplication

    public boolean setReplication(Path src,
                                  short replication)
                           throws IOException

  Not implemented.

  Overrides:
    `setReplication` in class `FilterFileSystem`
  Parameters:
    `src` - file name
    `replication` - new replication
  Returns:
    true if successful; false if file does not exist or is a directory
  Throws:
    `IOException`

### delete

    public boolean delete(Path f,
                          boolean recursive)
                   throws IOException

  Not implemented.

  Overrides:
    `delete` in class `FilterFileSystem`
  Parameters:
    `f` - the path to delete.
    `recursive` - if path is a directory and set to true, the directory is deleted else throws an exception. In case of a file the recursive can be set to either true or false.
  Returns:
    true if delete is successful else false.
  Throws:
    `IOException`

### listStatus

    public FileStatus[] listStatus(Path f)
                            throws IOException

  liststatus returns the children of a directory after looking up the index files.

  Overrides:
    `listStatus` in class `FilterFileSystem`
  Parameters:
    `f` - given path
  Returns:
    the statuses of the files/directories in the given patch returns null, if Path f does not exist in the FileSystem
  Throws:
    `IOException`

### getHomeDirectory

    public Path getHomeDirectory()

  return the top level archive path.

  Overrides:
    `getHomeDirectory` in class `FilterFileSystem`

### setWorkingDirectory

    public void setWorkingDirectory(Path newDir)

  Description copied from class: `FilterFileSystem`
  Set the current working directory for the given file system. All relative paths will be resolved relative to it.

  Overrides:
    `setWorkingDirectory` in class `FilterFileSystem`

### mkdirs

    public boolean mkdirs(Path f,
                          FsPermission permission)
                   throws IOException

  not implemented.

  Overrides:
    `mkdirs` in class `FilterFileSystem`
  Throws:
    `IOException`

### copyFromLocalFile

    public void copyFromLocalFile(boolean delSrc,
                                  Path src,
                                  Path dst)
                           throws IOException

  not implemented.

  Overrides:
    `copyFromLocalFile` in class `FilterFileSystem`
  Throws:
    `IOException`

### copyToLocalFile

    public void copyToLocalFile(boolean delSrc,
                                Path src,
                                Path dst)
                         throws IOException

  copies the file in the har filesystem to a local file.

  Overrides:
    `copyToLocalFile` in class `FilterFileSystem`
  Throws:
    `IOException`

### startLocalOutput

    public Path startLocalOutput(Path fsOutputFile,
                                 Path tmpLocalFile)
                          throws IOException

  not implemented.

  Overrides:
    `startLocalOutput` in class `FilterFileSystem`
  Throws:
    `IOException`

### completeLocalOutput

    public void completeLocalOutput(Path fsOutputFile,
                                    Path tmpLocalFile)
                             throws IOException

  not implemented.

  Overrides:
    `completeLocalOutput` in class `FilterFileSystem`
  Throws:
    `IOException`

### setOwner

    public void setOwner(Path p,
                         String username,
                         String groupname)
                  throws IOException

  not implemented.

  Overrides:
    `setOwner` in class `FilterFileSystem`
  Parameters:
    `p` - The path
    `username` - If it is null, the original username remains unchanged.
    `groupname` - If it is null, the original groupname remains unchanged.
  Throws:
    `IOException`

### setPermission

    public void setPermission(Path p,
                              FsPermission permisssion)
                       throws IOException

  Not implemented.

  Overrides:
    `setPermission` in class `FilterFileSystem`
  Throws:
    `IOException`

Copyright © 2009 The Apache Software Foundation