Hadoop WebHDFS Java客户端API启用SSL和基本身份验证

时间:2015-11-18 16:29:34

标签: java spring hadoop webhdfs

我有一个Spring Boot应用程序,它使用spring-yarn-boot:2.2.0.RELEASE来访问Hadoop文件系统(HDFS)。我所做的操作是LISTSTATUSGETFILESTATUSOPEN(读取文件)。 HDFS URI通过application.properties指定:

spring.hadoop.fsUri=webhdfs://127.0.0.1:50070/webhdfs/v1/

我创建了一个我提供Hadoop配置的bean(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来实现这个目标吗?

一种选择是使用RestTemplate或任何其他REST服务消费者API自己实现REST调用,但这看起来不是那么特殊的用例,所以我真的希望已经有一些事情已经完成

修改

找到了HTTPS问题的解决方案。一个人应该使用swebhdfs://作为url前缀,一切都会起作用。仍然没有找到Basic Auth问题的解决方案。

0 个答案:

没有答案