火花在纱线容器故障上



供参考:我通过在hadoop/share/hadoop/common中添加Netty 4.1.17解决了这个问题

无论我尝试运行哪个 jar(包括 https://spark.apache.org/docs/latest/running-on-yarn.html 中的示例(,在 Yarn 上运行 Spark 时,我都会收到有关容器故障的错误。我在命令提示符下收到此错误:

Diagnostics: Exception from container-launch.
Container id: container_1530118456145_0001_02_000001
Exit code: 1
Stack trace: ExitCodeException exitCode=1:
at org.apache.hadoop.util.Shell.runCommand(Shell.java:585)
at org.apache.hadoop.util.Shell.run(Shell.java:482)
at org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:776)
at org.apache.hadoop.yarn.server.nodemanager.DefaultContainerExecutor.launchContainer(DefaultContainerExecutor.java:212)
at org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch.call(ContainerLaunch.java:302)
at org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch.call(ContainerLaunch.java:82)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)

当我查看日志时,我发现此错误:

Exception in thread "main" java.lang.NoSuchMethodError:io.netty.buffer.PooledByteBufAllocator.metric()Lio/netty/buffer/PooledByteBufAllocatorMetric;
at org.apache.spark.network.util.NettyMemoryMetrics.registerMetrics(NettyMemoryMetrics.java:80)
at org.apache.spark.network.util.NettyMemoryMetrics.<init>(NettyMemoryMetrics.java:76)
at org.apache.spark.network.client.TransportClientFactory.<init>(TransportClientFactory.java:109)
at org.apache.spark.network.TransportContext.createClientFactory(TransportContext.java:99)
at org.apache.spark.rpc.netty.NettyRpcEnv.<init>(NettyRpcEnv.scala:71)
at org.apache.spark.rpc.netty.NettyRpcEnvFactory.create(NettyRpcEnv.scala:461)
at org.apache.spark.rpc.RpcEnv$.create(RpcEnv.scala:57)
at org.apache.spark.deploy.yarn.ApplicationMaster.runExecutorLauncher(ApplicationMaster.scala:530)
at org.apache.spark.deploy.yarn.ApplicationMaster.org$apache$spark$deploy$yarn$ApplicationMaster$$runImpl(ApplicationMaster.scala:347)
at org.apache.spark.deploy.yarn.ApplicationMaster$$anonfun$run$2.apply$mcV$sp(ApplicationMaster.scala:260)
at org.apache.spark.deploy.yarn.ApplicationMaster$$anonfun$run$2.apply(ApplicationMaster.scala:260)
at org.apache.spark.deploy.yarn.ApplicationMaster$$anonfun$run$2.apply(ApplicationMaster.scala:260)
at org.apache.spark.deploy.yarn.ApplicationMaster$$anon$5.run(ApplicationMaster.scala:815)
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:1758)
at org.apache.spark.deploy.yarn.ApplicationMaster.doAsUser(ApplicationMaster.scala:814)
at org.apache.spark.deploy.yarn.ApplicationMaster.run(ApplicationMaster.scala:259)
at org.apache.spark.deploy.yarn.ApplicationMaster$.main(ApplicationMaster.scala:839)
at org.apache.spark.deploy.yarn.ExecutorLauncher$.main(ApplicationMaster.scala:869)
at org.apache.spark.deploy.yarn.ExecutorLauncher.main(ApplicationMaster.scala)

知道为什么会这样吗?这是在根据本教程设置的伪分布式群集上运行的:https://wiki.apache.org/hadoop/Hadoop2OnWindows。Spark 在本地运行良好,看到这个罐子是用 Spark 提供的,我怀疑这是罐子内的问题。(无论如何,我在另一个 jar 中添加了一个 Netty 依赖项,但我仍然收到相同的错误(。

在我的 spark-defaults.conf 中唯一设置的是 spark.yarn.jars,它指向一个 hdfs 目录,我在其中上传了 Spark 的所有 jar。 io.netty.buffer.PooledByteBufAllocator 包含在这些 jar 中。

Spark 2.3.1, Hadoop 2.7.6

我遇到了完全相同的问题。以前我使用Hadoop 2.6.5和兼容的Spark版本,一切顺利。当我切换到Hadoop 2.7.6时,出现了问题。不确定是什么原因,但我复制到netty.4.1.17.Final jar文件到hadoop库文件夹,然后问题消失了。

似乎您的类路径上有多个 netty 版本,

  1. MVN 清理编译
  2. 全部删除并添加最新的。

这可能在你的纱线和火花之间有版本问题。 检查安装的版本的兼容性。

我强烈建议阅读更多关于NoSuchMethodError和其他一些类似的异常,如NoClassDefFoundError和ClassNotFoundException。这个建议的原因是,当你在不同的情况下开始使用spark时,这些是更令人困惑的错误和例外,因为人们没有那么经验。NosuchMethodError

当然,对于程序员来说,关心很多是最佳实践策略,绝对是那些在像 Spark 这样的分布式系统上工作的人。干的好。;)

相关内容

  • 没有找到相关文章

最新更新