EMR 上的 MapReduce 不联系 RMProxy 并卡住等待资源管理器?

Posted

技术标签:

【中文标题】EMR 上的 MapReduce 不联系 RMProxy 并卡住等待资源管理器?【英文标题】:MapReduce on EMR does not contact RMProxy and gets stuck waiting for resourcemanager? 【发布时间】:2020-01-25 06:14:19 【问题描述】:

我正在使用 hadoop 2.7.3 在 EMR 上运行 mapreduce/hadoop。库存安装 AWS,jar 是用 maven shade 插件构建的。它在等待 ResourceManager 时无限卡住,但我在日志文件或在线上找不到任何内容。

job.waitForCompletion 中,出现以下一行:

020-01-25 05:52:41,346 INFO org.apache.hadoop.yarn.client.api.impl.TimelineClientImpl (main): Timeline service address: http://ip-172-31-13-41.us-west-2.compute.internal:8188/ws/v1/timeline/
2020-01-25 05:52:41,356 INFO org.apache.hadoop.yarn.client.RMProxy (main): Connecting to ResourceManager at ip-172-31-13-41.us-west-2.compute.internal/172.31.13.41:8032

然后它就坐在那里......永远不会取得进展,并且必须关闭集群或手动终止任务。

有趣的是,通过运行hadoop jar <arguments>,我可以在本地重现此步骤,但我不知道是什么原因造成的。

25分钟左右,解压jar包失败:

After 25 minutes or so, the job produces output of the form:


AM Container for appattempt_1580058321574_0005_000001 exited with exitCode: -1000
For more detailed output, check application tracking page:http://192.168.2.21:8088/cluster/app/application_1580058321574_0005Then, click on links to logs of each attempt.
Diagnostics: /Users/gbronner/hadoopdata/yarn/local/usercache/gbronner/appcache/application_1580058321574_0005/filecache/11_tmp/tmp_job.jar (Is a directory)
java.io.FileNotFoundException: /Users/gbronner/hadoopdata/yarn/local/usercache/gbronner/appcache/application_1580058321574_0005/filecache/11_tmp/tmp_job.jar (Is a directory)
at java.util.zip.ZipFile.open(Native Method)
at java.util.zip.ZipFile.<init>(ZipFile.java:225)
at java.util.zip.ZipFile.<init>(ZipFile.java:155)
at java.util.jar.JarFile.<init>(JarFile.java:166)
at java.util.jar.JarFile.<init>(JarFile.java:130)
at org.apache.hadoop.util.RunJar.unJar(RunJar.java:94)
at org.apache.hadoop.yarn.util.FSDownload.unpack(FSDownload.java:297)
at org.apache.hadoop.yarn.util.FSDownload.call(FSDownload.java:364)
at org.apache.hadoop.yarn.util.FSDownload.call(FSDownload.java:62)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Failing this attempt

这发生在 AWS EMR 和本地。从未见过此错误,并且直接使用 EMR。

关于为什么会发生这种情况的任何想法?坏罐子?可能与another unanswered question here相关

【问题讨论】:

exit -1000 -- 不是常见错误。 【参考方案1】:

在尝试了数百次实验后,似乎有问题的线是

job.setJar().

为什么,我不知道。它在 intellij 下运行良好,但在本地和 intellij 下使用 hadoop 命令可靠地崩溃。

【讨论】:

以上是关于EMR 上的 MapReduce 不联系 RMProxy 并卡住等待资源管理器?的主要内容,如果未能解决你的问题,请参考以下文章

Amazon EMR MapReduce 流程序因错误而终止

MapReduce 作业(用 python 编写)在 EMR 上运行缓慢

阿里云E-MapReduce探秘,快速构建可扩展的高性能大数据平台(技术部分)

E-MapReduce

将文件从 AWS EMR 集群中的映射器上传到 S3

统一观测丨使用 Prometheus 监控 E-MapReduce,我们该关注哪些指标?