如何增加可用于Apache spark executor节点的内存?
我有一个2 GB的文件,适合加载到Apache Spark中。我目前在一台机器上运行apache spark,所以驱动程序和执行器在同一台机器上。这台机器有8 GB的内存。
在内存中设置要缓存的文件后,当我尝试计算文件的行数时,我得到了以下错误:
2014-10-25 22:25:12 WARN CacheManager:71 - Not enough space to cache partition rdd_1_1 in memory! Free memory is 278099801 bytes.
我查看了文档here,并在$SPARK_HOME/conf/spark-defaults.conf
中将spark.executor.memory
设置为4g
UI显示此变量在Spark Environment中设置。你可以找到截图here
但是,当我转到Executor tab时,我的单个执行器的内存限制仍然设置为265.4 MB。我仍然得到相同的错误。
我尝试了here中提到的各种方法,但我仍然收到错误,并且不清楚我应该在哪里更改设置。
我从spark-shell交互地运行我的代码。
发布于 2019-05-03 14:17:27
Grega提交的答案帮助我解决了我的问题。我在本地从Docker容器中的python脚本运行Spark。最初,我在Spark中处理某些数据时遇到Java内存不足错误。但是,我可以通过在脚本中添加以下代码行来分配更多内存:
conf=SparkConf()
conf.set("spark.driver.memory", "4g")
下面是我用来启动Spark的python脚本的完整示例:
import os
import sys
import glob
spark_home = '<DIRECTORY WHERE SPARK FILES EXIST>/spark-2.0.0-bin-hadoop2.7/'
driver_home = '<DIRECTORY WHERE DRIVERS EXIST>'
if 'SPARK_HOME' not in os.environ:
os.environ['SPARK_HOME'] = spark_home
SPARK_HOME = os.environ['SPARK_HOME']
sys.path.insert(0,os.path.join(SPARK_HOME,"python"))
for lib in glob.glob(os.path.join(SPARK_HOME, "python", "lib", "*.zip")):
sys.path.insert(0,lib);
from pyspark import SparkContext
from pyspark import SparkConf
from pyspark.sql import SQLContext
conf=SparkConf()
conf.set("spark.executor.memory", "4g")
conf.set("spark.driver.memory", "4g")
conf.set("spark.cores.max", "2")
conf.set("spark.driver.extraClassPath",
driver_home+'/jdbc/postgresql-9.4-1201-jdbc41.jar:'\
+driver_home+'/jdbc/clickhouse-jdbc-0.1.52.jar:'\
+driver_home+'/mongo/mongo-spark-connector_2.11-2.2.3.jar:'\
+driver_home+'/mongo/mongo-java-driver-3.8.0.jar')
sc = SparkContext.getOrCreate(conf)
spark = SQLContext(sc)
发布于 2016-10-06 01:29:19
显然,这个问题从来没有说过在本地模式下运行,而不是在纱线上运行。不知何故,我无法让spark-default.conf更改生效。相反,我尝试了一下,它对我很有效。
bin/spark-shell --master yarn --num-executors 6 --driver-memory 5g --executor-memory 7g
(无法将executor-内存提升到8g,因为纱线配置有一些限制。)
发布于 2020-07-05 15:24:49
据我所知,在运行时改变spark.executor.memory
是不可能的。如果您正在运行独立版本,使用pyspark和graphframes,您可以通过执行以下命令来启动pyspark REPL
:
pyspark --driver-memory 2g --executor-memory 6g --packages graphframes:graphframes:0.7.0-spark2.4-s_2.11
请确保针对最新发布的Spark版本适当地更改SPARK_VERSION
环境变量
https://stackoverflow.com/questions/26562033
复制相似问题