如何在 Amazon EMR 中設定 Spark 參數?

2 分的閱讀內容
0

我想要在 Amazon EMR 中設定 Apache Spark 參數。

簡短描述

有兩個方法可以設定 Spark 應用程式:

  • 使用命令列引數,例如 spark-submit 命令,以避免硬式編碼值。
  • spark-defaults.conf 檔案中設定值,進行永久變更。

解決方案

使用 spark-submit 設定 Spark 參數

Spark Shell 和 spark-submit 命令支援兩個方式來動態載入組態:

  • 使用命令列選項,例如 --num-executors
  • 使用旗標 --conf

**注意:**執行 spark-submit--help 以顯示完整的選項清單。

spark-submit 命令也會從 spark-defaults.conf 讀取組態選項。在 spark-defaults.conf 檔案中,每行都包含以空格分隔的索引鍵和值。

如需詳細資訊,請參閱透過 spark-submit 提交使用者應用程式

如需 Spark 所支援參數的詳細資訊,請參閱 Spark 組態

以下是一些最常見的組態選項:

--class <main-class> \
--master <master-url>
--deploy-mode <deploy-mode> 
--conf <key>=<value> 
--num-executors <value> \
--executor-memory <value>G \
--driver-memory <value>G \
--executor-cores <number of cores> \
--driver-cores <number of cores> \
--jars <Comma-separated list of jars> \
--packages <Comma-separated list of Maven coordinates> \
--py-files < Comma-separated list of .zip, .egg, or .py files to place on the PYTHONPATH for Python apps> \

使用 spark-submit 時,應用程式 JAR 和 --jars 選項隨附的任何 JAR 都會自動傳輸至叢集。--jars 後面提供的 URL 必須以逗號分隔。清單包含在驅動程式和執行程式類別路徑中,且 JAR 和檔案會複製到執行程式節點上每個 SparkContext 的工作目錄。請記住,目錄擴展不適用於 --jars

範例

spark-submit --deploy-mode cluster --class org.apache.spark.examples.SparkPi --conf spark.dynamicAllocation.enabled=false --master yarn --num-executors 4 --driver-memory 4G --executor-memory 4G --executor-cores 1 /usr/lib/spark/examples/jars/spark-examples.jar 10

您可以使用旗標 --conf 來傳遞記憶體參數,如下列範例所示:

spark-submit --deploy-mode cluster --class org.apache.spark.examples.SparkPi --conf spark.dynamicAllocation.enabled=false --master yarn >--conf spark.driver.memory=1G --conf spark.executor.memory=1G /usr/lib/spark/examples/jars/spark-examples.jar 10

使用自訂 Spark 參數來啟動 spark-shell 和 Pyspark Shell

若要啟用 spark-shell 或 Pyspark Shell,請執行下列命令:

spark-shell

spark-shell --conf spark.driver.maxResultSize=1G --conf spark.driver.memory=1G --deploy-mode client --conf spark.executor.memory=1G --conf spark.executor.heartbeatInterval=10000000s --conf spark.network.timeout=10000001s --executor-cores 1 --num-executors 5 --packages org.apache.spark:spark-avro_2.12:3.1.2 --conf 'spark.serializer=org.apache.spark.serializer.KryoSerializer'

pyspark shell

pyspark --conf spark.driver.maxResultSize=1G --conf spark.driver.memory=1G --deploy-mode client --conf spark.executor.memory=1G --conf spark.executor.heartbeatInterval=10000000s --conf spark.network.timeout=10000001s --executor-cores 1 --num-executors 5 --packages org.apache.spark:spark-avro_2.12:3.1.2 --conf 'spark.serializer=org.apache.spark.serializer.KryoSerializer'

使用 spark-defaults.conf 設定 Spark 參數

若要進行永久組態變更,請將組態附加至檔案 /etc/spark/conf/spark-defaults.conf。然後,重新啟動 Spark History Server。下列範例會在 spark-defaults.conf 中設定執行程式記憶體和驅動程式記憶體。在此範例中,每行都包含以空格分隔的索引鍵和值。

範例

spark.executor.memory      9486M 
spark.driver.memory     9486M

下列範例組態會在叢集啟動期間設定 Spark 驅動程式和執行程式記憶體:

{
  "Classification": "spark-defaults",
  "Properties": {
    "spark.executor.memory": "9486M",
    "spark.driver.memory": "9486M"
    }
  }
]

相關資訊

在 Amazon EMR 上成功管理 Apache Spark 應用程式記憶體的最佳實務

新增 Spark 步驟

使用 Amazon EMR 重新組態快速修改您的叢集

AWS 官方
AWS 官方已更新 1 年前