当前位置: 首页 > 知识库问答 >
问题:

使用s3distcp将文件从amazons3复制到hdfs失败

华景焕
2023-03-14

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

命令:

./elastical mapreduce--作业流j-35D6JOYEDCELA--jar s3://us-east-1.elasticmapreduce/libs/s3distcp/1.latest/s3distcp。jar--参数'--src,s3://odsh/input/,--dest,hdfs:///Users

输出

任务任务ID=“task_201301310606_0001_r_000000” TASK_TYPE=“reduce” TASK_STATUS=“失败” FINISH_TIME.java=“1359612576612” 错误=“java.lang.运行时异常: 化简器任务无法复制 1 个文件: s.java 3://odsh/input/GL_01112_20121019.dat.java 等儿童$4.run(儿童.java:255) 在 java.security.AccessController.doPriviled(本机方法) 在 javax.security.auth.Subject.doAs(Subject.java:396) 在 org.apache.hadoop.security.UserGroupInform.doAs(用户组信息.java:1132) 在组织 apache.hadoop.mapred.child.main(子.java:249)

共有3个答案

朱丰
2023-03-14

调整工人人数对我来说不管用;s3distcp在中小型实例上总是失败。增加任务作业的堆大小(通过-D mapred.child.java.opts=-Xmx1024m)为我解决了这个问题。

示例用法:

hadoop jar /home/hadoop/lib/emr-s3distcp-1.0.jar 
    -D mapred.child.java.opts=-Xmx1024m 
    --src s3://source/
    --dest hdfs:///dest/ --targetSize 128
    --groupBy '.*\.([0-9]+-[0-9]+-[0-9]+)-[0-9]+\..*' 
    --outputCodec gzip
秦建元
2023-03-14

我看到了由比赛条件引起的同样的问题。传递< code >-ds 3 distcp . copy files . mapper . num workers = 1 有助于避免该问题。

我希望亚马逊能修复这个错误。

南门展
2023-03-14

我得到了同样的例外。看起来该错误是由复制文件还原器使用多个复制文件无法从 S3 下载文件时的争用条件引起的。问题在于它在多个线程中使用相同的临时目录,并且线程在完成后会删除临时目录。因此,当一个线程在另一个线程之前完成时,它将删除另一个线程仍在使用的临时目录。

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

 类似资料:
  • 是否有一种已知的方法使用Hadoop api/spark scala在Hdfs上将文件从一个目录复制到另一个目录? 我尝试使用copyFromLocalFile,但没有帮助

  • 我想将文件salesjan2009.csv(存储在本地文件系统中,~/input/salesjan2009.csv)复制到HDFS(Hadoop分布式文件系统)主目录中 我编写了这段代码hduser@ubuntu:/usr/local/hadoop$hdfs dfs-copyfromlocal'/home/hduser/desktop/input/salesjan2009.csv'/hdfs-pa

  • 我正在尝试在我的本地机器上启动一个hadoop单节点集群。我已经根据https://amodernstory.com/2014/09/23/installing-hadoop-on-mac-osx-yosemite/配置了以下文件:hadoop-env.sh、core-site.xml、mapred-site.xml和hdfs-site.xml。当我运行脚本和命令(在运行之后)时,我看到数据阳极已

  • 如何将文件从HDFS复制到本地文件系统。文件下没有文件的物理位置,甚至没有目录。我如何将它们移到本地进行进一步的验证。我通过winscp进行了尝试。

  • 我已经在Ubuntu 14.04上安装了hadoop。每当我将文件从本地文件系统复制到HDFS时,我都会出现以下错误。 我使用这个命令: 我遇到的错误是: 我是Linux环境的新手。我不明白哪个文件不存在。

  • 我已经成功地完成了在Amazon EMR上的工作,现在我想将结果从复制到,但是我遇到了一些问题 这是代码(--steps) 这是日志: