【问题标题】:Error while copying from S3 to HDFS从 S3 复制到 HDFS 时出错
【发布时间】:2014-04-08 00:01:12
【问题描述】:

我正在尝试将一些文件从 S3 存储桶复制到我的 EMR 集群的 HDFS。但我收到以下错误:

Exception in thread "main" java.lang.RuntimeException: Error running job
    at com.amazon.elasticmapreduce.s3distcp.S3DistCp.run(S3DistCp.java:771)
    at com.amazon.elasticmapreduce.s3distcp.S3DistCp.run(S3DistCp.java:580)
    at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
    at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:84)
    at com.amazon.elasticmapreduce.s3distcp.Main.main(Main.java:22)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.apache.hadoop.util.RunJar.main(RunJar.java:212)
Caused by: org.apache.hadoop.mapreduce.lib.input.InvalidInputException: Input path does not exist: hdfs://10.87.26.26:9000/tmp/33e4f3b9-d29a-49e8-9706-ea70e07e3ff2/files
    at org.apache.hadoop.mapreduce.lib.input.FileInputFormat.listStatus(FileInputFormat.java:285)
    at org.apache.hadoop.mapreduce.lib.input.SequenceFileInputFormat.listStatus(SequenceFileInputFormat.java:59)
    at org.apache.hadoop.mapreduce.lib.input.FileInputFormat.getSplits(FileInputFormat.java:340)
    at org.apache.hadoop.mapreduce.JobSubmitter.writeNewSplits(JobSubmitter.java:491)
    at org.apache.hadoop.mapreduce.JobSubmitter.writeSplits(JobSubmitter.java:508)
    at org.apache.hadoop.mapreduce.JobSubmitter.submitJobInternal(JobSubmitter.java:392)
    at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1268)
    at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1265)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:415)
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1491)
    at org.apache.hadoop.mapreduce.Job.submit(Job.java:1265)
    at com.amazon.elasticmapreduce.s3distcp.S3DistCp.run(S3DistCp.java:751)
    ... 9 more

我使用的命令是:

./elastic-mapreduce --jobflow  j-12345678 --jar /home/hadoop/lib/emr-s3distcp-1.0.jar --args '--src,s3n://my-bucket/data/,--dest,hdfs:///data/in,--srcPattern,xyz01-1-1*ped*' --step-name "Copy input files to HDFS" --wait-for-steps

我尝试运行示例字数统计作业,以检查 HDFS 是否存在任何问题,但运行良好。

谁能帮我解决这个问题?如果需要更多信息,请告诉我,我会更新说明。

【问题讨论】:

  • 你确定你的参数和你的命令示例一样吗?该错误表示它正在尝试从 HDFS 读取数据。
  • 是的,我显示的命令是我正在运行的实际命令。但是从错误来看,我认为它正在尝试做一些中间操作(因为它正在从 /tmp 目录中删除东西)

标签: hadoop amazon-s3 amazon-emr


【解决方案1】:

通常是 --srcPattern '<regex>' 参数。您还可以使用 hadoop fs -cp s3://src/file1.something /my/output/path/ 测试 1 个文件并修改您的正则表达式。同样以 .* 开头的任何 char-0 或更多次,都应该放宽匹配。

很高兴知道是否记录了正则表达式不匹配项以及记录在哪里。

【讨论】:

    猜你喜欢
    • 2020-12-22
    • 1970-01-01
    • 2016-11-23
    • 2019-12-17
    • 1970-01-01
    • 1970-01-01
    • 2014-07-08
    • 2011-11-21
    相关资源
    最近更新 更多