首页 理论教育 Hadoop文件系统外部接口优化

Hadoop文件系统外部接口优化

时间:2023-06-24 理论教育 版权反馈
【摘要】:Hadoop 提供了很多文件系统的访问接口,由于Hadoop 是用Java 进行开发的,所以可以通过调用Java API 实现与Hadoop 文件系统的交互操作。Java 接口在实际的应用中,对Hadoop 中大部分文件系统之间的交互,大多数还是通过Java API 实现的,通过实现FileSystem 类来具体操作。C 语言库Libhdfs 是用于接入Hadoop 分布式文件系统的C API。

Hadoop文件系统外部接口优化

Hadoop 提供了很多文件系统的访问接口,由于Hadoop 是用Java 进行开发的,所以可以通过调用Java API 实现与Hadoop 文件系统的交互操作。除此之外,使用文件系统的方法还有:命令行、HTTP、C 语言API、NFS、FUSER 等。

(1)HTTP 调用

WebHDFS 和SWebHDFS 协议是调用HDFS 文件系统的两种协议,这两种方法属于HTTP操作。WebHDFS 的文件系统使用方式为“webhdfs:/ /”,如果需要使用SSL 进行保护,就应使用SWebHDFS,其使用方式为“swebhdfs:/ /”。需要注意点是:HTTP 的交互方式比原生的Java客户端慢,因而不适合操作大文件。该调用方法有两种访问方式:直接访问和通过代理访问。该调用方法不受限于Hadoop 的版本,除了WebHDFS 和SWebHDFS,HFTP 和HSFTP 都属于HTTP 调用方式的一种。

(2)Java 接口

在实际的应用中,对Hadoop 中大部分文件系统之间的交互,大多数还是通过Java API 实现的,通过实现FileSystem 类来具体操作。虽然有很多服务有自带访问工具,但对接它们的接口在HDFS 中依旧被广泛使用,用来进行Hadoop 文件系统之间的相互调用,例如:FTP、S3、SWIFT 等服务。

(3)C 语言库

Libhdfs 是用于接入Hadoop 分布式文件系统(HDFS)的C API。它以操纵HDFS 文件和文件系统为目的,为HDFS API 的子集提供C API。Libhdfs 是Hadoop 发行版的一部分,使用该接口可以实现任意Hadoop 文件系统的访问,也可以使用JNI(Java Native Interface)调用Java 文件系统客户端,Libhdfs API 是Hadoop FileSystem API 的子集。Libhdfs 的头文件详细描述了每个API,可在“$HADOOP_HDFS_HOME / include / hdfs.h”中找到。(www.xing528.com)

(4)WebDAV

“HDFS-WebDAV”能够将已经搭建好的HDFS 文件系统进行挂载,从而可以实现将大部分操作系统中的WebDAV 共享作为本地文件系统,可以像使用本地文件系统一样使用HDFS。

(5)FUSE

用户空间文件系统(Filesystem in USErspace,FUSE)是将文件系统整合为一个UNIX 文件系统,在用户控件中执行。如果想将数据备份到HDFS 中,用Linux Fuse 的功能将HDFS 挂载到本地的文件系统下会是一个非常好的选择。通过使用FUSE,Hadoop 的任意文件系统都可以作为一个标准文件系统进行挂载,在挂载成功后,就可以使用Unix 的基本命令(ls、cat 等)与该文件系统进行交互,还可以编程对接原生的API 进行访问。

(6)Thrift

Hadoop 是目前使用比较多的分布式文件系统,由于Hadoop 是用Java 写的,对非Java 程序人员,不好直接使用它的接口,不过它提供了Thrift 接口服务器,因此,也可以采用其他语言来编写Hadoop 的客户端。Thrift 是一个支持跨种语言的远程调用框架,通过Thrift 远程调用框架,结合“hadoop1.x”中的Thrift,编写了一个针对“hadoop2.x”的Thrift,供外部程序调用。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈