Hadoop分布式文件系统(HDFS)之文件系统(详细版)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_42278880/article/details/102551249

交朋友增体面,不如交朋友益身心
教子弟求显荣,不如教子弟立品行

推荐书目电子版下载

Hadoop必读书目(精选)
本文参考文献包含于上述书籍

HDFS快速入门

Hadoop分布式文件系统(HDFS)快速入门

HDFS知识梳理详细版

Hadoop分布式文件系统(HDFS)知识梳理(超详细)

HDFS文件系统详细介绍

Hadoop有一个抽象的文件系统概念,HDFS只是其中的一个实现
Java抽象类org.apache.hadoop.fs.FileSystem定义了Hadoop中一个文件系统的客户端接口,并且该抽象类有几个具体实现,其中和Hadoop紧密相关的见下表

文件系统 URI方案 Java实现(都在org.apache.hadoop包中) 描述
Local file fs.LocalFileSystem 使用客户端校验和的本地磁盘文件系统
使用RawLocalFileSystem表示无校验和的本地磁盘文件系统
HDFS hdfs hdfs.DistributedFileSystem Hadoop的分布式文件系统
将HDFS设计成与MapReduce结合使用,可以实现高性能
WebHDFS Webhdfs Hdfs.web.WebHdfsFileSystem 基于HTTP的文件系统,提供对HDFS的认证读/写访问
Secure WebHDFS swebhdfs hdfs.web.SWebHdfsFileSystem WebHDFS的HTTPS版本
HAR har fs.HarFileSystem 一个构件在其他文件系统之上用于文件存档的文件系统
Hadoop存档文件系统通常用于将HDFS中的多个文件打包成一个存档文件,以减少NameNode内存的使用
使用Hadoop的achive命令来创建HAR文件
View viewfs viewfs.ViewFileSystem 针对其他Hadoop文件系统的客户端挂载表
通常用于为联邦NameNode创建挂载点
FTP ftp fs.ftp.FTPFileSystem 由FTP服务器支持的文件系统
S3 S3a fs.s3a.S3AFileSystem 由Amazon S3支持的文件系统,代替老版本的s3n(S3 原生)实现
Azure wasb fs.azure.NativeAzureFileSystem 由Microsoft Azure支持的文件系统
Swift swift fs.swift.snative.SwiftNativeFileSystem 由OpenStack Swift支持的文件系统

Hadoop对文件系统提供了许多接口,它一般使用URI方案来选取合适的文件系统实例进行交互
命令hadoop fs -ls file:////可以列出本地文件系统根目录下的文件

接口

Hadoop是用Java写的,通过Java API可以调用大部分Hadoop文件系统的交互操作,比如文件系统的命令解释器就是一个Java命令,它是用Java的FileSystem类来提供文件系统操作
下面是一些文件系统接口介绍,这些接口通常与HDFS一同使用,因为Hadoop中的其它文件系统一般有访问基本文件系统的工具,但它们大多数都能用于任何Hadoop文件系统

  1. HTTP
  • 由WebHDFS协议提供的HTTPP REST API使得其他语言开发的应用能够很方便地与HDFS交互
  • HTTP接口比原生的Java客户端要慢,尽量不要使用它来传输特大数据
  • 通过HTTP访问HDFS有两种方法,两者都使用了WebHDFS协议
    • 直接访问
      HDFS守护进程直接服务于来自客户端的HTTP请求
    • 通过代理(一个或多个)访问
      客户端通常使用DistributedFileSystem API访问HDFS
  1. C语言
  • Hadoop提供一个名为libhdfs的C语言库,该语言库是Java FileSystem接口类的一个镜像(它被写成访问HDFS的C语言库,但其实它可以访问任何一个Hadoop文件系统)
  • 使用Java原生接口(JNI)调用Java文件系统客户端
  • 还有一个libwebhdfs库,该库使用了WebHDFS接口
  • 其开发滞后于Java API,一些新特性不支持
  1. NFS
  • 使用Hadoop的NFSv3网关将HDFS挂载为本地客户端的文件系统是可行的
  • 可以使用Unix实用程序(如ls和cat)与该文件系统交互,上传文件,通过任意一种编程语言调用POSIX库来访问文件系统
  • 关于如何配置和运行NFS网关,以及如何从客户端连接网关,可以参考Hadoop官网相关文档资料
  1. FUSE
  • 用户空间文件系统(Filesystem in Userspace)允许将用户空间实现的文件系统作为Unix文件系统进行集成
  • 通过使用Hadoop的Fuse-DFS功能模块,HDFS(或任何一个Hadoop)文件系统均可以作为一个标准的本地文件系统进行挂载
  • Fuse-DFSS是用C语言实现的,使用libhdfs作为访问HDFS的接口
  • 在写操作时,Hadoop NFS网关对于挂载HDFS来说是更健壮的解决方案,相比Fuse-DFS而言应优先选择

有疑问的朋友可以在下方留言或者私信我,我尽快回答
欢迎各路大神萌新指点、交流!
求关注!求点赞!求收藏!

猜你喜欢

转载自blog.csdn.net/weixin_42278880/article/details/102551249