【问题标题】:Hadoop distcp to S3 behind HTTP proxyHadoop distcp 到 HTTP 代理后面的 S3
【发布时间】:2013-12-13 01:32:48
【问题描述】:

我正在尝试使用 distcp 将一些文件从 HDFS 复制到 Amazon s3。我的 Hadoop 集群通过 HTTP 代理连接到互联网,但我不知道在连接到 s3 时如何指定它。我目前遇到了这个问题:

httpclient.HttpMethodDirector: I/O exception (org.apache.commons.httpclient.ConnectTimeoutException) caught when processing request: The host did not accept the connection within timeout of 60000 ms

这表明它正在尝试直接连接到亚马逊。如何让distcp 使用代理主机?

【问题讨论】:

    标签: hadoop amazon-s3 hdfs


    【解决方案1】:

    在文件 /etc/hadoop/conf/jets3t.properties 中设置这些属性

    httpclient.proxy-host = proxy.domain.com
    httpclient.proxy-port = 12345
    

    如果这在任何地方都有记录,我找不到它。但是处理它的代码在 RestS3Service 类中。您需要将此文件分发到所有节点,以便它可以进行分布式副本。

    【讨论】:

      【解决方案2】:

      我在这里发布另一个答案,因为这是 Google 在询问 hdfs s3 代理时出现的第一个 SOW 问题,而现有的答案在我看来并不是最好的。

      为 HDFS 配置 S3 最好在每个节点上的 hdfs-site.xml 文件上完成。通过这种方式,它适用于 distcp(从 HDFS 复制到 S3,反之亦然),但也适用于 Impala 和其他可能使用 S3 的 Hadoop 组件。

      因此,将以下属性添加到您的 hdfs-site.xml :

      <property>
            <name>fs.s3a.access.key</name>
            <value>your_access_key</value>
          </property>
          <property>
            <name>fs.s3a.secret.key</name>
            <value>your_secret_key</value>
          </property>
          <property>
            <name>fs.s3a.proxy.host</name>
            <value>your_proxy_host</value>
          </property>
          <property>
            <name>fs.s3a.proxy.port</name>
            <value>your_proxy_port</value>
          </property>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-11-13
        • 2015-08-26
        • 1970-01-01
        • 2019-12-22
        • 2022-10-22
        • 1970-01-01
        相关资源
        最近更新 更多