我有一个使用 spring-yarn-boot:2.2.0.RELEASE
访问hadoop文件系统(hdfs)。我所做的工作是 LISTSTATUS
, GETFILESTATUS
以及 OPEN
(读取文件)。hdfs uri是通过application.properties指定的:
spring.hadoop.fsUri=webhdfs://127.0.0.1:50070/webhdfs/v1/
我创建了一个bean,为其提供hadoop配置(spring在启动时自动为我做准备):
SimplerFileSystem fs = new SimplerFileSystem(FileSystem.get(configuration));
FsShell shell = new FsShell(configuration);
一切正常,但问题来了,因为我有两个新的要求。
首先,从现在起hdfs将受到ssl的保护。我似乎找不到任何方法告诉我的应用程序,以webhdfs://开头的fsuri实际上是一个https连接。如果我直接给出https网址,我会得到一个例外:
java.io.IOException: No FileSystem for scheme: https
at org.apache.hadoop.fs.FileSystem.getFileSystemClass(FileSystem.java:2584)
... 这是由该代码引起的: FileSystem.get(configuration).
这件事快把我逼疯了,我好像找不到办法通过这个。
第二个要求是,我需要用基本的身份验证对webhdfs进行身份验证。为此,我在客户端api中也找不到任何方法。
以前有没有人做过,有什么指示可以分享?或者可能有人知道一个不同的客户端api,我可以用它来完成这个任务?
一种选择是自己用restemplate或任何其他rest服务使用者api实现rest调用,但这看起来并不是什么特别的用例,所以我真的希望已经有一些事情做了。
编辑:
找到了https问题的解决方案。一个人应该使用 swebhdfs://
作为url前缀,一切正常。仍然没有找到解决基本身份验证问题的方法。
暂无答案!
目前还没有任何答案,快来回答吧!