代码之家  ›  专栏  ›  技术社区  ›  Tom Lous

GCP Dataproc spark。罐子包发布下载依赖项

  •  3
  • Tom Lous  · 技术社区  · 8 年前

    创建Dataproc Spark群集时,我们通过 --properties spark:spark.jars.packages=mysql:mysql-connector-java:6.0.6 gcloud dataproc clusters create 命令

    这是为了让我们的PySpark脚本保存到CloudSQL

    显然,在创作上,这没有任何作用,但在第一个阶段 spark-submit 这将尝试解决此依赖关系。

    从技术上讲,它似乎解决并下载了必要的jar文件,但集群上的第一个任务将失败,因为从 spark提交

    Exception in thread "main" java.lang.RuntimeException: [download failed: mysql#mysql-connector-java;6.0.6!mysql-connector-java.jar]
        at org.apache.spark.deploy.SparkSubmitUtils$.resolveMavenCoordinates(SparkSubmit.scala:1177)
        at org.apache.spark.deploy.SparkSubmit$.prepareSubmitEnvironment(SparkSubmit.scala:298)
        at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:153)
        at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:119)
        at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
    

    完整输出为:

    Ivy Default Cache set to: /root/.ivy2/cache
    The jars for the packages stored in: /root/.ivy2/jars
    :: loading settings :: url = jar:file:/usr/lib/spark/jars/ivy-2.4.0.jar!/org/apache/ivy/core/settings/ivysettings.xml
    mysql#mysql-connector-java added as a dependency
    :: resolving dependencies :: org.apache.spark#spark-submit-parent;1.0
        confs: [default]
        found mysql#mysql-connector-java;6.0.6 in central
    downloading https://repo1.maven.org/maven2/mysql/mysql-connector-java/6.0.6/mysql-connector-java-6.0.6.jar ...
    :: resolution report :: resolve 527ms :: artifacts dl 214ms
        :: modules in use:
        mysql#mysql-connector-java;6.0.6 from central in [default]
        ---------------------------------------------------------------------
        |                  |            modules            ||   artifacts   |
        |       conf       | number| search|dwnlded|evicted|| number|dwnlded|
        ---------------------------------------------------------------------
        |      default     |   1   |   1   |   1   |   0   ||   1   |   0   |
        ---------------------------------------------------------------------
    
    :: problems summary ::
    :::: WARNINGS
            [FAILED     ] mysql#mysql-connector-java;6.0.6!mysql-connector-java.jar: Downloaded file size doesn't match expected Content Length for https://repo1.maven.org/maven2/mysql/mysql-connector-java/6.0.6/mysql-connector-java-6.0.6.jar. Please retry. (212ms)
    
            [FAILED     ] mysql#mysql-connector-java;6.0.6!mysql-connector-java.jar: Downloaded file size doesn't match expected Content Length for https://repo1.maven.org/maven2/mysql/mysql-connector-java/6.0.6/mysql-connector-java-6.0.6.jar. Please retry. (212ms)
    
        ==== central: tried
    
          https://repo1.maven.org/maven2/mysql/mysql-connector-java/6.0.6/mysql-connector-java-6.0.6.jar
    
            ::::::::::::::::::::::::::::::::::::::::::::::
    
            ::              FAILED DOWNLOADS            ::
    
            :: ^ see resolution messages for details  ^ ::
    
            ::::::::::::::::::::::::::::::::::::::::::::::
    
            :: mysql#mysql-connector-java;6.0.6!mysql-connector-java.jar
    
            ::::::::::::::::::::::::::::::::::::::::::::::
    

    然而,集群上的后续任务显示了此输出

    Ivy Default Cache set to: /root/.ivy2/cache
    The jars for the packages stored in: /root/.ivy2/jars
    :: loading settings :: url = jar:file:/usr/lib/spark/jars/ivy-2.4.0.jar!/org/apache/ivy/core/settings/ivysettings.xml
    mysql#mysql-connector-java added as a dependency
    :: resolving dependencies :: org.apache.spark#spark-submit-parent;1.0
        confs: [default]
        found mysql#mysql-connector-java;6.0.6 in central
    :: resolution report :: resolve 224ms :: artifacts dl 5ms
        :: modules in use:
        mysql#mysql-connector-java;6.0.6 from central in [default]
        ---------------------------------------------------------------------
        |                  |            modules            ||   artifacts   |
        |       conf       | number| search|dwnlded|evicted|| number|dwnlded|
        ---------------------------------------------------------------------
        |      default     |   1   |   0   |   0   |   0   ||   1   |   0   |
        ---------------------------------------------------------------------
    :: retrieving :: org.apache.spark#spark-submit-parent
        confs: [default]
        0 artifacts copied, 1 already retrieved (0kB/7ms)
    

    所以我的问题是:

    1. 除了运行允许在集群开始时失败的虚拟任务外,还有临时的解决方法吗?
    1 回复  |  直到 8 年前
        1
  •  3
  •   tix    8 年前

    你如何始终如一地再现这一点?在尝试使用不同的集群设置进行复制之后,我的最佳理论是,这可能是一个过载的服务器,返回5xx错误。

    就解决方法而言:

    1) 从Maven Central下载jar并将其传递给 --jars 提交作业时的选项。如果您经常创建新集群,那么可以通过初始化操作将此文件转移到集群上。

    2) 通过提供备用常春藤设置文件 spark.jars.ivySettings 指向Google Maven中央镜像的属性(这应该减少/消除5xx错误的几率)

    请参阅本文: https://www.infoq.com/news/2015/11/maven-central-at-google