Hadoop系列:HDFS交互操作接口(三)
[摘要] Hadoop是由java编写的,所以HDFS提供了完整的java程序应用接口,其他的访问都是建立在这些应用接口之上。要能访问HDFS,则HDFS客户端必须有一份hdfs的配置文件hdfs-site.xml,以获取NameNode的相关信息,每个应用程序也必须能访问Hadoop的程序库JAR文件,也就是前面说的配置环境变量。
java.net.URL
1 | package com.diudiu.hdfs.api; |
上述代码中,URL.setURLStreamHandlerFactory是注册自定协议。这里FsUrlStreamHandlerFactory注册了hdfs协议。有关setURLStreamHandlerFactory的一些问题:《java:解决URL.setURLStreamHandlerFactory只能被jvm调用一次的问题》
编译代码并打包:
1 | gradle clean build |
生成jar包hdfs-1.0.0.jar,在hdfs的target/libs目录下,至于jar文件的名称,是在build.gradle中配置(可以参考【附录】),可根据自己的情况而定。命令行运行时,需要指定Main方法入口类,hdfs://master:30010这个是在core-site.xml中配置的,配置内容如下。需要注意的是我的部分文章使用的是9000端口,有些是30010端口,原因是在某些机器上安装了php-fpm,该进程使用了9000端口。
1 | <configuration> |
/input/word是hdfs上的一个文件,写入了一些内容上传到hdfs的,如果不确定有哪些文件,可以使用命令hadoop fs -ls /
来查看。
完整命令如下:
1 | hadoop jar hdfs/target/libs/hdfs-1.0.0.jar com.diudiu.hdfs.api.UrlCat hdfs://master:30010/input/word |
运行结果:
【附录】
build.gradle
1 | group 'com.diudiu' |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 独特的留白!
评论