每周从FTP下载文件到HDFS

5

我希望能够自动化每周从FTP服务器下载文件并将其导入到CDH5 Hadoop集群中。哪种方法是最佳的呢?

我考虑使用Oozie协调器工作,但是我无法想出一个好的下载文件的方法。


1
还是一个不错的想法,但是下载文件怎么办呢?我在考虑使用distcp,但也许有更优雅的解决方案? - JochenDB
distcp非常优雅!我想不出还有什么更优雅的了 :) - Chiron
1
当我使用以下命令时:hadoop distcp ftp://ftpserveraddress/ hdfs:/user/myuser/test/我会收到一个java.io.IOException: Login failed on server - serveraddress, port - 21的异常... 我可以正常使用curl。我应该使用除21以外的其他端口吗?或者可能是hftp? - JochenDB
2个回答

3

由于您正在使用CDH5,值得注意的是该Hadoop发行版中包含了与HDFS的NFSv3接口。您应该在CDH5安装指南文档中查找“配置NFSv3网关”。

完成后,您可以使用wget、curl、python等工具将文件放入NFS挂载点上。您可能想通过Oozie来完成这个过程......进入作业设计器并创建“Shell”命令的副本。输入您选择的数据传输命令(如Python脚本、Curl、FTP等),并使用${myVar}参数化作业。

虽然不完美,但我认为这相当优雅。


1
与此同时,我有类似的情况。我使用一个shell脚本来挂载ftp服务器,使用curlftpfs并将文件通过copyFromLocal复制到hdfs中。感谢您的帮助! - JochenDB

1

1
我现在有一个shell脚本,它使用curlftpfs将ftp服务器挂载到文件系统中,然后使用copyFromLocal将文件拉入hdfs。相比于crontab,使用Oozie协调器和工作流的优势是什么? - JochenDB

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接