(apachebeam)不能增加executor内存-尽管使用了多种设置,但它被固定为1024m

x6yk4ghg  于 2021-05-19  发布在  Spark
关注(0)|答案(1)|浏览(438)

我正在spark上运行apache beam工作负载。我用32gb的内存初始化了worker(用 -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

重新启动集群并重新启动所有内容,执行器内存仍然限制在1024m

xzv2uavs

xzv2uavs1#

我找到了原因和解决办法。
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

相关问题