首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何设置Apache Spark Executor内存

如何设置Apache Spark Executor内存
EN

Stack Overflow用户
提问于 2014-10-25 19:50:32
回答 8查看 192.4K关注 0票数 151

如何增加可用于Apache spark executor节点的内存?

我有一个2 GB的文件,适合加载到Apache Spark中。我目前在一台机器上运行apache spark,所以驱动程序和执行器在同一台机器上。这台机器有8 GB的内存。

在内存中设置要缓存的文件后,当我尝试计算文件的行数时,我得到了以下错误:

代码语言:javascript
复制
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交互地运行我的代码。

EN

回答 8

Stack Overflow用户

发布于 2019-05-03 14:17:27

Grega提交的答案帮助我解决了我的问题。我在本地从Docker容器中的python脚本运行Spark。最初,我在Spark中处理某些数据时遇到Java内存不足错误。但是,我可以通过在脚本中添加以下代码行来分配更多内存:

代码语言:javascript
复制
conf=SparkConf()
conf.set("spark.driver.memory", "4g") 

下面是我用来启动Spark的python脚本的完整示例:

代码语言:javascript
复制
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)
票数 9
EN

Stack Overflow用户

发布于 2016-10-06 01:29:19

显然,这个问题从来没有说过在本地模式下运行,而不是在纱线上运行。不知何故,我无法让spark-default.conf更改生效。相反,我尝试了一下,它对我很有效。

代码语言:javascript
复制
bin/spark-shell --master yarn --num-executors 6  --driver-memory 5g --executor-memory 7g

(无法将executor-内存提升到8g,因为纱线配置有一些限制。)

票数 6
EN

Stack Overflow用户

发布于 2020-07-05 15:24:49

据我所知,在运行时改变spark.executor.memory是不可能的。如果您正在运行独立版本,使用pyspark和graphframes,您可以通过执行以下命令来启动pyspark REPL

代码语言:javascript
复制
pyspark --driver-memory 2g --executor-memory 6g --packages graphframes:graphframes:0.7.0-spark2.4-s_2.11

请确保针对最新发布的Spark版本适当地更改SPARK_VERSION环境变量

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26562033

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档