Apache Spark在海致大数据平台中的优化实践

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Apache Spark在海致大数据平台中的优化实践相关的知识,希望对你有一定的参考价值。

参考技术A 本文来自由海致网络技术公司翟士丹分享。专注于大数据技术领域,Apache Spark Contributor,有丰富的Spark SQL引擎调优经验。
海致全称海致网络技术公司,成立于2013年7月。作为一家技术驱动的创业型公司,海致的创始班底拥有丰富的技术经验。核心团队成员来自百度、微软、IBM、EMC、硅谷等知名企业的资深互联网专家。

产品架构如下:

平台的整体技术架构如下:

多数据整合,形成统一的数据口径:

灵活易用高性能的可视化探索式分析:

数据同步:

OLAP任意多维分析引擎实现:

数据建模系统实现:

机器学习实现:

性能及稳定性优化:

Apache Spark优化

我正在将Spark MLlib与Pyspark一起使用,并且需要证明它比传统的机器学习方法更好。我有一个数据集,在该数据集上运行Logistic回归,并且发现了诸如准确性,精度,召回率等指标。

虽然在PySpark中运行代码并使用普通的Python脚本,但我意识到普通的puthon脚本将更快地完成执行,而事实并非如此,因为数据集中有很多数据。我很快进行了更深入的挖掘,意识到Spark只需运行1个工作线程,并且只分配了一个内核。因此,由于我的VM具有8个VCPU和16 Gb RAM,因此我在spark-defaults.conf中进行了以下更改。

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

现在,Spark在数据上运行ML代码所花费的时间已大大减少。我还应该考虑进一步的优化吗?我在独立模式下运行Spark,即我的主服务器和工作服务器是同一节点。

我正在将Spark MLlib与Pyspark一起使用,并且需要证明它比传统的机器学习方法更好。我有一个正在运行Logistic回归的数据集,我正在...

答案

请记住,Spark是针对大数据环境的,因此,对于小型数据集(大小<1GB)来说,它可能不是最快的解决方案,但是对于非常大的数据集(大小>几个TB),这将是必不可少的。这是由Spark Java开销引起的,这增加了小规模计算所浪费的大量复杂性,而在集群环境(Hadoop)中,此框架确保即使某些节点出现故障,您也可以完成任务。对于较小的数据集,所有使用GPU的ML框架都是Spark的竞争对手,但毕竟Spark不仅为ML提供了更多优势。

以上是关于Apache Spark在海致大数据平台中的优化实践的主要内容,如果未能解决你的问题,请参考以下文章

译Apache Spark 数据建模之时间维度

使用 E-MapReduce 构建云上数据湖

Spark 案例实操

Apache Spark优化

优化 Apache Spark 以提升工作负载吞吐量

Spark性能优化案例