我正在尝试使用以下命令将文件从S3复制到HDFS:
hadoop distcp s3n://bucketname/filename hdfs://namenodeip/directory
但是这不起作用,收到如下错误:
ERROR tools.DistCp: Exception encountered
java.lang.IllegalArgumentException: Invalid hostname in URI
我曾尝试在hadoop conf.xml中添加S3密钥,但它也无法正常工作。请帮我逐步完成从S3到HDFS的文件复制步骤。
提前致谢。
答案 0 :(得分:6)
命令应该是这样的:
Hadoop distcp s3n://bucketname/directoryname/test.csv /user/myuser/mydirectory/
这会将test.csv文件从S3复制到指定HDFS路径中名为/ mydirectory的HDFS目录。 在这个S3文件系统中正在以纯模式使用。有关详细信息,请参阅http://wiki.apache.org/hadoop/AmazonS3
答案 1 :(得分:1)
将存储在Amazon S3存储桶中的日志文件复制到HDFS中。这里--srcPattern选项用于限制复制到守护程序日志的数据。
Linux,UNIX和Mac OS X用户:
./elastic-mapreduce --jobflow j-3GY8JC4179IOJ --jar \
/home/hadoop/lib/emr-s3distcp-1.0.jar \
--args '--src,s3://myawsbucket/logs/j-3GY8JC4179IOJ/node/,\
--dest,hdfs:///output,\
--srcPattern,.*daemons.*-hadoop-.*'
Windows用户:
ruby elastic-mapreduce --jobflow j-3GY8JC4179IOJ --jar /home/hadoop/lib/emr-s3distcp-1.0.jar --args '--src,s3://myawsbucket/logs/j-3GY8JC4179IOJ/node/,--dest,hdfs:///output,--srcPattern,.*daemons.*-hadoop-.*'
请查看此链接了解更多信息:
http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/UsingEMR_s3distcp.html
希望这有帮助!