当前位置: 首页 > 知识库问答 >
问题:

Spark Java:无法更改驱动程序内存

伯君浩
2023-03-14
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中没有任何内容,以编程方式初始化spark上下文的代码是:

@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;
 }

在所有这些之后,Spark UI的Environment选项卡的Spark.driver.maxResultSize为10G,Spark.driver.memory为20G,但是驱动程序的存储内存的executors选项卡显示为0.0B/4.3GB。

(请注意:我以前的Spark.Driver.Memory是10G(以编程方式设置),在executor选项卡中显示为4.3GB,但现在看来我无法更改它。但我在想,即使我有10G的时候,它不是应该给我4.3GB以上吗?!)

如何更改驱动程序内存?我试着从spark-defaults.conf设置它,但没有任何改变。即使我没有设置所有的驱动内存(或设置为小于4.3GB),它仍然显示4.3GB在executors选项卡。

共有1个答案

韩景辉
2023-03-14

我怀疑您是在客户端模式下运行应用程序,然后根据文档:

可以使用Spark设置最大堆大小设置。司机。集群模式下的内存和客户端模式下的--driver-memory命令行选项。注意:在客户机模式下,这个配置不能直接在应用程序中通过SparkConf设置,因为驱动程序JVM在那一点上已经启动了。

在当前情况下,Spark作业是从应用程序提交的,因此应用程序本身就是一个驱动程序,它的内存按照Java应用程序的通常方式进行调节--通过-xmx等。

 类似资料:
  • 我正在处理Spring Boot项目,突然遇到应用程序无法加载MySQL jdbc的问题。(我编译了一次这个项目,没有改变任何东西) 这是我的pom.xml: 这是我的application.properties: Logcat: MySQL数据库最初是使用hibernate创建的。这些配置工作正常,但我不确定这里的真正问题是什么 编辑:我删除了。m2文件夹并从一开始安装所有依赖项。

  • 问题内容: 我正在尝试运行一个ruby文件,该文件将使用seleniumwebdriver启动chrome驱动程序。我有selenium独立服务器2.35.0。和chromedriver可执行文件已安装。我正在通过运行服务器来启动 两个会话正在启动,chrome驱动程序无法启动。 这是在我使用以下文件运行文件之后 我对此并不陌生,无法找出问题所在。而且,我也试图让它无头运行,所以我正在运行Xvfb

  • 我试图运行一个ruby文件,这将启动chrome驱动程序使用selenium WebDriver。我有selenium独立服务器2.35.0。和chromedriver可执行文件安装。我通过运行来启动服务器, 这是在我使用 我对此很陌生,不知道哪里出了问题。我也试图无头运行它,所以我有Xvfb运行。有人能帮我指出我犯的错误并启动chromedriver吗? 更新: 谁能帮我弄清楚出了什么问题吗?

  • 我正试图从我的java类中打开Google网站来测试Selenium。 启动端口36521上的ChromeDriver 75.0.3770.90(A6DCAF7E3EC6F70A194CC25E8149475C6590E025-Refs/Branch-Heads/3770@{#1003})。只允许本地连接。 请保护ChromeDriver和相关测试框架使用的端口,以防止恶意代码访问。 线程“mai

  • 嘿,伙计们,还有一个问题,下面是信息

  • 我有一个从另一个开发人员那里继承的应用程序,我对Java不太了解。这款应用程序几分钟前还能正常工作,但现在我得到了以下错误: 无法将JDBC驱动程序部署到C:\Program Files\Apache Software Foundation\Apache Tomcat 7.0.41\lib\jtds-1.2.jar。检查您是否具有对C:\Program Files\Apache Software