1.1 大数据及其带来的挑战
大数据越来越成为工业界和学术界的重要研究对象。企业和科研机构需要收集和处理大量数据,进而从大数据中获取知识或经济效益。例如,搜索引擎每天都在收集、处理、分析海量的网页及多媒体数据,并对外提供数据查询服务;社交网站每天记录大量的用户数据,组织形成虚拟的人际网络,提供社交和通信等服务;商业智能公司分析企业生产和销售的数据,为企业提供商务决策支持;学术研究机构也在天文、地理、物理、化学、生命科学等领域不断积累大量的实验数据,并从中分析挖掘各种科学知识。
互联网、云计算、物联网等技术的发展使得数据的产生速度越来越快、数据规模越来越大、数据类型越来越多。例如,社交网站Facebook每天要处理约25亿条消息和500+TB的新数据,用户每天上传3亿张照片[1]。早在2008年,Google每天就要处理约20 000 TB(20PB)的数据[2],在YouTube网站上用户每分钟会上传约48h的视频[3]。早在2012年,在Twitter上用户每天大约发布1.75亿条微博[4]。
在这样的背景下,大数据的概念被提出。大数据具有数据量大(Volume)、数据类型多样(Variety)、产生与处理速度快(Velocity)、价值高(Value)的“4V”特性[5]。这些特性对传统数据处理系统提出了新的挑战,使得传统数据处理系统难以在可接受的时间范围内对大数据进行高效处理。虽然出现在21世纪70年代的关系数据库解决了关系型数据的存储与OLTP(On-line Transaction Processing,在线事务处理)问题,以及之后出现的数据仓库解决了数据建模及OLAP(On-line analytical processing,在线分析处理)问题,但是在大数据环境下,传统的数据库和数据仓库都面临着可扩展性的问题。该问题导致这些传统软件难以处理大数据或者处理效率低下。为了解决这个问题,经过工业界和学术界十多年的探索和实践,多种可扩展的大数据处理框架应运而生。