大数据技术发展回顾
2012年以前,大多数企业的数据仓库主要还是构建在关系型数据库上,例如Oracle、Mysql等数据库之上。但是随着企业数据量的增长,关系型数据库已经无法支撑大规模数据集的存储和分析,这种情况在一线互联网公司尤为明显,也是当时急需要解决的问题。
随着2012年Hadoop技术框架的成熟和稳定,一线互联网公司纷纷使用Hadoop技术栈来构建企业大数据分析平台,随后两年基于大数据的应用如雨后春笋一样涌现,比如千人千面的推荐系统、精准定向程序化交易的广告系统、互联网征信、大数据风控系统。时间到了2015年,Hadoop技术栈已然成为了建设数据仓库的首选项,对盲目跟风的企业来讲,有条件会上Hadoop集群、没有条件创造条件也要上Hadoop集群,那一年我听说过节点数最少的是一家做奢侈品的互联网公司,它们用3个物理机部署了一套数据仓库。
与此同时,随着Hadoop技术在企业大规模的深入应用,人们对Hadoop MapReduce框架越来越无法容忍,因为MapRecude在运行过程中会大量操作磁盘,对于复杂的计算任务来讲,动不动就是几个小时,甚至更长时间。然而大数据领域并没有革命性的框架来解决MapReduce慢的问题,人们只能一边抱怨一边想办法优化MapReduce的性能,然而效果并不是很理想。
直到2015年Spark技术框架的成熟,人们终于找到了替代MapReduce的新选择,这是一个将数据放到内存中计算的新框架,是一个比MapReduce快100倍的计算框架,对于拥有大数据量的企业来讲,真的是久旱逢甘霖,大家一股脑的冲进了Spark的怀抱,至此,大数据数据处理开了Spark时代。
有必要一提的是,Spark除了替代MapReduce以外,还带来了Spark Streaming,专门用来解决流式(实时)计算的问题。虽然当时市场有Apache Storm/Alibaba Jstorm等成熟的流式计算框架,但很快被Spark Streaming淘汰了,个人觉得打败Storm的主要原因就是Spark Streaming提高了数据处理的吞吐量和Spark on yarn的运行方式(Storm需要单独部署一套集群)。
时间到了2018年,Spark迎来了新的挑战者,那就是Apache Flink。Apache Flink与生俱来的流式计算处理能力,大大提高了数据处理的实效性,除了实效性的提升,Apache Flink还实现了exactly-once语义(一条数据只处理一次)、State管理。
作为计算领域最先进的技术框架,Apache Flink一路攻城拔寨,气势如虹。随着2018年年底阿里巴巴收购Flink的母公司,Flink China在中国开始了大规模的Flink技术推广。唾手可得中文文档、深入浅出公开视频、阿里巴巴的最佳实践,加快了Flink技术在中国市场的迅猛落地。
到了2019年的今天,人们出门必谈Flink,如同2015年,那时人们出门必谈Spark。
面对技术的快速迭代,不禁唏嘘,虽然MapReduce拼命的完善自己的生态,但是面对Spark的到来,依然毫无一战之力。同样,即使Spark生态圈已经如此完善,覆盖了离线计算、实时计算、机器学习、图计算等等诸多领域,面对Flink的到来,也在节节败退。
相对MapReduce基于磁盘的计算模式,Spark基于内存的计算方式是革命性的创新;相对Spark批量/微批的计算模式,Flink使用了流式计算的模式贴近了数据产生的本源;在它们各自的时代里,它们都代表了先进的生产力,都是以摧枯拉朽之势,雷霆万钧之力击垮对手。然而面对新的技术革新,它们都是那么弱小,不禁想起了刘慈欣《三体》中的有一句话,毁灭你,与你何干?