Как изменить память на 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
.