HFTP文件系统解析

初探

抽象类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 s.s3native.NativeS3FileSystem
S3 (blockbased) s3 fs.s3.S3FileSystem

Hadoop提供了很多接口来访问这些文件系统,最常用的是通过URI前缀来访问正确的文件系统。比如:

hadoop fs -ls file:///.......
hadoop fs -ls hdfs:///.......

虽然理论上MapReduce可以使用上面这些系统,但是如果我们处理海量数据的话还是要选用一个分布式文件系统hdfs或者kfs。

配置

hadoop-default.xml关于filesystem实现的配置hadoop-default.xml

<property>
  <name>fs.file.impl</name>
  <value>org.apache.hadoop.fs.LocalFileSystem</value>
  <description>The FileSystem for file: uris.</description>
</property>

<property>
  <name>fs.fms.impl</name>
  <value>org.apache.hadoop.hdfs.FMSFileSystem</value>
  <description>The FileSystem for hdfs: uris.</description>
</property>

<property>
  <name>fs.hdfs.impl</name>
  <value>org.apache.hadoop.hdfs.DistributedFileSystem</value>
  <description>The FileSystem for hdfs: uris.</description>
</property>

spark-client关于filesystem实现的配置core-site.xml

  <property>
    <name>fs.file.impl</name>
    <value>org.apache.hadoop.fs.LocalFileSystem</value>
    <description>The FileSystem for file: uris.</description>
  </property>
  
  <property>
    <name>fs.hdfs.impl</name>
    <value>org.apache.hadoop.fs.DFileSystem</value>
  </property>

  <property>
   <name>fs.webhdfs.impl</name>
   <value>org.apache.hadoop.smw.hdfs.web.WebHdfsFileSystem</value>
  </property>

HFTP介绍

HFTP 是hadoop文件系统用来让你从一个远程的hadoop HDFS集群中读取数据的组件。这个读取是通过HTTP,并且数据源是DataNodes。HFTP是一个只读的文件系统,当你试图用来写入数据或者修改文件系统状态时,会抛出异常。

HFTP 主要的帮助在有多个HDFS集群,并存在多个版本时,将数据从一个集群迁移到另一个。HFTP 在不同版本的HDFS中是兼容写的。你可以操作例如:

hadoop distcp -i hftp://sourceFS:50070/src hdfs://destFS:8020/dest

注意HFTP是只读的,所以目标端必须是HDFS文件系统。(在这个例子中,distcp会使用新文件系统的配置运行。)

另外,HSFTP,默认使用HTTPS。这意味着数据在传输的时候会被加密。
https://hadoop.apache.org/docs/r2.6.3/hadoop-project-dist/hadoop-hdfs/Hftp.html

实现

HFTP的代码在java 类org.apache.hadoop.hdfs.HftpFileSystem 中。同样的,HSFTP也在org.apache.hadoop.hdfs.HsftpFileSystem中实现.

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容