- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 Spring 应用程序,它使用 WebHDFS 从 HDFS 读取文件。当我在IDEA中测试它时,它有效。但是当我构建项目并将 Docker 镜像部署到本地虚拟机或连接到 HDFS 的服务器上后,我得到:
AuthenticationException: Unauthorized
在我的本地计算机上,我必须定期初始化 token
kinit
用于身份验证。如果我不这样做,我会得到同样的错误。我在服务器上测试了没有 Docker 的应用程序,它也可以工作。我认为 Docker 镜像没有看到 token 。但我不知道该怎么办。
Kerberos 用于安全。
有什么建议吗?
最佳答案
好的。我做到了。虽然存在一些问题,但这就是最终变体的样子。
我的 docker 。 krb5.conf 和 keytab 与我的 docker 文件位于同一文件夹中。当我构建项目时,它们被添加到容器和我使用的入口点中
-Djava.security.krb5.conf
提供 krb5 位置。还有一些调试选项+我连接mongo。
FROM java:8
ADD report.jar report.jar
ADD krb5.conf /etc/krb5.conf
ADD evkuzmin.keytab /etc/evkuzmin.keytab
RUN sh -c 'touch report.jar'
ENTRYPOINT ["java","-Dspring.data.mongodb.uri=mongodb://audpro_mongo/report","-Djavax.net.debug=all","-Dsun.security.spnego.debug=true","-Dsun.security.krb5.debug=true","-Djava.security.krb5.conf=/etc/krb5.conf","-jar","/report.jar"]
然后我使用 KerberosRestTemplate
连接到 webhdfs
public String getReportJSON() throws URISyntaxException {
KerberosRestTemplate restTemplate = new
KerberosRestTemplate("/etc/evkuzmin.keytab", "EvKuzmin@DOMAIN");
URI uri = new URI("http" + "://" + host + ":" + port + "/webhdfs/v1" + path + "?op=OPEN");
String json = restTemplate.getForObject(uri, String.class);
return json;
}
如果你想在没有docker的情况下运行应用程序,只需构建它并将keytab添加到与jar相同的方向即可。然后更改 /etc/evkuzmin.keytab
使其指向新位置。
关于spring - Docker Kerberos WebHDFS 身份验证异常 : Unauthorized,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45959815/
我看到 webhdfs 不支持目录大小。在 HDFS 中,我可以使用 hdfs dfs -du -s -h /my/directory 有没有办法从 webHDFS 派生这个?我需要以编程方式执行此操
我在 centos 7 上使用 hadoop 2.7.1 如果我想将 webhdfs 与 Hadoop 集群一起使用 我应该配置这个属性 dfs.webhdfs.enabled
curl -i -X PUT "http://SomeHostname:50070/webhdfs/v1/file1?op=CREATE" HTTP/1.1 307 TEMPORARY_REDIREC
以下命令在Linux上有效,但在Windows上失败。在运行命令之前,我使用kinit获取有效的Kerberos票证。 curl -v -i --negotiate -u : -b ~/cookiej
我想使用 webhdfs 将一个或多个文件从一个路径移动到另一个路径。我正在使用 hadoop 1.3。是否存在这样的REST调用 最佳答案 是的,您可以使用 rename “重命名”文件的路径。 关
我已经阅读了所有这些链接中的 Web Hdfs link1 link2 link3 使用 telnet 检查 - 端口已打开 在cloudera(virtual box)中进行必要的设置以启用webh
我无法将文件传输到 Hadoop。下面我添加我使用过的命令和得到的错误。 命令 1: curl -i -X PUT "http://myip:50070/webhdfs/v1/tmp/tempForT
我有一个 hdfs 集群 (hadoop 2.7.1),有一个名称节点、一个辅助名称节点、3 个数据节点。 当我启用 webhdfs 并进行测试时,我发现它总是重定向到未配置为数据节点的“localh
我正在尝试通过 webhdfs API 从 HDFS 打开一个文件。我可以创建文件并上传它们,但是一旦我尝试打开我就会收到此错误 {"RemoteException":{"exception":"Nu
Hortonworks Sandbox 文件浏览器显示 WebHdfsException,并且在 CLI 中我无法创建目录或文件。怎么了? WebHdfsException at /filebrows
有没有一种方法可以将文件从(比方说)hdfs://old 复制到 hdfs://new 而无需先下载文件然后再上传又是? 最佳答案 不知道 WebHDFS,但这可以使用 hadoop distcp 实
我已经使用 Kerberos (CDH4.3) 配置了启用安全性的 Hadoop HDFS。它工作正常,我可以使用命令行工具完成所有操作。还有一些其他非 hadoop 集群节点需要通过 REST AP
WebHDFS 真的不支持 SequenceFiles 吗? 我找不到任何说明它确实如此的东西。我遇到了常见的小文件问题,并且相信 SequenceFiles 可以正常工作,但我需要使用 WebHDF
我在路径/user/admin/foo.txt 的 HDFS 中创建了一个简单的文件 我可以在 Hue 中看到这个文件的内容。 我如何发出命令 curl -i http://namenode:5007
我已经在 Windows 中使用 SASL 为 hadoop-2.6.0 配置了 kerberos 安全性。 一切正常。但是 webhdfs 不能通过 https 协议(protocol)工作。 Pe
我使用 ubuntu 12,Hadoop 1.0.3,我使用 webhdfs curl 创建文件。 curl -i -X PUT "http://localhost:50070/webhdfs/v1/
我正在构建一个将一些数据推送到我的 HDFS 中的客户端。因为 HDFS 位于防火墙后面的集群内,所以我使用 HttpFS 作为代理来访问它。当我尝试读取/写入 HDFS 时,客户端退出并出现 IOE
我设置了单节点 Hadoop 集群来使用 HDFS 进行一些实验。通过网络访问一切看起来都很好,我创建了一个专用文件夹并使用命令行将文件从本地系统复制到它。这一切都出现在网络用户界面中。之后我通过 W
是否有任何 Spring 支持 wedhdfs?我没有在谷歌上找到任何有用的链接。 我想通过 webhdfs 连接到具有正常身份验证和 kerberos 身份验证的 hadoop。 spring 支持
WebHDFS REST API 之间有什么区别?和 HttpFS ? 如果我理解正确的话: HttpFS 是一个独立的服务,在 HDFS 之上公开了一个 REST API WebHDFS 是一个内置
我是一名优秀的程序员,十分优秀!