【问题标题】:Unable to run spark application on EMR using cluster mode无法使用集群模式在 EMR 上运行 spark 应用程序
【发布时间】:2018-09-18 13:29:06
【问题描述】:

我有一个 spark 应用程序,我想在亚马逊 EMR 上运行它。但是我的应用程序失败或进入运行模式并且永远不会退出,相同的代码在 2-3 分钟内在本地机器上运行。我怀疑我创建 spark 会话的方式存在问题,我的主 conf 低于

val spark = SparkSession.builder
  .master("local[2]")
  .appName("Graph Creation")
  .config("spark.sql.warehouse.dir", "warehouse")
  .config("spark.sql.shuffle.partitions", "1")
  .getOrCreate()

如何构建 Spark 会话,以便它可以在我的本地计算机和亚马逊 EMR 上运行而不会出现问题

【问题讨论】:

    标签: amazon-web-services apache-spark hadoop-yarn amazon-emr


    【解决方案1】:

    最好不要在 EMR 集群中使用 local 主 URL,因为您不会从使用从节点中受益。本地意味着 spark 将在启动它的系统上本地运行,并且不会尝试使用集群中的其他节点。 local 的主要目的是本地测试,无论何时你想在集群中运行,你都应该选择一个资源管理器(yarn、mesos、spark-standalone 或 Kubernetes 集群,请参阅here 了解更多详细信息)。

    您可以将主 URL 作为参数提供给 spark-submit 命令,这样如果您在本地运行它,您将传递“local”,而对于 EMR 集群,则传递“yarn”。

    val spark = SparkSession.builder
      .appName("Graph Creation")
      .config("spark.sql.warehouse.dir", "warehouse")
      .config("spark.sql.shuffle.partitions", "1")
      .getOrCreate()
    

    然后在本地:

    ./bin/spark-submit --master local[2] ...
    

    在电子病历上:

    ./bin/spark-submit --master yarn ...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-03
      • 1970-01-01
      • 2021-09-28
      • 2018-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-09
      相关资源
      最近更新 更多