简单聊聊 Spark 的诞生史

2020-03-12 15:58:51 浏览数 (1)

这篇文章是关于 Spark 的,说实话,我是很犹豫写这篇文章的,因为 Spark 在国内非常火,大牛不计其数并且相关的文章也数不胜数,要找准一个有趣的角度去畅抒 Spark 是很难的。

想了很久,注意到网上大部分文章都关注于 Spark 是什么和 Spark 怎么用,但是关于 Spark 前期的历史文章很少了,所以这篇文章以 2018 年 databricks 公司写的 Spark The Definitive Guide 为蓝本辅之以一些历史去聊聊 Spark 。

在聊 Spark 之前,我们要先问一个问题:Spark 为什么诞生?没有一种软件是无缘无故诞生的,纯粹自娱自乐的软件是不可能得到大规模普及的。在 Spark 的创造者的心中,Spark 诞生的上下文是:日益增长的数据量和逐渐遇到瓶颈的机器性能的矛盾。

Unfortunately, this trend in hardware stopped around 2005: due to hard limits in heat dissipation, hardware developers stopped making individual processors faster, and switched toward adding more parallel CPU cores all running at the same speed. This change meant that suddenly applications needed to be modified to add parallelism in order to run faster, which set the stage for new programming models such as Apache Spark.

有了矛盾,自然就有了需求。当然,Spark 不是凭空诞生的。在 Spark 之前,Hadoop 的 MapReduce 已经得到了极大的发展,满足了数据量和机器性能的矛盾;不过,MapReduce 受到了数据库领域大牛的挑战,最出名的文章就是MapReduce: A Major Step Backwards,简单总结来说就是:

  • MapReduce 太原始了,居然还要写程序去实现数据处理逻辑,用 SQL 这种声明式查询语言不香吗?
  • 现代数据库里玩了这么多年的索引优化等技术,MapReduce 都没用上,每次都是傻傻的用没蛮力处理数据,不考虑任何效率;
  • MapReduce 一点都不新,它只是一种老技术;
  • 像传统数据库里的大部分特性,MapReduce 都没有实现,并且也不兼容现有的传统数据库。

这些观点确实在数据库领域的角度来看是非常有道理的,但是 MapReduce 解决了大数据领域里很重要的一个问题:在大规模数据中,如何让数据处理流程能在大量的廉价计算机上稳定的运行;而这个问题,数据库领域在当时没有解决,也自然导致了上文提到的矛盾:日益增长的数据量和逐渐遇到瓶颈的机器性能的矛盾。

这场论战的详细细节可以参考飞总的极客时间专栏,在此不详述。大家吵了很久,MapReduce 和数据库领域都不是赢家,反倒是让很多了去思考 MapReduce ,让 MapReduce 能和传统数据库领域结合起来,取两者之长,补两者之短。于是,加州伯克利大学的 AMPLab 做出了 Spark 。

The AMPlab had worked with multiple early MapReduce users to understand the benefits and drawbacks of this new programming model, and was therefore able to synthesize a list of problems across several use cases and begin designing more general computing platforms.

刚开始诞生的 Spark 和现在的 Spark 是完全不同的,毕竟工业界玩的和学术界有的太多不同。就 Spark 的成长而言,Spark 首先解决的 MapReduce 的问题是机器学习;比如完成一次机器学习任务可能要 10 次到 20 次的读取和写入数据,使用 MapReduce 的话,就可能要写 10 次到 20 次的单独的任务,很繁琐,不能在全局上整合这么多任务。Spark 首先解决了这个问题,把这些单独的任务都合并在一起,放到全局层面去考虑和优化。Spark 的第一炮打响了。

而且Spark的团队显然非常的知道在什么时候应该做什么。Spark最初建立的生态圈的重点主要放在了图算法和机器学习上。虽然说也做一点累世SQL on Hadoop的东西。但是当时HIVE作为敌人太强大,而Mahout什么的还有各类图算法的库,相对来说就弱多了,也有需求,所以最初的生态圈建立的非常的成功。

随着 Spark 的流行,Spark 的创造者也成立了 Databrick 公司,后面的历史就不多赘叙了,网上的文章都讲烂了,比如 Spark SQL 、Spark Streaming 等等。

个人的评价是:MapReduce 的红利大部分应该是被 Spark 吃掉了,现在的 Spark 的影响力越来越大,在某种程度上也成为了大数据计算引擎的一种标准。虽说现在 Flink 迅速崛起中,并且在流计算领域表现的非常优异,但感觉方向走错了,Spark 的历次 Submmit 和优化方向都在大谈特谈人工智能,批处理和流计算反倒没有什么大的突破。嗯,Spark 和 Flink 的使力方向不在一个维度上,一个在聊人工智能,另一个在聊流计算多么优秀,个人角度来看 ,我更看好 Spark 。不过,历史总是在发展,说不定哪天 Flink 就会打脸了呢?

参考文章: 1、Spark The Definitive Guide 2、https://mp.weixin.qq.com/s?__biz=MzI5OTM3MjMyNA==&mid=2247483985&idx=1&sn=efe1533c0e3543c6c70e6056ff608353&chksm=ec96d81adbe1510cfe27f27ed3ed895ff4c2c106c41295750344ee714bc83b6c565dd29e543a&scene=21#wechat_redirect

0 人点赞