分享

不仅是HDFS,Hadoop支持多种文件系统

cryst2l 发表于 2013-10-25 10:43:50 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 3 6181
本帖最后由 fiberlijun 于 2009-11-19 17:10 编辑
org.apache.hadoop.fs.FileSystem
这个抽象类代表hadoop的一个文件系统,目前系统已经有很多个具体实现:
文件系统                 URI前缀       hadoop的具体实现类
  Local                     file               fs.LocalFileSystem
  HDFS                     hdfs            hdfs.DistributedFileSystem
  HFTP                      hftp            hdfs.HftpFileSystem
  HSFTP                    hsftp          hdfs.HsftpFileSystem
  HAR                        har            fs.HarFileSystem
  KFS                         kfs            fs.kfs.KosmosFileSystem
  FTP                          ftp             fs.ftp.FTPFileSystem
  S3 (native)              s3n            fs.s3native.NativeS3FileSystem
  S3 (blockbased)      s3      fs.s3.S3FileSystem
Hadoop提供了很多接口来访问这些文件系统,最常用的是通过URI前缀来访问正确的文件系统。比如:
hadoop fs -ls  file:///.......
hadoop fs -ls  hdfs:///.......
MapReduce使用的文件系统
虽然理论上MapReduce可以使用上面这些系统,但是如果我们处理海量数据的话还是要选用一个分布式文件系统hdfs或者kfs。
代码片段[ol]
  •   private static FileSystem createFileSystem(URI uri, Configuration conf
  •       ) throws IOException {
  •     Class clazz = conf.getClass("fs." + uri.getScheme() + ".impl", null);
  •     if (clazz == null) {
  •       throw new IOException("No FileSystem for scheme: " + uri.getScheme());
  •     }
  •     FileSystem fs = (FileSystem)ReflectionUtils.newInstance(clazz, conf);
  •     fs.initialize(uri, conf);
  •     return fs;
  •   }[/ol]复制代码hadoop-default.xml关于filesystem实现的配置
      fs.file.impl=org.apache.hadoop.fs.LocalFileSystem
      fs.hdfs.impl=org.apache.hadoop.hdfs.DistributedFileSystem
      fs.s3.impl=org.apache.hadoop.fs.s3.S3FileSystem
      s.s3n.impl=org.apache.hadoop.fs.s3native.NativeS3FileSystem
      fs.kfs.impl=org.apache.hadoop.fs.kfs.KosmosFileSystem
      fs.hftp.impl=org.apache.hadoop.hdfs.HftpFileSystem
      fs.hsftp.impl=org.apache.hadoop.hdfs.HsftpFileSystem
      fs.ftp.impl=org.apache.hadoop.fs.ftp.FTPFileSystem
      fs.ramfs.impl=org.apache.hadoop.fs.InMemoryFileSystem
      fs.har.impl=org.apache.hadoop.fs.HarFileSystem
      增加文件系统
      只要我们实现org.apache.hadoop.fs.FileSystem接口就可以增加一种hadoop能够访问的文件系统,非常的方便
      fs.xxx.impl=org.apache.hadoop.fs.xxxFileSystem
    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/fiberlijun/archive/2009/11/13/4805966.aspx
  • 已有(3)人评论

    跳转到指定楼层
    lovejunxia 发表于 2013-10-25 10:43:50
    顶,总结得非常清楚。
    回复

    使用道具 举报

    yunjisuanxue 发表于 2013-10-25 10:43:50
    这里有人用过FTPFileSystem吗吗?
    回复

    使用道具 举报

    louisthy 发表于 2013-10-25 10:43:50
    FTPFileSystem还没有实现 吧
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    关闭

    推荐上一条 /2 下一条