Spark Java: невозможно изменить память драйвера - PullRequest
1 голос
/ 06 августа 2020

Итак, у меня есть автономный кластер Spark с 16 рабочими узлами и одним главным узлом. Я запускаю кластер с помощью команды «sh start-all. sh» с главного узла в папке spark_home / conf. Главный узел имеет 32 ГБ ОЗУ и 14 VCPUS, в то время как у меня 16 ГБ ОЗУ и 8 VCPUS на узел. У меня также есть приложение Spring, которое при запуске (с java -jar app.jar) инициализирует контекст искры. Файл spark-env. sh:

export SPARK_MASTER_HOST='192.168.100.17'
export SPARK_WORKER_CORES=1
export SPARK_WORKER_MEMORY=14000mb 
export SPARK_WORKER_INSTANCES=1
export SPARK_WORKER_OPTS='-Dspark.worker.cleanup.enabled=true -Dspark.worker.cleanup.interval=172800 -Dspark.worker.cleanup.appDataTtl=172800'

У меня ничего нет в spark-defaults.conf, а код для программной инициализации контекста искры:

@Bean
public SparkSession sparksession() {
     SparkSession sp = SparkSession
             .builder()
    .master("spark://....")
    .config("spark.cassandra.connection.host","192.168.100......")
    .appName("biomet")
    .config("spark.driver.memory","20g")
    .config("spark.driver.maxResultSize", "10g")
    .config("spark.sql.shuffle.partitions",48) 
    .config("spark.executor.memory","7g") 
    .config("spark.sql.pivotMaxValues","50000") 
    .config("spark.sql.caseSensitive",true)
    .config("spark.executor.extraClassPath","/home/ubuntu/spark-2.4.3-bin-hadoop2.7/jars/guava-16.0.1.jar")
    .config("spark.hadoop.fs.s3a.access.key","...")
    .config("spark.hadoop.fs.s3a.secret.key","...")
             .getOrCreate();
     return sp;
 }

После всего этого на вкладке Environment пользовательского интерфейса Spark есть spark.driver.maxResultSize 10g и spark.driver.memory 20g, НО на вкладке исполнителей для запоминающей памяти драйвера указано 0,0 B / 4,3 ГБ.

( К вашему сведению: раньше у меня был spark.driver.memory на 10 г (программно установлен), а на вкладке исполнителя было указано 4,3 ГБ, но теперь кажется, что я не могу его изменить. Но я думаю, что даже если бы у меня было 10 г, разве не предполагалось дать мне больше 4,3Гб?!)

Как мне поменять память драйвера? Я попытался установить его из spark-defaults.conf, но ничего не изменилось. Даже если я вообще не устанавливаю память драйвера (или устанавливаю ее меньше 4,3 ГБ), на вкладке исполнителей все равно отображается 4,3 ГБ.

1 Ответ

0 голосов
/ 09 августа 2020

Я подозреваю, что вы запускаете свое приложение в клиентском режиме, тогда согласно документации :

Параметры максимального размера кучи могут быть установлены с помощью Spark. Водитель. память в кластерном режиме и через параметр командной строки --driver-memory в клиентском режиме. Примечание: В клиентском режиме эту конфигурацию нельзя устанавливать через SparkConf непосредственно в вашем приложении, потому что драйвер JVM уже запущен в этой точке .

В данном случае задание Spark отправляется из приложения, поэтому само приложение является драйвером, а его память регулируется как обычно для приложений Java - через -Xmx, et c.

...