EMR命令运行程序如何提交作业

时间:2018-09-12 12:57:17

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

能否请您帮我弄清楚在将EMR步骤部署到主等于local[x]的集群后会发生什么情况?

如何command-runner.jar将工作提交给EMR的主人?如果我将“ --executor-cores 4”传递为spark-submit参数,但是在Launcher我使用local[8]创建会话,我将为执行者获得多少内核?执行者将如何创建?

我在AWS文档中找不到此内容。示例:

SomeStep: 
  Type: AWS::EMR::Step
  Properties: 
    ActionOnFailure: CONTINUE
    HadoopJarStep: 
      Args: 
        - "spark-submit"
        - "--deploy-mode"
        - "cluster"
        - "--executor-cores"
        - "4"
        - "--class"
        - "com.psyquation.batch.analytic.Driver"

        {
          "Fn::Sub": "s3://some-bucker/my-app.jar"
        },
      Jar: command-runner.jar
      MainClass: com.somepackage.Launcher
    Name: SomeStep
    JobFlowId: !Ref SomeCluster

现在在 com.somepackage.Launcher 中:

SparkSession.Builder builder = SparkSession.builder()
    // some configs ...
    .master("local[8]")
    .getOrCreate();

1 个答案:

答案 0 :(得分:2)

如果您将主控机设置为“本地”,则根本不会创建任何执行程序。整个应用程序(驱动程序和任务)将在主实例上的单个JVM进程中运行。使用“ local [8]”可以使单个进程并行运行8个任务(在不同线程中)。

主URL“本地”主要用于(本地)开发/测试,而不用于在集群上运行。您很可能根本不应该设置主URL,因此它将使用“ yarn”,这是EMR的默认设置。