【问题标题】:Download file weekly from FTP to HDFS每周从 FTP 下载文件到 HDFS
【发布时间】:2014-03-13 09:22:29
【问题描述】:

我想每周自动将文件从 ftp 服务器下载到 CDH5 hadoop 集群。最好的方法是什么?

我正在考虑一份 Oozie 协调员的工作,但我想不出下载文件的好方法。

【问题讨论】:

  • 也是个好主意,但是下载文件呢?我在考虑使用 distcp,但也许有更优雅的解决方案?
  • distcp 很优雅!我想不出更优雅的东西:)
  • 当我使用这个命令时:hadoop distcp ftpserveraddress hdfs:/user/myuser/test/ 我得到一个 java.io.IOException: Login failed on server - serveraddress, port - 21 异常.. . 我可以毫无问题地卷曲。我应该使用 21 以外的其他端口吗?或者也许是 hftp?

标签: hadoop ftp hdfs cloudera oozie


【解决方案1】:

由于您使用的是 CDH5,因此值得注意的是,HDFS 的NFSv3 接口包含在该 Hadoop 发行版中。您应该在 CDH5 安装指南文档中检查“Configuring an NFSv3 Gateway”。

完成后,您可以使用 wget、curl、python 等将文件放到 NFS 挂载上。您可能想通过 Oozie 执行此操作……进入工作设计师并创建“Shell”命令的副本。输入您选择进行数据传输的命令(python 脚本、curl、ftp 等),并使用 ${myVar} 参数化作业。

它并不完美,但我认为它相当优雅。

【讨论】:

  • 与此同时,我也有类似的事情发生。我使用 shell 脚本通过 curlftpfs 挂载 ftp 服务器,然后使用 copyFromLocal 将文件拉入 hdfs。感谢您的帮助!
【解决方案2】:

我想你想拉一个文件。

一个简单的解决方案是您可以使用运行工作流的协调器。

工作流应该有 shell 动作

http://oozie.apache.org/docs/3.3.0/DG_ShellActionExtension.html

里面的脚本可以有

wgethttp://myftp.com/file.name

你可以在脚本中做所有你想做的事

【讨论】:

  • 我现在有一个 shell 脚本,它使用 curlftpfs 将 ftp 服务器安装到文件系统中,然后使用 copyFromLocal 将文件拉入 hdfs。与 crontab 相比,使用 Oozie 协调器和工作流有什么优势?
猜你喜欢
  • 2014-08-05
  • 2018-05-28
  • 1970-01-01
  • 2013-06-20
  • 2021-10-10
  • 1970-01-01
  • 1970-01-01
  • 2018-06-22
  • 2016-01-15
相关资源
最近更新 更多