2014-04-08 71 views
0

我試圖複製一些文件從S3存儲到我的EMR集羣的HDFS。不過,我收到以下錯誤:錯誤而複製從S3到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的任何問題,但它運行良好。

任何人都可以幫助我嗎?如果需要更多信息,請告訴我,我會更新說明。

+0

您確定您的參數與您的命令示例類似嗎?該錯誤表示它試圖從HDFS讀取數據。 – SNeumann

+0

是的,我所顯示的命令是我正在運行的實際命令。但從錯誤,我認爲它正在嘗試做一些中間操作(因爲它是從/ tmp目錄中刪除的東西) – Bhushan

回答

0

通常它的--srcPattern '<regex>'的說法。您也可以使用hadoop fs -cp s3://src/file1.something /my/output/path/來測試1個文件並修改您的正則表達式。也從.*開始,任何char-0或更多次,都應該放寬匹配。

如果正則表達式不匹配記錄到日誌中,並在那裏將是巨大的瞭解。