1

我正在将800 个 avro 文件,大小约为136 MB,从HDFS复制到EMR 集群上的S3,但我得到了这个异常:

8/06/26 10:53:14 INFO mapreduce.Job:  map 100% reduce 91%
18/06/26 10:53:14 INFO mapreduce.Job: Task Id : attempt_1529995855123_0003_r_000006_0, Status : FAILED
Error: java.lang.RuntimeException: Reducer task failed to copy 1 files: hdfs://url-to-aws-emr/user/hadoop/output/part-00258-3a28110a-9270-4639-b389-3e1f7f386ed6-c000.avro etc
        at com.amazon.elasticmapreduce.s3distcp.CopyFilesReducer.cleanup(CopyFilesReducer.java:67)
        at org.apache.hadoop.mapreduce.Reducer.run(Reducer.java:179)
        at org.apache.hadoop.mapred.ReduceTask.runNewReducer(ReduceTask.java:635)
        at org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:390)
        at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:164)
        at java.security.AccessController.doPrivileged(Native Method)
        at javax.security.auth.Subject.doAs(Subject.java:422)
        at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1698)
        at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:158)

EMR 集群的配置是:

core-site           fs.trash.checkpoint.interval     60
core-site           fs.trash.interval                60
hadoop-env.export   HADOOP_CLIENT_OPTS               -Xmx10g
hdfs-site           dfs.replication                  3

任何帮助将不胜感激。

编辑:

运行hdfs dfsadmin -report命令,得到以下结果:

[hadoop@~]$ hdfs dfsadmin -report
Configured Capacity: 79056308744192 (71.90 TB)
Present Capacity: 78112126204492 (71.04 TB)
DFS Remaining: 74356972374604 (67.63 TB)
DFS Used: 3755153829888 (3.42 TB)
DFS Used%: 4.81%
Under replicated blocks: 126
Blocks with corrupt replicas: 0
Missing blocks: 63
Missing blocks (with replication factor 1): 0

它表明该块丢失。这是否意味着我必须再次重新运行程序?如果我看到 Under replicated blocks 的输出,它会显示 126。这意味着将复制 126 个块。我怎么知道,它会复制丢失的块吗?

此外,在过去 30 分钟内, Under replicated blocks的值是 126。有没有办法强制它快速复制?

4

1 回答 1

1

我遇到了同样的“Reducer task failed to copy 1 files”错误,我在 HDFS /var/log/hadoop-yarn/apps/hadoop/logs 中找到了与 s3-dist-cp 启动的 MR 作业相关的日志。

hadoop fs -ls /var/log/hadoop-yarn/apps/hadoop/logs

我将它们复制到本地:

hadoop fs -get /var/log/hadoop-yarn/apps/hadoop/logs/application_nnnnnnnnnnnnn_nnnn/ip-nnn-nn-nn-nnn.ec2.internal_nnnn

然后在文本编辑器中检查它们以找到有关 Reducer 阶段详细结果的更多诊断信息。就我而言,我从 S3 服务收到错误消息。您可能会发现不同的错误。

于 2018-08-06T01:53:09.917 回答