- 1.HDFS Shell Command
- 2.Java API
- 3.C API libhdfs
- 4.其它访问HDFS的方式
- 4.1.WebHDFS
- 4.2.HttpFS
- 4.3.WebHDFS和HttpFS之间区别
HDFS Shell Command的操作俗称HDFS命令行操作,其命令类似于Linux的shell对文件的操作,许多命令也与其相似,例如ls、mkdir、rm等等。其命令格式如下:hadoop fs < args >或hdfs dfs < args >。 更多命令的使用可以参考《HDFS——入门介绍》这篇文章中的HDFS的Shell命令。
2.Java APIHDFS Java API是大数据开发中经常使用的HDFS操作方式之一,它提供了使用Java代码去操作访问HDFS的能力。有关其具体细节可以参考使用Java API访问HFDS这篇文章。
3.C API libhdfslibhdfs是用于HDFS的基于JNI的C API,它支持C语言客户端,可以用来操纵HDFS文件以及文件系统。此外,libhdfs是Hadoop发行版中的一部分,它已经预编译在${HADOOP_HOME}/libhdfs/libhdfs.so中,可以直接使用。
4.其它访问HDFS的方式如果Hadoop集群外的一台主机作为客户端访问HDFS,在没有Hadoop和Java环境的情况下,可以通过WebHDFS和HttpFS来访问。
4.1.WebHDFS(1)WebHDFS概述
- WebHDFS 提供了访问HDFS的RESTful接口,内置组件,默认是开启的。
- WebHDFS 使得集群外的客户端可以不用安装HADOOP和JAVA环境就可以对HDFS进行访问,且客户端不受语言限制。
- 当客户端请求某文件时,WebHDFS会将其重定向到该资源所在的DataNode。
- 经常使用的HDFS Web UI,其文件浏览功能底层就是基于WebHDFS来操作HDFS实现的。
(2)基于RESTful的HDFS API——WebHDFS
- WebHDFS的文件系统schema为webhdfs:// URL格式为:webhdfs://< HOST >:< HTTP_PORT>/< PATH> 效果相当于: hdfs://< HOST>:< RPC_PORT>/< PATH>
- 在RESTful风格的API中,相应的HTTP URL格式:http://< HOST>:< HTTP_PORT>/webhdfs/v1/< PATH>?op=… 有关HTTP RESTful API参数op的详细介绍可以参考此官网。
(3)应用举例 目标:查看/source/weibo/目录下的所有文件以及目录,相当于hadoop fs -ls / 请求URL:http://node1:9870/webhdfs/v1/source/weibo?op=LISTSTATUS 结果以json格式返回:
(1)HttpFS概述
- HttpFS 是一个提供RESTful 接口的网关的服务器,该网关支持所有HDFS文件系统操作。
- 对于文件CURD的操作全部提交给HttpFS服务进行中转,然后由HttpFS去跟HDFS集群交互。
- HttpFS是一个独立于HDFS的服务,如果使用需要手动安装。
(2)HttpFS工作原理
- HttpFS本身是Java Web应用程序,使用内置的Jetty服务器对外提供服务。
- HttpFS是一个独立于HDFS的服务,其本质上是一个代理服务。
- HttpFS API的底层通过是映射到HDFS的HTTP RESTful API调用实现的。
- HttpFS默认端口号为14000。
(3)配置HttpFS (3.1)在hadoop安装目录下/etc/hadoop/的core-site.xml文件中添加以下配置:
hadoop.proxyuser.root.hosts
*
hadoop.proxyuser.root.groups
*
(3.2)同步配置文件到集群中的其他节点,并且重启HDFS集群 (3.3)启动HttpFS服务命令为:hdfs --daemon start httpfs 若启动成功,在使用jps命令后可以查看到其端口号以及对应的HttpFSServerWebServer。(注:将启动命令中的start改为stop后即为关闭命令)
(4)HttpFS的默认服务
NameDescription/confDisplay configuration properties/jmxJava JMX management interface/logLevelGet or set log level per class/logsDisplay log files/stacksDisplay JVM stacks/static/index.htmlThe static homepage(5)应用举例
-
访问HttpFS首页:http://node1:14000/static/index.html
-
查看/source/weibo/目录下的所有文件以及目录:http://node1:14000/webhdfs/v1?user.name=root&op=LISTSTATUS