今天是2019年,要是有谁说有十年大数据工作经验,我是不信的。因为 Spark 正式应用才多少年?看过下面文章的你,应该就知道了,2012 年移交 Apache Spark, 就算他是 Spark 的 Committer, 满打满算才 7 年。
如果是 2006 年 Hadoop 一代长老呢,那肯定有 10 年大数据经验了,但依然只能说是半吊子的大数据工程师,因为真正有实时大数据平台的年代,要从 2012 年 Apache Spark 正式推出算起。
Spark 是 Apache 的顶级项目,一举一动都在整个社区的瞩目之下。凡是由 Apache 推动的项目,自然大概率是比较成功的。回想 Google 当年没将 Big Table, Map Reduce, GFS 及时的推广到 Apache 落地,反而被后来者 Hadoop 夺得了头魁,甚为惋惜。想知道Google 错过这段好时机,可以看我的这篇文章《继蚂蚁金服OceanBase之后,腾讯也祭出了大杀技》
最初时,Spark 孵化于加利福尼亚大学(University of California) 伯克利分校(Berkeley)的大数据实验室( AMPLab).说起这个实验室,还有两个巨头产品, Apache Mesos 和 Alluxio. 看官可能对这两产品不是很了解,没关系,这里也不打算讲,以后再细说。
2006 年, Hadoop 基于 Google 的三驾马车,先于 GCP 而被世人所知。除了分布式存储扩充了商业关系型数据库的存储容量外,Map Reduce 更是一大创举,让分布式计算取得了开创新的进展。但 Map Reduce 的原理注定了它的致命缺陷,中间数据集要存盘,以致于丢失了性能上的战略牌。被 Spark 的内存式弹性分布数据集(Resilient Distributed Dataset)捡了个漏。于是 Spark 于 2009 年横空出世,弥补了 Hadoop 性能上的缺陷,由此也抢到了一块市场。
Hadoop 本来被期望很高,直指机器学习与人工智能,科学家已经尝试在 Hadoop 上研发机器学习的软件库,但由于中间数据要存盘的这一致命缺陷,导致最终很多实时计算项目烂尾,而科学家们在另外一个项目,叫做 Mesos(分布式集群管理) 上取得长足进展,索性在 Mesos 上建立 Spark(分布式计算) 来替代 Hadoop.
由此可见,Hadoop 之所以会被 Spark 打败,完全是市场新兴的诉求(机器学习与人工智能)使然。Spark 的出生,就是为了解决机器学习的困境。
当然,说 Spark 打败 Hadoop 有些不严谨,就像说 Apple 的 iOS 打败 Google 的 Andriod 一样,两者是补充,满足了不同的市场需求而已。Spark 与 Hadoop 在应用场景上,只是互相补充罢了,毕竟实现 Spark 的硬件要求比 Hadoop 要高很多,成本也就不一样了。这些都是厂商不会直接告诉你的。
Hadoop 先于 Spark 3 年出世,那么做为 Spark 如何快速从 Hadoop 中夺取属于自己的市场呢?从头建立自己的分布式管理,还是利用 Hadoop 已有市场,与 Hadoop 兼容 ,只抛出自己的分布式计算引擎呢?很显然, 聪明人都会选后者,没必要从头建立一个轮子啊。所以很快的,社区对于 Spark 的接受也相当轻松。社区的推广在很大程度上也助推了 Spark 的应用铺货。
Spark 流行的基础原因说的差不多了,那再说点高级应用。软件发生到现在这个时间段,真不是哪家软件能解决某个问题而已了,而是哪家软件能提供一整套应用链,就用那家。所以开放性就决定了软件体系能走多远。
就跟编程语言一样的,原本的 Visual FoxPro, Visual Basic, Delphi 本是解决 MIS 系统的最有效编程工具,但随着 web, mobile 应用需求的出现,这些工具再也跟不上需求发展的步伐了,逐渐就被市场给抛弃了。
纵观 现在主流的编程语言,Java, Python, 哪一个不是包罗万象,既可以玩的了 C/S 传统开发,又驾驭的了 B/S 的潮流,甚至在 mobile 应用上也能对付。Spark 也一样,除了能玩转数据 CRUD(Create, Retrieve, Update, Delete), 更能匹配当下数据科学的潮流,比如批量,实时 ETL, 比如集成各种数据分析,数据挖掘的算法,高效的去完成机器学习。
Spark 在拥抱内存式分布计算的同时,顺应时势间接容纳了 Spark Streaming, Spark Machine Learning(MLlib)Spark SQL 和 Spark GraphX, 这些组件是当下互联网生态需求的大综合,可以说整个数据应用链,Spark 都完美的提供了解决方案,那么它不红,都没理由了!