【发布时间】:2021-02-05 19:31:54
【问题描述】:
我正在 Spark 上运行 apache Beam 工作负载。我用 32GB 的内存初始化了工作线程(使用 -c 2 -m 32G 从属运行)。 Spark submit 将驱动程序内存设置为 30g,将执行程序内存设置为 16g。但是,执行程序会以java.lang.OutOfMemoryError: Java heap space 失败。
主 gui 指示每个执行程序的内存为 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
然后重启集群,重启一切,executor内存依然限制在1024M
【问题讨论】:
-
这里有同样的问题,Beam 管道似乎没有考虑到执行程序内存的 spark 默认值。
标签: java python apache-spark apache-beam