Google Compute Engine上的Hadoop集群:通过REST访问主节点

时间:2014-10-29 20:27:25

标签: google-compute-engine oryx

我在谷歌计算引擎上部署了一个hadoop集群。然后,我在hadoop集群的主节点上运行机器学习算法(Cloudera的Oryx)。通过HTTP REST API访问此算法的输出。因此,我需要通过Web浏览器或REST命令访问输出。但是,我无法解析主节点输出的地址,其格式为http://CLUSTER_NAME-m.c.PROJECT_NAME.internal:8091

我已允许http流量并允许访问网络上的端口80和8091。但我无法解决给出的地址。请注意,此http地址不是主节点实例的IP地址。

我已经按照示例访问了计算实例的IP地址。但是,我找不到在GCE上访问hadoop集群的单个节点的示例,该节点遵循此格式http://CLUSTER_NAME-m.c.PROJECT_NAME.internal:8091。任何帮助,将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:1)

您看到这个的原因是“HOSTNAME.c.PROJECT.internal”名称只能从同一个实例本身的GCE网络中解析;这些域名全局可见。因此,如果您首先要SSH到主节点,然后尝试curl http://CLUSTER_NAME-m.c.PROJECT_NAME.internal:8091,那么您应该成功检索内容,而尝试从您的个人浏览器访问将无法将该主机名解析为任何IP地址。

所以不幸的是,检索这些内容的最快方法确实是使用GCE实例的external IP address。如果您已经在网络上打开了端口8091,只需使用gcutil getinstance CLUSTER_NAME-m并查找指定external IP address的条目;然后将其插入您的网址:http://[external ip address]:8091

如果您使用bdutil启用了群集,则可以通过运行bdutil socksproxy命令来更复杂但更好地访问群集。这将打开作为SOCKS5代理的主节点的动态端口转发SSH隧道,以便您可以将浏览器配置为使用localhost:1080作为代理服务器,确保启用远程DNS解析,然后访问您的浏览器使用正常的http://CLUSTER_NAME-m.c.PROJECT_NAME.internal:8091网址。