【发布时间】:2016-05-14 14:25:59
【问题描述】:
似乎默认情况下,EMR 将 Spark 驱动程序部署到其中一个 CORE 节点,导致 MASTER 节点几乎未使用。是否可以在 MASTER 节点上运行驱动程序?我已经尝试了 --deploy-mode 参数,但无济于事。
这是我的实例组 JSON 定义:
[
{
"InstanceGroupType": "MASTER",
"InstanceCount": 1,
"InstanceType": "m3.xlarge",
"Name": "Spark Master"
},
{
"InstanceGroupType": "CORE",
"InstanceCount": 3,
"InstanceType": "m3.xlarge",
"Name": "Spark Executors"
}
]
这是我的配置 JSON 定义:
[
{
"Classification": "spark",
"Properties": {
"maximizeResourceAllocation": "true"
},
"Configurations": []
},
{
"Classification": "spark-env",
"Properties": {
},
"Configurations": [
{
"Classification": "export",
"Properties": {
},
"Configurations": [
]
}
]
}
]
这是我的步骤 JSON 定义:
[
{
"Name": "example",
"Type": "SPARK",
"Args": [
"--class", "com.name.of.Class",
"/home/hadoop/myjar-assembly-1.0.jar"
],
"ActionOnFailure": "TERMINATE_CLUSTER"
}
]
我正在使用 aws emr create-cluster 和 --release-label emr-4.3.0。
【问题讨论】:
-
据我所知,答案是否定的。主节点的唯一责任似乎是运行 YARN。
-
我虽然可以通过将 spark.executor.instances 设置为高于节点数来获得一个从属来运行 Spark 主控和一个执行器,但它没有工作
-
这是 Spark on YARN 的本质。如果将部署模式设置为客户端,则驱动程序将在主模式下运行,并且只有小型应用程序主节点将在从节点上运行。此外,如果您放弃最大化资源分配并准确指定您想要的驱动程序、执行程序和应用程序主控(基本上将这一项压缩),您可以根据应用程序需求调整集群。甚至可以尝试动态资源分配docs.aws.amazon.com/ElasticMapReduce/latest/ReleaseGuide/…。
-
相当浪费。
标签: amazon-web-services apache-spark emr