由于经常使用FileSystem这个类,但是对这个类的API不是很熟悉导致了一些不必要的麻烦,所以本人翻译了一下这个类。
所属的包:
org.apache.hadoop.fs
FileSystem -->通用文件系统的抽象基类,可以作为一个分布式文件系统的实现,也可以作为连接本地磁盘的文件系统
本地版存在于小型的hadoop实例和测试中。 所有可能用到分布式文件系统的用户代码都因该使用FileSystem类,Hadoop DFS
文件系统是一个以单个磁盘出现的多机器的系统 ,大容量和容错力使他很有用,本地实现为localFileSystem,分布式实现是DistibutedFileSystem
属性介绍:
static String DEFAULT_FS --->public static final String "file:///"
static String FS_DEFAULT_NAME_KEY --->public static final String "fs.defaultFS"
static org.apache.commons.logging.Log LOG --->日志记录工具
static int SHUTDOWN_HOOK_PRIORITY --->文件系统关闭的优先级
protected org.apache.hadoop.fs.FileSystem.Statistics statistics --->跟踪统计读写等FileSystem完成的操作。
方法
public abstract FSDataOutputStream append(Path f,
int bufferSize,
Progressable progress)
throws IOException
获得一个FSDataOutputStream可以使用IOUtils.copyBytes方法追加内容。
static boolean areSymlinksEnabled() --->查看符号连接是否被禁用
boolean cancelDeleteOnExit(Path f) --->取消hadoop终止时删除文件操作
static void clearStatistics() --->清楚统计信息
void close() --->关闭文件系统
static void closeAll() --->关闭缓存中所有的文件系统
static void closeAllForUGI(org.apache.hadoop.security.UserGroupInformation ugi)
--->关闭指定用户组的文件系统
void completeLocalOutput(Path fsOutputFile, Path tmpLocalFile)
--->当我们完成对目标的写时调用,本地文件系统将不会工作,因为已经正确的学入了,
远程文件系统的话将会辅助tmpLocalFile的内廷到正确的目标fsOutputFile
void concat(Path trg, Path[] psrcs) --->合并文件 参数trg为合并后目标位置,psrcs为需要合并的文件
void copyFromLocalFile(boolean delSrc, boolean overwrite, Path[] srcs, Path dst)
void copyFromLocalFile(boolean delSrc, boolean overwrite, Path src, Path dst)
void copyFromLocalFile(boolean delSrc, Path src, Path dst)
void copyFromLocalFile(Path src, Path dst)
--->从本地复制文件到hdfs delSrc为是否删除src overwrite为是否覆盖
void copyToLocalFile(boolean delSrc, Path src, Path dst)
void copyToLocalFile(boolean delSrc, Path src, Path dst, boolean useRawLocalFileSystem)
void copyToLocalFile(Path src, Path dst)
--->复制到本地文件 useRawLocalFileSystem是否吧RawLocalFileSystem作为本地文件系统使用
static FSDataOutputStream create(FileSystem fs, Path file, FsPermission permission)
********
FSDataOutputStream create(Path f, FsPermission permission, EnumSet flags, int bufferSize,
short replication, long blockSize, Progressable progress,
org.apache.hadoop.fs.Options.ChecksumOpt checksumOpt)
--->创建FSDataOutputStream并有自定义的校验和选项 参数:
f 打开的文件名 permission 权限 flags创建使用这个流的标志
bufferSize 使用的buffer的大小 checksum校验参数,如果空择取conf的配置
boolean createNewFile(Path f)
--->创建指定路径一个全新的0长度文件,如果创建失败或者文件已存在则返回false
Path createSnapshot(Path path,String snapshotName)
Path createSnapshot(Path path)
--->创建一个快照,返回快照路径
void createSymlink(Path target, Path link, boolean createParent)
--->创建一个已存在文件的链接 createParent如果为true则缺失的父路径将会被创建
abstract boolean delete(Path f, boolean recursive)
--->删除一个文件 recursive是否递归删除
boolean deleteOnExit(Path f) --->文件系统关闭是删除
void deleteSnapshot(Path path, String snapshotName)
--->删除快照
static void enableSymlinks() --->禁用链接
boolean exists(Path f) --->检查文件是否存在
static FileSystem get(URI uri, Configuration conf, String user)
static FileSystem get(URI uri, Configuration conf)
static FileSystem get(Configuration conf)
--->(根据uri 已经传递的配置 用户 )获得FileSystem实例
AclStatus getAclStatus(Path path) --->获得文件或者目录的acl状态
static List getAllStatistics()
--->返回具有统计信息的文件系统类
ContentSummary getContentSummary(Path f)
--->返回指定路径的内容摘要
long getDefaultBlockSize(Path f) --->返回最大输入文件的字节数(文件系统的默认块大小),路径只是为了定位文件系统不一定要存在
short getDefaultReplication(Path path)
--->返回副本数目
static URI getDefaultUri(Configuration conf)
--->返回默认的url地址
BlockLocation[] getFileBlockLocations(FileStatus file, long start, long len)
BlockLocation[] getFileBlockLocations(Path p, long start, long len)
--->返回给定文件包含的主机名、偏移量、部分大小
FileChecksum getFileChecksum(Path f)
--->获得文件的校验和。
FileStatus getFileLinkStatus(Path f) --->返回文件路径状态对象,如果路径是链接则返回链接的FileStatus 如果文件系统不支持链接,则相当与个体FileStatus函数
static Class extends FileSystem> getFileSystemClass(String scheme, Configuration conf)
--->获得一个文件系统
Path getHomeDirectory() --->返回当前用户在文件系统中的家目录
Path getLinkTarget(Path f) --->返回指定链接的目标
static LocalFileSystem getLocal(Configuration conf)
--->返回本地文件系统
String getScheme() --->获取协议
FsServerDefaults getServerDefaults(Path p)
--->返回一组服务器的默认配置值
static org.apache.hadoop.fs.FileSystem.Statistics getStatistics(String scheme, Class extends FileSystem> cls)
--->返回指定文件系统的统计信息
FsStatus getStatus(Path p)
FsStatus getStatus() --->返回文件系统的使用和容量的状态对象
abstract URI getUri()
--->返回一个uri这个uri的身份和权限标识这个文件系统
long getUsed()
--->返回该文件系统中所有文件的总大小
abstract Path getWorkingDirectory()
--->获取给定文件系统的当前工作目录
byte[] getXAttr(Path path, String name)
--->获取扩展名属性
Map getXAttrs(Path path)
--->获取文件或目录中所有的扩展名键值对
Map getXAttrs(Path path, List names)
--->获取文件或目录中所有的扩展名键值对 names - XAttr names.
FileStatus[] globStatus(Path pathPattern)
--->返回匹配这个pathPattern的所有文件,不是校验和文件,结果以名称排序,文件名pathpattern以规则字符和特殊匹配字符组成。
FileStatus[] globStatus(Path pathPattern, PathFilter filter)
--->当名称路径匹配到pathPattern,并且被用户提供的过滤器接受时返回FileStatus数据
void initialize(URI name, Configuration conf)
--->构建一个新的文件系统后调用
boolean isDirectory(Path f)
--->如果路径为目录则返回true
boolean isFile(Path f)
--->如果路径为文件则返回true
org.apache.hadoop.fs.RemoteIterator listCorruptFileBlocks(Path path)
--->返回给定路径下的损坏文件的迭代器
org.apache.hadoop.fs.RemoteIterator listFiles(Path f, boolean recursive)
--->列出给定路径下文件的的状态信息和块信息
org.apache.hadoop.fs.RemoteIterator listLocatedStatus(Path f)
--->如果给定的路径为一个目录则返回这个目录下所有的文件和目录状态信息
abstract FileStatus[] listStatus(Path f)
--->如果给定文件是一个目录,列出给定path下的所有文件或目录
FileStatus[] listStatus(Path[] files)
---> 使用默认路径过滤器在给定的路径列表中过滤文件/目录。
FileStatus[] listStatus(Path[] files, PathFilter filter)
FileStatus[] listStatus(Path f, PathFilter filter)
---> 使用用户自定义路径过滤器在给定的路径列表中过滤文件/目录。
List listXAttrs(Path path)
--->获取一个文件或者目录的扩展属性名
Path makeQualified(Path path)
--->确保一个path指定了文件系统
static boolean mkdirs(FileSystem fs, Path dir, FsPermission permission)
--->创建指定权限的目录
boolean mkdirs(Path f)
--->创建默认权限的目录
abstract boolean mkdirs(Path f, FsPermission permission)
--->把给定的文件和不存在的父文件都放在目录中
void modifyAclEntries(Path path, List aclSpec)
--->修改文件和ACL的条目
void moveFromLocalFile(Path src, Path dst)
void moveFromLocalFile(Path[] srcs, Path dst)
--->拷贝到HDFS并且删除本地源
void moveToLocalFile(Path src, Path dst)
--->拷贝到本地并删除源
static FileSystem newInstance(Configuration conf)
--->返回一个特定配置的集成fileSystem的类
static FileSystem newInstance(URI uri, Configuration conf)
--->返回一个URL scheme和 authority指定的FileSystem
Returns the FileSystem for this URI's scheme and authority.
static FileSystem newInstance(URI uri, Configuration conf, String user)
--->返回一个URL scheme和 authority,passeduser指定的FileSystem
static LocalFileSystem newInstanceLocal(Configuration conf)
--->获得一个本地文件系统类
FSDataInputStream open(Path f)
--->在制定路径上打开FSDataInputStream流
abstract FSDataInputStream open(Path f, int bufferSize)
--->在制定路径上打开FSDataInputStream流
static void printStatistics()
--->打印所有文件系统的所有统计信息
protected void processDeleteOnExit()
--->删除所有被标记为退出时删除的文件
void removeAcl(Path path)
--->除了基本ACL条目文件和目录之外删除所有文件 path修改的路径
void removeAclEntries(Path path, List aclSpec)
--->从文件或者目录中删除所有的ACL条目
void removeDefaultAcl(Path path)
--->从文件或者目录中删除所有的ACL条目
void removeXAttr(Path path, String name)
--->指定路径下删除所有扩展属性
abstract boolean rename(Path src, Path dst)
--->重命名
void renameSnapshot(Path path, String snapshotOldName, String snapshotNewName)
--->重命名快照
protected Path resolveLink(Path f) --->返回指定链接的目标
Path resolvePath(Path p) --->通过解析符号链接或者挂载点返回路径的完全限定路径,
void setAcl(Path path, List aclSpec)
--->丢弃所有现在的条目,完全替代文件或者目录的ACL条目
static void setDefaultUri(Configuration conf, URI uri)
static void setDefaultUri(Configuration conf, String uri)
--->在configuration中设置默认文件系统的URI
void setOwner(Path p, String username, String groupname)
--->设置path的拥有者
void setPermission(Path p, FsPermission permission)
--->设置path的权限
boolean setReplication(Path src, short replication)
--->为现存的文件设置副本数
void setTimes(Path p, long mtime, long atime)
--->设置文件的访问时间
void setVerifyChecksum(boolean verifyChecksum)
--->设置验证校验和标志
abstract void setWorkingDirectory(Path new_dir)
--->为给定文件系统设置当前工作目录
void setWriteChecksum(boolean writeChecksum)
--->设置写校验标志
void setXAttr(Path path, String name, byte[] value)
--->为一个文件或者目录设置扩展属性
void setXAttr(Path path, String name, byte[] value, EnumSet flag)
--->为一个文件或者目录设置扩展属性
Path startLocalOutput(Path fsOutputFile, Path tmpLocalFile)
--->返回一个用户可以写入输出的本地文件
boolean supportsSymlinks()
--->是否支持符号链接。