在hortonworks hadoop(aws ec2)上访问webhdfs

zynd9foi  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(464)

我在amazonec2机器上面临一个webhdfs访问问题。我已安装hortonworks hdp 2.3 btw。
我可以通过以下http请求在浏览器(chrome)中从本地计算机检索文件状态:

http://<serverip>:50070/webhdfs/v1/user/admin/file.csv?op=GETFILESTATUS

这工作正常,但如果我试图打开文件与 ?op=OPEN ,然后它将我重定向到计算机的专用dns,我无法访问:

http://<privatedns>:50075/webhdfs/v1/user/admin/file.csv?op=OPEN&namenoderpcaddress=<privatedns>:8020&offset=0

我还尝试通过以下命令从aws机器本身访问webhdfs:

[ec2-user@<ip> conf]$ curl -i http://localhost:50070/webhdfs/v1/user/admin/file.csv?op=GETFILESTATUS
curl: (7) couldn't connect to host

有人知道为什么我不能连接到localhost或者为什么本地机器上的open不能工作吗?不幸的是,我找不到任何教程来为amazon机器配置webhdfs。
提前谢谢

olqngx59

olqngx591#

所发生的是namenode将您重定向到datanode。看起来您安装了一个单节点集群,但是概念上namenode和datanode是不同的,并且在您的配置中datanode在您的ec2vpc的私有端上活动/侦听。
您可以将集群重新配置为在公共ip/dns上承载数据节点(请参阅hdfs对多宿网络的支持),但我不会这样做。我认为正确的解决方案是添加know gateway,它是一个专门的组件,用于从公共api访问私有集群。具体来说,您必须配置datanode url,请参阅第5章。将内部节点Map到外部URL。这里的例子似乎很适合你的情况:
例如,使用webhdfs服务上载文件时:
外部客户机向网关webhdfs服务发送请求。
网关使用服务url将请求代理给webhdfs。
webhdfs确定要在哪些datanode上创建文件,并在包含datanode主机信息的http重定向中将上载路径作为位置头返回。
网关通过将重定向中的datanode主机名Map到外部可解析的主机名来增强路由策略。
外部客户端继续通过网关上载文件。
网关通过使用增强路由策略将请求代理到datanode。
datanode返回上传的状态,网关再次转换信息,而不公开任何内部集群细节。

相关问题