[英]Running Spark on AWS EMR, how to run driver on master node?
似乎默認情況下,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
。
設置驅動程序位置
使用 spark-submit,標志 --deploy-mode 可用於選擇驅動程序的位置。
當您正在調試並希望快速查看應用程序的輸出時,以客戶端模式提交應用程序是有利的。 對於生產中的應用程序,最佳實踐是以集群模式運行應用程序。 此模式為您提供了在應用程序執行期間驅動程序始終可用的保證。 但是,如果您確實使用客戶端模式並從 EMR 集群外部(例如本地、在筆記本電腦上)提交應用程序,請記住驅動程序在 EMR 集群外部運行,並且驅動程序-執行程序通信會有更高的延遲.
我不認為這是浪費。 在 EMR 上運行 Spark 時,主節點將運行 Yarn RM、Livy Server 以及您選擇的其他應用程序。 如果你在客戶端模式下運行,大部分驅動程序也會在主節點上運行。
請注意,驅動程序可能比執行器上的任務更重,例如收集所有執行器的所有結果,在這種情況下,如果主節點是驅動程序運行的地方,則需要為主節點分配足夠的資源。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.