0

当我尝试处理像 size > 35GB 文件这样的大文件时,我看到以下错误,但是当我尝试像 size < 10GB 这样的小文件时不会发生。

App > Error: org.apache.hadoop.mapreduce.task.reduce.Shuffle$ShuffleError: error in shuffle in fetcher#30

App > at org.apache.hadoop.mapreduce.task.reduce.Shuffle.run(Shuffle.java:134)

App > at org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:376)

App > at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:165)

App > at java.security.AccessController.doPrivileged(Native Method)

App > at javax.security.auth.Subject.doAs(Subject.java:422)

App > at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1635)

App > at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:160)

App > Caused by: java.io.IOException: Exceeded MAX_FAILED_UNIQUE_FETCHES; bailing-out.

这项工作仍然在 qubole 下完成,因为我认为 qubole 重试了 reduce 步骤。

但我想知道是否有这样的设置,我可以完全避免错误,这样减少工作就不必重试。

App > Failed reduce tasks=54
4

1 回答 1

0

增加减速器的并行度。可以通过设置 mapreduce.job.reduces 配置属性来完成。如果您正在运行这样的 Java 应用程序:

hadoop jar -Dmapreduce.job.maps=100 -Dmapreduce.job.reduces=200 your_jar.jar ...

在 Hive 中,可以使用hive.exec.reducers.bytes.per.reducer属性来完成。

您也可以尝试增加容器 Java 堆大小,阅读此内容

于 2019-04-05T06:48:40.147 回答