大数据(big data)的定义
无法在可承受的时间范围内用常规软件工具进行捕捉、管理和处理的数据集合。目前,针对大数据的特点综述,比较公认的是大数据的4V特性
- Volume:数据量巨大,2020年全球共拥有35ZB的数据量。
- Variety:种类多,包括结构化数据、非结构化数据,如今的数据类型早已不是单一的文本形式,订单、日志、音频,多类型的数据对数据处理能力提出了更高的要求。
- Velocity:时效性,海量数据处理的时效性要求很高。
- Value:价值密度低,如何更迅速地完成数据价值“提纯”是目前海量数据背景下亟待解决的难题。
大数据的缘起
- 上世纪末,随着数据库技术的成熟,一些商业智能工具和商业数据库存储技术开始被应用。
- 2000年初,社交网络流行导致的大量非结构化数据出现,且数据量飞速增长,数据处理系统、数据库架构开始重新思考。
- 2011年麦肯锡全球研究院发布《大数据:下一个创新、竞争和生产力的前沿》
- “云计算相遇大数据”为主题的EMC World 2011会议中,EMC抛出了Big Data概念。
- 2012年维克托·舍恩伯格《大数据时代:生活、工作与思维的大变革》宣传推广,大数据概念开始风靡全球。
- 2013年5月,麦肯锡全球研究院发布了《颠覆性技术:技术改进生活、商业和全球经济》,其中12种新兴技术,并且把大数据技术定义为了基石。
- 2014年5月,美国白宫发布了2014年全球“大数据”白皮书的研究报告《大数据:抓住机遇,守护价值》。报告鼓励使用数据推动社会进步。
大数据技术的发展
2000年初,提供搜索服务的公司,Google陆续发表了三篇论文GFS(Google File System)、MapReduce(分布式并行计算框架)、BigTable(大数据分布式数据库),除了创造了三项革命性技术以外,还拉开了hadoop发展的序幕。
2003-2004年,Google公布了部分GFS和MapReduce思想的细节,受此启发的Doug Cutting率先在Nutch(搜索框架,包括爬虫、索引、查询)项目中使用分布式计算思想,使性能飙升。
2005年,Hadoop作为Nutch的一部分正式引入Apache基金会。
2006年1月,Doug Cutting加入雅虎,并在2月hadoop被分离出来,成为一套独立的软件,起名为Hadoop(Doug Cutting儿子毛绒玩具象命名)。
2006-2008年4月,雅虎网格计算团队不停的优化和测试hadoop,集群规模也从最初的100余个节点发展到4000个节点,同时,也赢得世界最快1TB数据排序,在900个节点上用时209秒。
2008年9月,Hive成为Hadoop的子项目
2008年11月,Google宣布其MapReduce用68秒对1TB的程序进行排序。
2008年, 淘宝开始投入研究基于Hadoop的系统–云梯。
2009年5月, Yahoo的团队使用Hadoop对1 TB的数据进行排序只花了62秒时间。
2009年,伯克利大学的实验室研发出了Spark,主攻一站式分布式内存计算框架、同时支持批处理和准实时计算。
2010年,数据湖概念产生。
2010年-2011年,各大模块脱离hadoop成为apache顶级项目,包括avro、hbase、hive、pig、zookeeper,同时hadoop社区也在忙于建立大量的新组件,包括sqoop、oozie、flume等,来扩展hadoop的使用场景和可用性。
2014年,Stratosphere 0.6开始,正式更名为Flink,并成为apache孵化项目,Flink诞生,对Spark都发出了挑战。flink被定义为统一的大数据分析和流计算引擎、下一代大数据处理引擎。
2017年-2019年,数据湖开源解决方案Delta、Hudi、Iceberg逐步完善。
2018年-至今,湖仓一体、一体化数据平台、DataOps、数据编织等概念兴起。
在2010年附近,围绕hadoop生态体系构建的商业,也如雨后春笋般成长,国内外厂商纷纷布局
- 2009年3月,Cloudera推出CDH。
- 2009年12月,运营商合作伙伴亚信提出橘云战略、开始对开源hadoop进行研究布局。
- 2010年5月,IBM提供基于hadoop的大数据分析软件InfoSphere BigInsights。
- 2011年3月,Platform Computing宣布Symphony软件支持hadoop。
- 2011年4月,SGI( Silicon Graphics International )基于SGI Rackable和CloudRack服务器产品线提供Hadoop优化的解决方案。
- 2011年5月,Mapr Technologies公司推出分布式文件系统和MapReduce引擎——MapR Distribution for Apache Hadoop。
- 2011年6月,数据集成供应商Informatica发布了其旗舰产品,支持Hadoop。
- 2011年7月,雅虎创建了Hortonworks,并发行HDP产品,并迅速成为了hadoop三大发行版本之一,目前国内的很多发行版本都基于HDP进行二次封装和改造。
hadoop发展至今,已经从最初HDFS、MapReduce、和Yarn的合称,变成了大数据技术体系的代名词。几乎所有采用分布式理论解决海量数据的采、存、算、查的技术都可以称为大数据技术。从大数据平台(集成大数据技术能力、提供企业级解决方案)的发行版本来看,Hortworks的开源产品HDP、apache开源设计版本hadoop、以及cloudera付费版本CDH三足鼎立(18年末,CDH和HDP合并为CDP,并彻底闭源)。从技术生态来看,后续发展起来的大规模数据存储、实时计算等框架,或多或少都收到了hadoop的启发,同时,几乎都天然适配hadoop。至此,围绕hadoop生态圈构建的商业和技术体系也愈加完善。
纵观hadoop生态技术的发展史,除了Google公布GFS、MR、BigTable有划时代的意义以外,还有几个里程碑事件尤为重要。第一个是hive的产生,hive作为数据仓库工具,支持开发人员基于sql完成大规模数据的分析、计算,大大降低了开发复杂度。第二个是spark的产生,基于弹性分布式数据集的一站式内存计算框架(支持批处理、准实时处理、机器学习、图计算)等,面对大规模的数据计算场景,如果早期MapReduce是为了解决海量数据可以被计算的问题,那么spark在计算层面的优化,解决的问题是算的更快。第三个flink的产生,同样是以新的理念,优化了计算框架,解决的是有状态数据的流式计算问题,同时,被定义为统一的大数据分析和流计算引擎、下一代大数据处理引擎。目前很多企业,包括 BAT、华为、滴滴、美团、饿了么、携程、360、顺丰、爱奇艺、UBER等。都在大规模使用flink作为他们的核心计算引擎。第四个是数据湖概念的兴起,尤其是与云原生理念结合后,作为全新的企业数据底座,支撑企业数据活动,是当下乃至未来3-5年一个重要的发展方向。
从以上里程碑事件可以看出端倪,那就是大数据技术的发展趋势,沿着更普惠(开发复杂度低)、效率更高(计算模型优化)的方向发展,同时,随着人们对数据生产要素的重视逐步升级,如何去挖掘更大的价值?如何构建一套灵活的数据架构,来支撑围绕数据的经营活动?是当下经营决策者思考的命题。大数据技术面临最大的挑战变成了,如何将数据生产要素快速连接到业务,实现数据的敏捷制造,让数据要素释放生产力。
大数据技术体系一级架构
前面提到过,所有采用分布式理论解决海量数据的采、存、算、查的技术都可以称为大数据技术。所以,大数据技术体系一般包含以上几个重要模块,可以看出,基本是围绕业务更好的用数来发展的。其中有几个需要注意的点
多引擎分布式计算:目前大数据计算引擎很多,如专注于批处理的mapreduce,起步很早,但诟病于计算过程中多次刷写磁盘,性能较低,目前已经逐步被淘汰掉。spark,将计算任务解析成DAG,并且大部分计算在内存中完成,可以很大程度的提高计算效率,同时支持批处理和准实时处理(SparkStreaming),完全可以当作mapreduce的替代,目前开源的数据湖解决方案内置的计算引擎就是spark,江湖地位逐步走稳。flink,下一代大数据处理引擎成为新锐,势头正猛。因为技术的不停发展迭代,当下很难评判孰优孰劣,所以,在不同的应用场景,会选择不同的计算引擎。目前比较常见的做法是,在计算之上构建一个公共接口层,来屏蔽各个计算引擎的编程细节,对外开放SQL的接口,最大程度的降低开发门槛。
一站式数据工作台:开发人员基于可视化的方式,完成数据架构的设计、数据标准、数据质量的制定、同时,可以快速完成数据的采集、ETL开发调度、以及数据服务的编排、开放。基本涵盖了所有的数据操作,并且很好的完成了开发即治理。一站式数据工作台向上承接业务,向下连接基础平台。目前很多所谓的”中台产品”做的基本就是这个事情。但是工具是工具、中台是中台,中台的事情可不是一个工具可以解决的。
即席查询:解决的是面向分析场景的交互式查询问题。追求的是更快的存储,更实时的数据更新,更牛的OLAP优化技术。我们一直强调数据架构的灵活性,其实这里有一个矛盾点,如果要灵活,就要最轻程度的聚合数据,如果数据聚合度较低,数据就不能很好的被压缩,那么查询就会变慢。即席查询在技术栈上,有两种方式,一个是采用MPP架构,如impala、ck等技术。另一个是偏向大数据架构,如presto、kudu。
大数据技术的未来构思
hadoop存算一体架构向存算分离架构演化:在大数据计算场景中,我们一般采用移动计算、不移动数据的策略来进行优化,会将计算节点和数据节点部署在一起,这会导致三个核心问题,集群规划难(存算耦合、机器带状态,无法弹性扩缩容)、运维负担重(坏盘坏节点无法避免)、存储成本高(容量预留)。在万物云原生的今天,数据存储层可以对象存储为主,计算资源基于K8S进行弹性扩缩容,可以很大程度的满足潮汐计算的需要。
数据湖解决方案逐步替代传统hive数仓:hive最大的问题在于对upsert的能力支持较弱,并没有写scheme的校验。在历史数据发生变化的数据集成场景中,需要设计复杂的ETL架构,如拉链表等,来做upsert的增强,这无疑增加了系统复杂度,同时提高了数据存储和开发成本。如今,iceberg、hudi和delta都很好的支持了upsert能力,并支持数据的实时写入,可以更好的简化数据ETL的复杂度。
流批一体化:目前很多公司依旧采用lambda架构,这种架构的缺点是需要同时维护实时和批处理两套架构,这样会导致数据口径不一致、数据维护成本高等等一系列问题。基于flink技术,实现计算引擎的统一、业务层逻辑的统一,以一套语义完成数据开发,可以更好的提高效率。
多云一站式DataOps:一站式数据平台的升级版,目前一站式数据平台更多的是为了落地数据治理,来规约全链路数据开发的规范性,提高全链路的数据流转效率。但这远远不够,未来的企业的IT基础设施会在多云之上,如何同时实现多云一站式DataOps,并且真正实现基于元数据驱动的DataOps,才是当下要思考的问题。