Hadoop WebHDFS Java客户端API支持SSL和基本身份验证

Hadoop WebHDFS Java客户端API支持SSL和基本身份验证,java,spring,hadoop,webhdfs,Java,Spring,Hadoop,Webhdfs,我有一个Spring Boot应用程序,它使用Spring纱线引导: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在启动时自动为我做准备):

我有一个Spring Boot应用程序,它使用
Spring纱线引导: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在启动时自动为我做准备):

而且一切都按照预期进行,但当我得到两个新的要求时,问题就出现了

首先,从现在起,HDFS将使用SSL进行保护。我似乎找不到任何方法告诉我的应用程序,以webhdfs://开头的fsURI实际上是一个https连接。如果我直接给出https URL,我会得到一个例外:

java.io.IOException: No FileSystem for scheme: https
    at org.apache.hadoop.fs.FileSystem.getFileSystemClass(FileSystem.java:2584)
。。。这是由以下代码引起的:
FileSystem.get(配置)。

这件事快把我逼疯了,我似乎找不到办法通过这件事

第二个要求是,我需要使用基本身份验证对WebHDFS进行身份验证。为此,我在客户端API中也找不到任何方法。

以前有人做过吗?有什么指示可以分享吗?或者可能有人知道我可以使用不同的客户端API来实现这一点

一种选择是使用RestTemplate或任何其他REST服务使用者API自己实现REST调用,但这看起来并不是特别的用例,所以我真的希望已经完成了一些工作

编辑:

java.io.IOException: No FileSystem for scheme: https
    at org.apache.hadoop.fs.FileSystem.getFileSystemClass(FileSystem.java:2584)

找到了HTTPS问题的解决方案。你应该使用
swebhdfs://
作为url前缀,一切都会正常工作。仍然没有找到基本身份验证问题的解决方案。

仅供读者参考。由于我没有找到任何方法在Hadoop API中使用基本身份验证,因此我使用ApacheHTTP客户端和Spring的Rest模板实现了与HDFS的少量交互。