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 上运行缓慢