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