hadoop - 使用 s3distcp 将文件从 amazon s3 复制到 hdfs 失败

标签 hadoop amazon-s3 hdfs elastic-map-reduce

我正在尝试使用 EMR 中的工作流将文件从 s3 复制到 hdfs,当我运行以下命令时,作业流成功启动但在尝试将文件复制到 HDFS 时给我一个错误。我需要设置任何输入吗文件权限?

命令:

./elastic-mapreduce --jobflow j-35D6JOYEDCELA --jar s3://us-east-1.elasticmapreduce/libs/s3distcp/1.latest/s3distcp.jar --args '--src,s3://odsh/input/,--dest,hdfs:///Users

输出

任务 TASKID="task_201301310606_0001_r_000000"TASK_TYPE="REDUCE"TASK_STATUS="FAILED"FINISH_TIME="1359612576612"ERROR="java.lang.RuntimeException: Reducer 任务无法复制 1 个文件:s3://odsh/input/GL_01112_190 .dat 等 在 com.amazon.external.elasticmapreduce.s3distcp.CopyFilesReducer.close(CopyFilesReducer.java:70) 在 org.apache.hadoop.mapred.ReduceTask.runOldReducer(ReduceTask.java:538) 在 org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:429) 在 org.apache.hadoop.mapred.Child$4.run(Child.java:255) 在 java.security.AccessController.doPrivileged( native 方法) 在 javax.security.auth.Subject.doAs(Subject.java:396) 在 org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1132) 在 org.apache.hadoop.mapred.Child.main(Child.java:249)

最佳答案

我遇到了同样的异常。看起来该错误是由 CopyFilesReducer 使用多个 CopyFilesRunable 实例从 S3 下载文件时的竞争条件引起的。问题是它在多个线程中使用相同的临时目录,并且线程在完成后删除临时目录。因此,当一个线程先于另一个线程完成时,它会删除另一个线程仍在使用的临时目录。

我已将问题报告给 AWS,但与此同时,您可以通过设置变量 s3DistCp.copyfiles.mapper.numWorkers 强制 reducer 使用单线程来解决该错误在您的作业配置中设置为 1。

关于hadoop - 使用 s3distcp 将文件从 amazon s3 复制到 hdfs 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14631152/

相关文章:

javascript - 在 Node js中将JSON.gz转换为JSON

apache - apache flume hdfs sink 可以接受动态路径写入吗?

ruby - 使用 Amazon-SDK Ruby gem 在 Amazon S3 上上传文件后更新内容类型

eclipse - Hadoop 和 Eclipse 环境

HTTP 引荐来源网址 - AWS、Sharepoint 和浏览器

hadoop - 如何修复损坏的 HDFS 文件

hadoop - Non DFS Used 到底是什么意思?

hadoop - 使用 HBASE 的 Spark 与使用 HDFS 的 Spark

xml - 在oozie工作流程中传递包含sqoop命令的文件

hadoop - Map Reduce 作业中的 NullPointerException