【问题标题】:Apache Spark optimizationApache Spark 优化
【发布时间】:2019-12-01 23:00:12
【问题描述】:

我正在使用带有 Pyspark 的 Spark MLlib 来完成我的作业,并且需要证明它比传统的机器学习方法更好。我有一个正在运行逻辑回归的数据集,我正在寻找准确度、精度、召回率等指标。

在 PySpark 和普通 Python 脚本中运行代码时,我意识到普通的 puthon 脚本会更快地完成执行,因为数据集中有大量数据,所以不应该出现这种情况。我很快深入挖掘并意识到 Spark 只运行 1 个 worker 并且只分配了一个核心。因此,我在 spark-defaults.conf 中进行了以下更改,因为我有一个具有 8 个 VCPU 和 16 Gb RAM 的 VM。

spark.driver.memory 8g
spark.driver.cores 8
spark.executor.instances 8

现在 Spark 对数据运行 ML 代码所花费的时间已显着减少。是否有任何进一步的优化我应该看看。我在独立模式下运行 Spark,即我的 master 和 worker 是同一个节点。

【问题讨论】:

  • 以什么方式更好?速度?准确性?只有在您尝试处理非常大的数据集时,Spark 才有意义。

标签: apache-spark machine-learning pyspark


【解决方案1】:

请记住,Spark 是针对大数据环境的,因此对于小型数据集(大小 几 TB)来说,它将是必须的.这是由 Spark Java 开销造成的,增加了大量复杂性,浪费在小型计算上,而在集群环境 (Hadoop) 中,此框架确保即使某些节点出现故障,您也能够完成任务。对于较小的数据集,所有使用 GPU 的 ML 框架都是 Spark 的竞争对手,但毕竟 Spark 为您提供的不仅仅是 ML。

这里有几篇文章可能对调优有用: https://spark.apache.org/docs/latest/tuning.html https://spark.apache.org/docs/latest/sql-performance-tuning.html

我的建议是尽可能使用 Dataframes 而不是 RDD,因为 Catalyst Optimizer 会启动并加快您的工作。

【讨论】:

    猜你喜欢
    • 2018-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-24
    • 1970-01-01
    • 1970-01-01
    • 2020-02-18
    • 1970-01-01
    相关资源
    最近更新 更多