2019-12-27
分享到本文转载自中国信通院CAICT
校 审 | 陈力、凌霄
编 辑 | 珊珊
一、数据管理技术发展背景
大数据的技术是数据管理技术的一种,数据管理系统有着悠久的发展历史,它是所有计算机应用的基础。谈到数据管理的软件,必须关注数据管理软件所依赖的硬件环境和它来解决的应用场景,我们可以通过图1来认识数据管理软件的位置。首先它是一种软件,处于底层硬件和上层应用之间,本质上是利用计算机硬件的存储和计算能力,对数据进行存储、管理、加工等操作,最终为了支持上层各类应用。
图1 数据管理技术发展背景
数据管理技术到现在至少有50年的发展历史,大概经历了几个发展阶段,见图2。第一个阶段是关系型数据模型的提出,为关系数据库发展奠定了理论基础;第二个阶段是Oracle和DB2等商业关系型数据库的兴起和发展壮大,开始了商业数据库产品在各行各业的应用,数据库也正式成为了继服务器、操作系统之外的第三个必须品;第三阶段由于业务场景的需要,数据库被分为面向业务的事务数据库和面向分析统计的分析数据库,两者之间的架构和建模方式也发生了变化,这是数据库技术的第一次分离;第四个阶段是数据库技术的分布式浪潮,最早是从数据分析端产生的,单机无法应对海量数据分析的需求,分布式水平扩展的需求提上日程,Hadoop、Spark和各类NoSQL都是为了应对这一需求而诞生,而分布式的技术也在2010年左右扩展到了事务数据库领域,主要为了应对越来越多的互联网业务。
图2 数据管理系统的发展阶段
数据管理系统处于硬件和应用之间的位置决定了它自身的技术演进主要依赖于底层硬件的发展和上层应用端的需求变化。在硬件端,从上世纪70年代开始,通用服务器的芯片、内存的发展就遵循摩尔定律,单机的性能越来越强,推动着数据库的处理能力不断增强,利用内存能力也是一大趋势。而进入2000年,芯片处理能力的增长赶不上业务和数据的增长,单机系统的瓶颈显露,导致数据管理系统向分布式架构转型。在应用端,业务的互联网化、在线化使得业务流量和访问频率呈指数级的增长,单机集中式架构处理遇到瓶颈,而移动互联网下动辄上千万的级的用户量,提出了海量数据分析的挑战,分布式架构正是为应对这些挑战而生。
二、大数据技术发展历程
大数据的应用和技术起源于互联网,首先是网站和网页的爆发式增长,搜索引擎公司最早感受到了海量数据带来的技术上的挑战,随后兴起的社交网络、视频网站、移动互联网的浪潮加剧了这一挑战。互联网企业发现新数据的增长量、多样性和对处理时效的要求是传统数据库、商业智能纵向扩展架构无法应对的。
在此背景下,谷歌公司率先于2004年提出一套分布式数据处理的技术体系,即分布式文件系统谷歌文件系统(Google file system,GFS)、分布式计算系统MapReduce和分布式数据库BigTable,以较低成本很好地解决了大数据面临的困境,奠定了大数据技术的基础。受谷歌公司论文启发,Apache Hadoop实现了自己的分布式文件系统HDFS、分布式计算系统MapReduce和分布式数据库HBase,并将其进行开源,这是大数据技术开源生态体系的起点。
2008年左右,雅虎最早在实际环境中搭建了大规模的Hadoop集群,这是Hadoop在互联网公司使用最早的案例,后来Hadoop生态的技术就渗透到了互联网、电信、金融乃至更多的行业。2009年UCBerkley大学的AMPLab研发出了Spark,经过5年的发展,正式替换了Hadoop生态中MapReduce的地位,成为了新一代计算引擎,而2013年纯计算的Flink诞生,对Spark发出了挑战。2014年之后大数据技术生态的发展进入了平稳期。
图3 大数据分析技术的发展历程
经过10年左右的发展,大数据技术形成了以开源为主导、多种技术和架构并存的特点。从数据在信息系统中的生命周期看,大数据技术生态主要有5个发展方向,包括数据采集与传输、数据存储、资源调度、计算处理、查询与分析。在数据采集与传输领域渐渐形成了Sqoop、Flume、Kafka等一系列开源技术,兼顾离线和实时数据的采集和传输。在存储层,HDFS已经成为了大数据磁盘存储的事实标准,针对关系型以外的数据模型,开源社区形成了K-V(key-value)、列式、文档、图4类NoSQL数据库体系,HBase、Cassandra、MongoDB、Neo4j、Redis等数据库百花齐放。资源调度方面,Yarn独领风骚,Mesos有一定发展签里。计算处理引擎方面慢慢覆盖了离线批量计算、实时计算、流计算等场景,诞生了MapReduce、Spark、Flink、Storm等计算框架。在数据查询和分析领域形成了丰富的SQL on Hadoop的解决方案,Hive、HAWQ、Impala、Presto、Drill等技术与传统的大规模并行处理(massively parallel processor,MPP)数据库竞争激烈。
图4 大数据技术生态
三、大数据技术发展趋势
2014年以后,整体大数据的技术栈已经趋于稳定,由于云计算、人工智能等技术发展,还有芯片、内存端的变化,大数据技术也在发生相应的变化。总结来看主要有几点发展趋势:
一是流式架构的更替,最早大数据生态没有办法统一批处理和流计算,只能采用Lambda架构,批的任务用批计算引擎,流式任务采用流计算引擎,比如批处理采用MapReduce,流计算采用Storm。后来Spark试图从批的角度统一流处理和批处理,Spark Streaming采用了micro-bach的思路来处理流数据。近年来纯流架构的Flink异军突起,由于其架构设计合理,生态健康,近年来发展特别快。而Spark近期也抛弃了自身微批处理的架构,转向了纯流架构Structure Streaming,流计算的未来霸主还未见分晓。
二是大数据技术的云化,一方面是公有云业务的成熟,众多大数据技术都被搬到了云上,其运维方式和运行环境都发生了较大变化,带来计算和存储资源更加的弹性变化,另一方面,私有部署的大数据技术也逐渐采用容器、虚拟化等技术,期望更加精细化地利用计算资源。
三是异构计算的需求,近年来在通用CPU之外,GPU、FPGA、ASIC等芯片发展迅猛,不同芯片擅长不同的计算任务,例如GPU擅长图像数据的处理,大数据技术开始尝试根据不同任务来调用不同的芯片,提升数据处理的效率。
四是兼容智能类的应用,随着深度学习的崛起,AI类的应用越来越广泛,大数据的技术栈在努力兼容AI的能力,通过一站式的能力来做数据分析和AI应用,这样开发者就能在一个工具站中编写SQL任务,调用机器学习和深度学习的算法来训练模型,完成各类数据分析的任务。
四、总结与展望
数据管理技术已经发展了50多年了,大数据技术是在数据管理技术的基础上,面向大规模数据分析的技术栈,它主要是分布式架构的设计思路,通过并行计算的方式来提升处理效率,同时具备了高扩展能力,根据业务需求随时扩展。经过15年左右的发展,大数据的技术栈逐渐成熟,然而近年来云计算、人工智能等技术的发展,还有底层芯片和内存端的变化,以及视频等应用的普及,都给大数据技术带来新的要求。未来大数据技术会沿着异构计算,批流融合,云化,兼容AI,内存计算等方向持续更迭,5G和物联网应用的成熟,又将带来海量视频和物联网数据,支持这些数据的处理也会是大数据技术未来发展的方向。
作者简介
姜春宇:中国信息通信研究院云计算与大数据研究所大数据与区块链部副主任,大数据技术标准推进委员会办公室主任。研究方向为大数据技术应用、数据库技术、数据资产管理、数据流通。建立了国内首个大数据产品能力评测体系,制定了Hadoop平台、MPP数据库、数据集成工具、数据管理平台、分布式数据库等多项大数据技术标准规范。参与起草《促进国家大数据发展行动纲要》,参与编写工信部《大数据产业十三五规划》,参与起草国内第一个数据交易规则,参与编写《数据资产管理实践白皮书》、《金融分布式事务数据库白皮书》。
邮箱:jiangchunyu1@caict.ac.cn