我尝试使用以下命令将FTP数据复制到HDFS,
hadoop distcp ftp://ftp.ncdc.noaa.gov/pub/data/noaa/1901/ data/noaa/1901/
这是我收到的错误
15/03/04 11:29:13 INFO tools.DistCp: Input Options: DistCpOptions{atomicCommit=false, syncFolder=false, deleteMissing=false, ignoreFailures=false, maxMaps=20, sslConfigurationFile='null', copyStrategy='uniformsize', sourceFileListing=null, sourcePaths=[ftp://ftp.ncdc.noaa.gov/pub/data/noaa/1901], targetPath=data/noaa/1901, targetPathExists=false, preserveRawXattrs=false}
15/03/04 11:29:13 INFO client.RMProxy: Connecting to ResourceManager at m-hadoop-master.c.swift-influence-86909.internal/10.240.143.253:8032
15/03/04 11:29:14 ERROR tools.DistCp: Exception encountered
java.io.IOException: Login failed on server - ftp.ncdc.noaa.gov, port - 21 as user 'null'
at org.apache.hadoop.fs.ftp.FTPFileSystem.connect(FTPFileSystem.java:144)
at org.apache.hadoop.fs.ftp.FTPFileSystem.getFileStatus(FTPFileSystem.java:405)
at org.apache.hadoop.fs.Globber.getFileStatus(Globber.java:57)
at org.apache.hadoop.fs.Globber.glob(Globber.java:252)
at org.apache.hadoop.fs.FileSystem.globStatus(FileSystem.java:1625)
at org.apache.hadoop.tools.GlobbedCopyListing.doBuildListing(GlobbedCopyListing.java:77)
at org.apache.hadoop.tools.CopyListing.buildListing(CopyListing.java:84)
at org.apache.hadoop.tools.DistCp.createInputFileListing(DistCp.java:353)
at org.apache.hadoop.tools.DistCp.execute(DistCp.java:160)
at org.apache.hadoop.tools.DistCp.run(DistCp.java:121)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
at org.apache.hadoop.tools.DistCp.main(DistCp.java:401)
答案 0 :(得分:0)
您必须填写用户名,即使是“匿名”登录。
Apache FTPClient
(内部使用FTPFileSystem
)始终将USER
命令发送到FTP服务器。所以它需要一些用户名才能使用。
使用用户名“anonymous”。这是一种常见的做法。大多数FTP客户端在被指示使用“匿名”登录时,将在内部自动使用“匿名”用户名。
如果需要密码,请使用一种电子邮件地址(“user@example.com”)。