能否请您帮我弄清楚在将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();
答案 0 :(得分:2)
如果您将主控机设置为“本地”,则根本不会创建任何执行程序。整个应用程序(驱动程序和任务)将在主实例上的单个JVM进程中运行。使用“ local [8]”可以使单个进程并行运行8个任务(在不同线程中)。
主URL“本地”主要用于(本地)开发/测试,而不用于在集群上运行。您很可能根本不应该设置主URL,因此它将使用“ yarn”,这是EMR的默认设置。