【问题标题】:SparkPi program keeps running under Yarn/Spark/Google Compute EngineSparkPi 程序在 Yarn/Spark/Google Compute Engine 下持续运行
【发布时间】:2015-04-07 05:08:49
【问题描述】:

在 Google Compute Engine 上部署了一个 Hadoop(Yarn + Spark)集群,具有一个主服务器和两个从服务器。当我运行以下 shell 脚本时:

spark-submit --class org.apache.spark.examples.SparkPi --master yarn-cluster --num-executors 1 --driver-memory 1g --executor-memory 1g --executor-cores 1 /home/hadoop/spark-install/lib/spark-examples-1.1.0-hadoop2.4.0.jar 10

这项工作一直在运行,每秒钟我都会收到一条类似这样的消息:


15/02/06 22:47:12 INFO yarn.Client: Application report from ResourceManager:
         application identifier: application_1423247324488_0008<br>
         appId: 8<br>
         clientToAMToken: null<br>
         appDiagnostics:<br>
         appMasterHost: hadoop-w-zrem.c.myapp.internal<br>
         appQueue: default<br>
         appMasterRpcPort: 0<br>
         appStartTime: 1423261517468<br>
         yarnAppState: RUNNING<br>
         distributedFinalState: UNDEFINED<br>
         appTrackingUrl: http://hadoop-m-xxxx:8088/proxy/application_1423247324488_0008/<br>
         appUser: achitre

【问题讨论】:

    标签: scala hadoop apache-spark google-compute-engine hadoop-yarn


    【解决方案1】:

    --master yarn-client代替--master yarn-cluster

    【讨论】:

    • 当我使用 yarn-client 时出现以下异常:线程“主”org.apache.spark.SparkException 中的异常:SparkContext 已在 org.apache.spark.SparkContext.runJob(SparkContext .scala:1082) 在 org.apache.spark.SparkContext.runJob(SparkContext.scala:1158) 在 org.apache.spark.rdd.RDD.reduce(RDD.scala:861) 在 org.apache.spark.examples。 SparkPi$.main(SparkPi.scala:35) 在 org.apache.spark.examples.SparkPi.main(SparkPi.scala)
    • 您是在完成工作后收到结果 - 得到结果还是在收到结果之前?
    • 当我运行 'yarn logs -applicationId 我注意到以下异常;线程“main”java.lang.NumberFormatException 中的异常:对于输入字符串:“5999m”
    【解决方案2】:

    在我的脚本中添加以下行后,它起作用了:

    导出 SPARK_JAVA_OPTS="-Dspark.yarn.executor.memoryOverhead=1024 -Dspark.local.dir=/tmp -Dspark.executor.memory=1024"

    我猜,我们不应该在指定内存时使用'm'、'g'等;否则我们会得到 NumberFormatException。

    【讨论】:

    • 我多次以这种方式指定内存,但没有收到任何错误。更重要的是,在 spark 文档中你有这样的东西:SPARK_WORKER_MEMORY Total amount of memory to allow Spark applications to use on the machine, e.g. 1000m, 2g (default: total memory minus 1 GB); note that each application's individual memory is configured using its spark.executor.memory property.
    • Yarn下试过了吗?
    • 是 - 仅在 Yarn 下
    • 集群模式下?无论如何,如前所述,我得到了 NumberFormatException: For input string: "5999m" - 这是固定的,所以我很好。感谢您的帮助。
    • 是的,在集群模式下。我又检查了一次,我以这种形式传递值,但唯一的区别是我使用的是大写字母。也许有问题。如果您检查,请告诉我。
    猜你喜欢
    • 1970-01-01
    • 2017-08-11
    • 2013-12-24
    • 1970-01-01
    • 2016-06-19
    • 2018-05-07
    • 1970-01-01
    • 2020-11-17
    相关资源
    最近更新 更多