簡體   English   中英

在 AWS EMR 上運行 Spark,如何在主節點上運行驅動程序?

[英]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 集群外部運行,並且驅動程序-執行程序通信會有更高的延遲.

https://blogs.aws.amazon.com/bigdata/post/Tx578UTQUV7LRP/Submitting-User-Applications-with-spark-submit

我不認為這是浪費。 在 EMR 上運行 Spark 時,主節點將運行 Yarn RM、Livy Server 以及您選擇的其他應用程序。 如果你在客戶端模式下運行,大部分驅動程序也會在主節點上運行。

請注意,驅動程序可能比執行器上的任務更重,例如收集所有執行器的所有結果,在這種情況下,如果主節點是驅動程序運行的地方,則需要為主節點分配足夠的資源。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM