3

我有一个 Spring Boot 应用程序,用于spring-yarn-boot:2.2.0.RELEASE访问 Hadoop 文件系统 (HDFS)。我所做的操作是LISTSTATUS,GETFILESTATUSOPEN(读取文件)。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 URL,我会得到一个例外:

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 前缀,一切都会正常工作。仍然没有找到基本身份验证问题的解决方案。

4

0 回答 0