了解Spark流行的历史

大家好,Apache Spark已经成为处理大数据时的首选解决方案,让我们来看看Spark流行背后的原因及其发展。

Hadoop的缺陷

随着可用于处理和分析的数据量的增加,我们看到了向分布式系统的缓慢但明确的转变。然而到21世纪初,针对 "大数据 "的数据科学和机器学习仍然被证明具有挑战性。当时最先进的解决方案,如Hadoop,依赖于Map Reduce,它在几个关键方面存在缺陷。

  • 在数据科学过程中,大部分时间都花在探索性数据分析、特征工程和选择上。这需要对数据进行复杂的多步骤转换,而仅仅使用Hadoop中的Map和Reduce功能是很难做到的,这将产生大量的开发时间并产生复杂的代码库。因此,需要一个支持数据复杂转换的解决方案。

  • 数据科学是一个迭代的过程,Hadoop中典型的Map-Reduce操作需要每次从磁盘读取数据,这使得每次迭代都非常耗时和昂贵。因此,需要一个能够减少数据科学过程中每次迭代的时间的解决方案。

  • 模型需要被产品化、部署和维护。因此,我们需要一个框架,不仅允许我们分析数据,还允许我们在生产中开发和部署模型。如前所述,Hadoop不允许进行迭代分析,R/Python等框架也不能很好地扩展到大数据集。因此,需要一个能够支持大数据迭代分析的解决方案,并将产生的ML模型产品化。

进入Apache Spark

它在2014年的初始版本是以上述需求为基础建立的,Spark保留了Hadoop的可扩展性和容错性(查看我的Hadoop文章了解更多细节),并在此基础上建立了以下功能。

  • 包括一个广泛的操作列表(除了map和reduce之外),这使得只需几行代码就能建立复杂的数据处理/分析系统。此外,为Spark开发的MLlib库,有助于像使用Scikit learn一样直观地建立ML模型。这减少了开发人员/科学家的时间,使代码库更容易维护。

  • Spark利用有向无环图或 "DAG"(可以认为是一个流程图)来跟踪你想对数据执行的操作。因此,与Hadoop不同的是,在Hadoop中,会把Map Reduce作业的列表串起来,每个作业都需要从磁盘上进行读写,而Spark DAG可以帮助你把作业串起来,而不需要写出中间结果,这意味着多步骤的数据处理/分析工作会运行得更快。Spark还能够在内存中缓存中间结果,这在机器学习中特别有用,你可以进行预处理并缓存结果的训练数据,这样就可以在优化过程中从内存中反复访问(因为梯度下降等优化算法会多次迭代训练数据)。在Hadoop Map-Reduce中,训练数据必须从磁盘上访问,这使得这个过程非常耗时。

  • Spark不仅可以以迭代和互动的方式分析数据(可以与jupyter笔记本集成),还可以建立生产级数据处理和机器学习管道。

这些特性使Apache Spark在过去十年中成为分布式数据科学和机器学习的首选框架,现在几乎每个处理真正大数据的组织都可以看到它的身影。

 

你可能感兴趣的:(数据科学,spark,大数据,分布式)