开发者社区 问答 正文

调用ECS上部署的Haoop,使用WebHDFS RestAPI调用重定向错误

[font='Helvetica Neue', 'Luxi Sans', 'DejaVu Sans', Tahoma, 'Hiragino Sans GB', STHeiti, 'Microsoft YaHei'] 我们尝试在ECS上部署了一个Hadoop节点,然后使用WebHDFS REST API来访问hdfs的接口。我们遇到的问题是,当我们调用形如:115.32.12.31:50070/webhdfs/v1/input/a.py?op=OPEN时,hadoop会重定向到  ecs实例名:50075/webhdfs/v1/input/a.py?op=OPEN&user.name=root&namenoderpcaddress=0.0.0.0:9000&offset=0, 问题就在于重定向的HOST是ECS的主机名,而不是外网ip,所以无法解析这个主机名。怎么让hadoop redirect的地址是我访问的外网地址?

展开
收起
dangyadang 2016-08-06 11:43:30 3850 分享 版权
阿里云 AI 助理回答

根据您描述的问题,您在ECS上部署了Hadoop节点,并尝试通过WebHDFS REST API访问HDFS文件时遇到了重定向问题。这通常是因为Hadoop的架构设计中,WebHDFS的HTTP请求首先由NameNode处理(默认端口50070),然后NameNode会重定向客户端到实际存储数据的DataNode(默认端口50075)去获取文件内容。这是正常的行为,但似乎您的环境配置或访问方式上可能存在问题。为了解决您的困惑,这里提供一些建议步骤和注意事项:

  1. 确认集群配置

    • 确保您的Hadoop集群配置正确,特别是NameNode与DataNode之间的通信没有问题。
    • 检查hdfs-site.xml配置文件中是否有关于WebHDFS的特殊设置,比如是否启用了HTTPS或者有特定的代理配置。
  2. 处理重定向

    • 在调用WebHDFS API的客户端代码中,需要支持自动跟随HTTP重定向。大多数现代HTTP客户端库(如Python的requests库、Java的HttpURLConnection等)默认支持重定向,但可能需要显式开启或配置。
  3. 网络可达性

    • 确认从您的客户端到目标DataNode(即重定向后的地址)的网络路径是通畅的。ecs实例名可能无法直接解析为IP地址,您需要确保能够通过正确的IP地址访问DataNode服务。
  4. 安全设置

    • 如果您的Hadoop集群启用了Kerberos等安全措施,确保在发起WebHDFS请求时包含了必要的认证信息。
  5. 检查防火墙规则

    • 确保ECS实例的安全组规则允许外部访问50070和50075端口,并且内部网络配置没有阻止DataNode间的通信。
  6. 使用完全限定域名(FQDN)

    • 考虑在集群配置中使用完全限定域名(FQDN)而非IP地址或主机名,以避免DNS解析问题导致的连接失败。

综上所述,遇到重定向是预期行为,关键在于客户端需正确处理这一重定向过程,并确保网络及安全配置支持这一交互。如果问题依旧,请检查日志文件(如NameNode和DataNode的日志)以获取更详细的错误信息,以便进一步诊断问题所在。

请根据上述建议检查并调整您的配置和访问方式,希望这能帮助您解决问题。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答