Как изменить память на node для искрового работника Apache

Я настраиваю кластер Apache Spark.

Когда я запускаю кластер с 1 ведущим и 3 подчиненными, я вижу это на странице главного монитора:

Memory
2.0 GB (512.0 MB Used)
2.0 GB (512.0 MB Used)
6.0 GB (512.0 MB Used)

Я хочу увеличить используемую память для рабочих, но я не смог найти нужную конфигурацию для этого. Я изменил spark-env.sh, как показано ниже:

export SPARK_WORKER_MEMORY=6g
export SPARK_MEM=6g
export SPARK_DAEMON_MEMORY=6g
export SPARK_JAVA_OPTS="-Dspark.executor.memory=6g"
export JAVA_OPTS="-Xms6G -Xmx6G"

Но используемая память остается прежней. Что делать, чтобы изменить используемую память?

Ответ 1

При использовании 1.0.0+ и использовании искровой оболочки или искрообразования используйте параметр --executor-memory. Например.

spark-shell --executor-memory 8G ...

0.9.0 и ниже:

Когда вы запускаете задание или запускаете оболочку, измените память. Нам пришлось модифицировать искровую оболочку script, чтобы она передавала аргументы командной строки в качестве аргументов для базового приложения Java. В частности:

OPTIONS="[email protected]"
...
$FWDIR/bin/spark-class $OPTIONS org.apache.spark.repl.Main "[email protected]"

Затем мы можем запустить нашу искровую оболочку следующим образом:

spark-shell -Dspark.executor.memory=6g

При настройке для отдельного баннера я устанавливаю системное свойство программно, прежде чем создавать контекст искры и передавать значение в качестве аргумента командной строки (я могу сделать его короче, чем регенерация системы с длинной намоткой).

System.setProperty("spark.executor.memory", valueFromCommandLine)

Что касается изменения общего кластера по умолчанию, извините, не совсем уверен, как это сделать.

Один последний момент - меня немного беспокоит то, что у вас есть 2 узла с 2 ГБ и один с 6 ГБ. Память, которую вы можете использовать, будет ограничена наименьшим node - вот здесь 2GB.

Ответ 2

В Spark 1.1.1 установить максимальную память рабочих. в conf/spark.env.sh, напишите это:

export SPARK_EXECUTOR_MEMORY=2G

Если вы еще не использовали файл конфигурации, скопируйте файл шаблона

cp conf/spark-env.sh.template conf/spark-env.sh

Затем сделайте изменение и не забудьте указать его

source conf/spark-env.sh

Ответ 3

В моем случае я использую ip-сервер для ноутбука для подключения к искру. Я хочу увеличить память для исполнителя.

Это то, что я делаю:

from pyspark import SparkContext
from pyspark.conf import SparkConf

conf = SparkConf()
conf.setMaster(CLUSTER_URL).setAppName('ipython-notebook').set("spark.executor.memory", "2g")

sc = SparkContext(conf=conf)

Ответ 4

В соответствии с документацией Spark вы можете изменить память на Node с аргументом командной строки --executor-memory при отправке приложения. Например.

./bin/spark-submit \
  --class org.apache.spark.examples.SparkPi \
  --master spark://master.node:7077 \
  --executor-memory 8G \
  --total-executor-cores 100 \
  /path/to/examples.jar \
  1000

Я тестировал и работает.

Ответ 5

Конфигурация по умолчанию для рабочего состоит в том, чтобы выделить Host_Memory - 1Gb для каждого рабочего. Параметр конфигурации для ручной настройки этого значения SPARK_WORKER_MEMORY, как и в вашем вопросе:

export SPARK_WORKER_MEMORY=6g.