【问题标题】:copy files from ftp to hdfs in parallel, distcp failed将文件从 ftp 并行复制到 hdfs,distcp 失败
【发布时间】:2019-08-04 20:38:23
【问题描述】:

我在 Amazon EC2 上运行 hdfs

比方说,我有一个存储一些数据的 ftp 服务器。

我只是想以并行方式将这些数据直接复制到 hdfs(这可能更有效)。

我认为 hadoop distcp 是我需要的。

但是

$ bin/hadoop distcp ftp://username:passwd@hostname/some/path/ hdfs://namenode/some/path

没用。

13/07/05 16:13:46 INFO tools.DistCp: srcPaths=[ftp://username:passwd@hostname/some/path/]
13/07/05 16:13:46 INFO tools.DistCp: destPath=hdfs://namenode/some/path
Copy failed: org.apache.hadoop.mapred.InvalidInputException: Input source ftp://username:passwd@hostname/some/path/ does not exist.
at org.apache.hadoop.tools.DistCp.checkSrcPath(DistCp.java:641)
at org.apache.hadoop.tools.DistCp.copy(DistCp.java:656)
at org.apache.hadoop.tools.DistCp.run(DistCp.java:881)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:79)
at org.apache.hadoop.tools.DistCp.main(DistCp.java:908)

我通过在Chrome中复制ftp路径检查路径,文件确实存在,我什至可以下载。

然后,我尝试通过以下方式列出路径下的文件:

$ bin/hadoop dfs -ls ftp://username:passwd@hostname/some/path/

结尾是:

ls: Cannot access ftp://username:passwd@hostname/some/path/: No such file or directory.

这似乎是相同的 pb。

这里有什么解决方法吗?

提前谢谢你。

浩。

【问题讨论】:

    标签: ftp hdfs


    【解决方案1】:

    ftp 和 hdfs 是不同的协议,distcp 只能在两个不同的 hdfs 集群之间复制文件,所以可能有两种解决方案:1)将您的 ftp 文件放到本地 hdfs 集群和 distcp 到 EC2 集群。 2)或将您的文件获取到 EC2 服务器并将文件放入 EC2 集群。希望有帮助!

    【讨论】:

      【解决方案2】:

      这可能是因为您在 nat 后面运行 hadoop 节点。使用主动数据传输模式时 FTP 失败。您可以通过将以下配置添加到您的core-site.xml 来切换到被动模式

      <configuration>
      <property>
          <name>fs.default.name</name>
          <value>{name-node}:9000</value>
      </property>
      <property>
          <name>fs.ftp.host</name>
          <value>{ftp-server-ip}</value>
      </property>
      <property>
          <name>fs.ftp.host.port</name>
          <value>21</value>
      </property>
      <property>
          <name>fs.ftp.password.{ftp-server-ip}</name>
          <value>{password}</value>
      </property>
      <property>
          <name>fs.ftp.user.{ftp-server-ip}</name>
          <value>{username}</value>
      </property>
      <property>
          <name>fs.ftp.data.connection.mode</name>
          <value>PASSIVE_LOCAL_DATA_CONNECTION_MODE</value>
      </property>
      

      关于各种配置的更多细节:core-default.xml

      确保将{} 中的所有值替换为您设置的实际值

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-11-13
        • 2020-12-22
        • 1970-01-01
        • 1970-01-01
        • 2017-05-31
        • 2019-11-14
        • 2014-07-08
        • 1970-01-01
        相关资源
        最近更新 更多