java - (Apache Beam) 无法增加执行程序内存 - 尽管使用了多个设置,它仍固定为 1024M

标签 java python apache-spark apache-beam

我正在 Spark 上运行 apache beam 工作负载。我用 32GB 内存初始化了工作进程(从属进程以 -c 2 -m 32G 运行)。 Spark提交将驱动程序内存设置为30g,执行程序内存设置为16g。但是,执行程序失败并显示 java.lang.OutOfMemoryError: Java heap space .

主界面显示每个执行器的内存为1024M。另外,我看到所有java进程都是以-Xmx 1024m启动的。 。这意味着 Spark-submit 不会将其执行程序设置传播到执行程序。

管道选项如下:

   --runner PortableRunner \
    --job_endpoint=localhost:8099 \
    --environment_type=PROCESS \
    --environment_config='{"command": "$HOME/beam/sdks/python/container/build/target/launcher/linux_amd64/boot"}'

作业端点以默认方式设置: docker run --rm --network=host --name spark-jobservice apache/beam_spark_job_server:latest --spark-master-url=spark://$HOSTNAME:7077

如何确保设置传播到执行程序?

更新: 我将conf/spark-defaults.conf设置为

spark.driver.memory 32g
spark.executor.memory 32g

和conf/spark-env.sh 到

SPARK_EXECUTOR_MEMORY=32g

并重新启动集群并重新启动所有内容,执行程序内存仍然限制为1024M

最佳答案

我找到了原因和解决方法。

jobserver 容器在内部运行其自己的 Spark 发行版,因此在本地计算机上的 Spark 发行版中配置的设置无效。

因此,解决方案是更改 jobserver 容器中的配置,例如在启动它时传递相应的环境变量:

docker run -e SPARK_EXECUTOR_MEMORY=32g --rm --network=host --name spark-jobservice apache/beam_spark_job_server:latest --spark-master-url=spark://$HOSTNAME:7077

关于java - (Apache Beam) 无法增加执行程序内存 - 尽管使用了多个设置,它仍固定为 1024M,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64488060/

相关文章:

scala - 每 5 小时间隔查找最小值

java - 来自 spark 本地的 Azure 特定读取文件

带有异常的 Python 类型提示

java - 编写java注解用于计时方法调用

java - ORA-01792 : maximum number of columns in a table or view is 1000

java - java中的运算符>>和运算符>>>有什么区别?

python - 使用 pycrypto (RSA) 签名和验证数据

python - Django,来自 USStateField 的完整州名

hadoop - 在主 Spark 作业中启动多个 Spark 作业

java - 为什么在 Kotlin 中启动新的 Android Activity 需要 Java 类?