0

我在Amazon EC2计算机上遇到WebHDFS访问问题。我已经安装了Hortonworks HDP 2.3 btw。在Hortonworks Hadoop(AWS EC2)上访问WebHDFS

我可以检索从我的本地机器上的浏览器(Chrome)与下一个HTTP请求中的文件状态:

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:

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

有谁知道我为什么不能连接到本地主机,或者为什么我的本地机器上的OPEN不起作用? 不幸的是,我找不到任何教程来为Amazon机器配置WebHDFS。

由于提前

+0

见http://stackoverflow.com/questions/19936313/webhdfs-returns-wrong-datanode-address –

回答

1

什么情况是,名称节点将您重定向到数据管理部。似乎您安装了单节点集群,但概念上名称节点和数据节点是不同的,并且在您的配置中,数据节点在您的EC2 VPC的私有端上活动/收听。

您可以重新配置您的群集以承载公有IP/DNS上的datanodes(请参阅HDFS Support for Multihomed Networks),但我不会这么做。我认为正确的解决方案是添加一个Know gateway,这是一个专用组件,用于从公共API访问专用群集。具体而言,您将必须配置datanode URL,请参见Chapter 5. Mapping the Internal Nodes to External URLs。这个例子似乎发现对你的情况:

例如,上载与WebHDFS服务的文件时:

  • 外部客户端发送到网关WebHDFS服务的请求。

  • 网关使用服务URL将请求代理到WebHDFS。

  • WebHDFS确定哪个的DataNodes上创建文件,并返回 的路径上载作为HTTP重定向一个位置标头, 包含数据管理部的主机信息。

  • 网关根据重定向中的数据节点主机名 将路由策略扩展为映射到外部可解析的主机名。

  • 外部客户端继续通过网关上传文件。

  • 网关通过使用扩充的 路由策略代理请求到数据节点。

  • 数据管理部再次返回上传和网关的状态 将这些信息没有暴露任何内部群集 细节。

+0

感谢您的答复。假设我已经安装了单个节点群集,您是对的。我想我会尝试设置诺克斯网关。我让你知道如果这解决了问题 – Baeumla

+0

我试图解决我的问题与WebHDFS和knox网关,但我无法启动ldap演示服务器,所以我试图使用HTTPfs,这工作正常。尽管如此,谢谢你的回答! – Baeumla