无法将文件从FTP复制到HDFS

时间:2014-09-23 16:32:52

标签: hadoop ftp hdfs distcp

我有FTP服务器(F [ftp]),linux box(S [standalone])和hadoop集群(C [cluster])。当前文件流是F-> S-> C.我试图通过跳过S.来提高性能。

目前的流程是:

wget ftp://user:password@ftpserver/absolute_path_to_file
hadoop fs -copyFromLocal path_to_file path_in_hdfs

我试过了:

hadoop fs -cp ftp://user:password@ftpserver/absolute_path_to_file path_in_hdfs

hadoop distcp ftp://user:password@ftpserver/absolute_path_to_file path_in_hdfs

两者都挂了。作为工作的distcp是被超时杀死的。日志(hadoop job -logs)仅表示它被超时杀死。我试图从C的某个节点从ftp wget并且它工作。可能是什么原因和任何提示如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

通过stdin管道:

 wget ftp://user:password@ftpserver/absolute_path_to_file | hadoop fs -put - path_in_hdfs

单曲 - 告诉HDFS从stdin读取。

答案 1 :(得分:-1)

  

hadoop fs -cp ftp://user:password@ftpserver.com/absolute_path_to_file path_in_hdfs

这不能用作源文件是本地文件系统中的文件。它没有考虑您尝试通过的方案。请参阅javadoc:FileSystem

DISTCP仅适用于大型内部或内部群集(可读取为Hadoop群集,即HDFS)。它再次无法从FTP获取数据。 2步过程仍然是你最好的选择。或编写程序从FTP读取并写入HDFS。