【问题标题】:Spark netty Version Mismatch on HDInsight ClusterHDInsight 群集上的 Spark netty 版本不匹配
【发布时间】:2020-07-29 20:09:29
【问题描述】:

我目前在 HDInsight 群集中远程运行 Spark 作业时遇到问题:

我的项目依赖于netty-all,这是我在 pom 文件中明确指定的:

<dependency>
    <groupId>io.netty</groupId>
    <artifactId>netty-all</artifactId>
    <version>4.1.51.Final</version>
</dependency>

最终构建的 jar 包含具有指定版本的此包,并且在我的本地计算机上运行 Spark 作业可以正常工作。但是,当我尝试在远程 HDInsight 群集中运行它时,该作业会引发以下异常:

java.lang.NoSuchMethodError: io.netty.handler.ssl.SslProvider.isAlpnSupported(Lio/netty/handler/ssl/SslProvider;)Z

我认为这是由于 netty 版本不匹配,因为 Spark 从远程集群中的默认系统类路径中获取旧的 netty 版本(netty-all-4.1.17),而不是在 uber 中定义的较新的 netty 包罐子。

我尝试了不同的方法来解决这个问题,但它们似乎效果不佳:

  1. 使用 Maven Shade 插件重定位类:

    更多细节及其问题在这里 - Missing Abstract Class using Maven Shade Plugin for Relocating Classes

  2. 火花配置

    spark.driver.extraClassPath=<path to netty-all-4.1.50.Final.jar>
    
    spark.executor.extraClassPath=<path to netty-all-4.1.50.Final.jar>

想知道是否有其他解决方案可以解决此问题或此处缺少任何步骤?

【问题讨论】:

    标签: apache-spark netty azure-hdinsight


    【解决方案1】:

    您需要确保类路径中只有 Netty 4.1.50.Final 或更高版本

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-09-13
      • 2018-02-24
      • 1970-01-01
      • 2018-05-12
      • 2021-02-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多