【问题标题】:Getting java.lang.OutOfMemoryError: on submitting pyspark application获取 java.lang.OutOfMemoryError:提交 pyspark 应用程序
【发布时间】:2017-02-23 19:59:55
【问题描述】:

我正在使用 spark-submit 命令在 32 核、64 GB 服务器上运行 pyspark 应用程序。

申请步骤

  1. df1 = 从 csv 文件(field1、field2、field3、field4)加载 5 亿数据集。

  2. df2 = 从 mongodb 加载 5 亿个条目(使用 spark mongo 适配器)(field1, field2, field3)。

  3. Left Join 操作(step throwing exception java.lang.OutOfMemoryError: Java heap space):

    df_output = df1.join(df2, ["field1", "field2", "field3"], "left_outer").select("*")

  4. 使用带有附加模式的 df_output 更新 mongo 集合。

conf/spark-env.sh 中的配置:

  • SPARK_EXECUTOR_INSTANCES=10
  • SPARK_EXECUTOR_CORES=3
  • SPARK_EXECUTOR_MEMORY=5GB
  • SPARK_WORKER_CORES=30
  • SPARK_WORKER_MEMORY=50GB

还有更多参数设置为默认值。

使用命令设置 master 和 1 个 worker。

  • sbin/start-master.sh
  • /sbin/start-slave.sh master_ip

使用命令运行脚本

nohup bin/spark-submit --packages org.mongodb.spark:mongo-spark-connector_2.11:2.0.0 --master master_ip ../test_scripts/test1.py > /logs/logs.out &

调整配置参数以优化此数据集的性能的最佳方法应该是什么,以及我们应该如何为任何数据集配置上述参数?

【问题讨论】:

    标签: apache-spark pyspark


    【解决方案1】:

    如果您遇到内存问题,需要考虑的事项很少。确保您相应地设置以下参数。

    spark.executor.memory=yarn.nodemanager.resource.memory-mb * (spark.executor.cores / yarn.nodemanager.resource.cpu-vcores)

    spark.yarn.executor.memoryOverhead=spark.executor.memory 的 15-20%

    尝试将 spark.sql.shuffle.output.partitions 参数增加到大于 2000(默认 200)。希望这会有所帮助

    【讨论】:

      猜你喜欢
      • 2021-09-01
      • 2018-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-23
      • 2023-04-02
      • 2016-12-22
      • 2020-10-13
      相关资源
      最近更新 更多