尽管“大数据”这个词直到前些年才开始受到大家的高度关注,但早在1980年,未来学家托夫勒在其《第三次浪潮》中就将“大数据”称为“第三次浪潮的华彩乐章”。在2008年9月《自然》杂志推出了名为“大数据”的封面专栏。从2009年开始“大数据”成为网络技术行业中的热门词汇。
IDC(International Data Corporation)对大数据的定义是:“大数据技术是新一代的技术与架构,它被设计用于在成本可承受的条件下,通过非常快速的采集、发现和分析,从大体量、多样的数据中提取价值”。“大数据”的4v特性由维克托·迈尔-舍恩伯格和肯尼斯·库克耶在《“大数据”时代》中提出。
数据体量大,即所需要收集、存储、处理、分析的数据规模比较大,据统计目前人类所产生的所有印刷材料的数据量约为200PB,历史上全人类说过的所有的线PB)。而当前,普通个人计算机硬盘的容量就为TB量级,一些大企业的数据量已经接近EB量级,可称海量、巨量乃至超量,经无法处理。据 IDC 预测,近两年数据每年以50%速度增长,预计2020年相较于2010年,数据量增长近30倍。
数据多样性,大多数表现在两个方面,数据来源多样和数据结构多样。随着网络和物联网的发展,又扩展到网页、社会化媒体、感知数据,涵盖音频、图片、视频、模拟信号等等,真正诠释了数据的多样性,也对数据的解决能力提出了更高的要求。包括结构化、半结构化和非结构化数据
据 IDC 预测,后续超过 80% 的数据都会是处理难度较大的非结构化数据
数据速度快,指的是数据增长速度快,相应的数据处理速度也需要快,时效性要求高。
价值一般指的是整体数据包含的价值更大,但相对的价值密度更低,例如一段几小时的连续监控视频,可能有重大价值的数据仅仅只有一两秒 。
由于大数据的4V等特性,给传统数据技术也带来了较大的挑战,一般将解决这些挑战的技术称为大数据技术。
之前业务系统只需要收集、存储业务有关数据即可,因为数据源、数据格式单一,数据量也比较小,所以一般是采用业务系统直接将数据写入关系型数据库的方案。而大数据时代我们想要更多的利用数据、挖掘价值,所以要将多个来源的、不同格式的数据收集、汇总到某个集中区域进行关联和分析。另外一个关键的点是数据的时效性,跟着时间推移,数据的价值会大打折扣,所以,如何安全、快速收集这一些数据是至关重要的。
大数据时代数据收集相关的开源技术有Flume、Kafka等,除此外也会有一些公司因为原生的开源工具不能或者不能完全支持其业务,而选择自身重新开发收集工具或对原生开源工具做定制化的改造。
搞定了数据收集问题,如何存储这些多源、多样、海量的数据也是个难题。由于关系型数据库是基于关系模型设计,所以只能存储基于关系的结构化数据,对于半结构化、非结构化数据就显得力不从心了。另外,海量数据下,为了更好的提高关系型数据库在的的存储能力,一般是采用分库分表等方案,而这些方案大多都有业务耦合厉害、维护扩展难度大等缺点。
大数据时代解决海量数据存储问题的思路主要是使用分布式技术,像文件存储系统HDFS、Alluxio和大多NoSQL数据库都是分布式的。解决数据格式多样性的方案就是引用不同的数据模型,比如键-值模型、列族模型、文档模型、图模型等,而像HDFS等文件系统更是可以直接作为数据湖的存储方案,一个系统几乎是能支持所有数据类型的数据存储。
像微博、微信等社会化媒体、即时通讯,以及电子商务等应用系统,需要有交互延迟低、高可用等良好使用者真实的体验,而这些应用系统的用户量和用户使用频次都是非常大的,所以对后台数据存储系统的读写并发要求非常高。关系型数据库受事务、架构约束,随着数据量的增长,读写性能会迅速下降,而像Memcached、Redis等内存式数据库不受关系模式、事物等限制,并且使用内存存储,先天具备高并发、低延迟等特点。
应用系统的高可用意味着要提供7x24小时不间断的服务,所以大数据时代的应用系统要具备在不影响应用使用的前提下快速横向扩展等能力。关系型数据库横向扩展需要应用程序定义和管理的数据分片(或分区),无法通过快速增加服务器节点实现,而像HBase、Cassandra等NoSQL数据库设计之初就为了满足横向扩展的需求,因此天生具备良好的扩展能力和高可用性。
除了高并发应用场景外,还有一类数据应用是要在海量的数据中分析、挖掘数据价值。在数据收集、存储后,数据是原始和杂乱的,通常要先经过专门的数据清洗、转换、关联等数据处理环节,而后进行数据分析和挖掘工作。数据处理、分析、挖掘相关的技术框架和创新层出不穷,像MPP类型的数据库,以及对存储在HDFS上数据来进行处理、分析、挖掘的SQL On Hadoop系列框架等。一般按照数据使用的时效性,将这些框架分为离线和实时两大类,响应处理后的数据一般也会对应存储在离线数仓和一些支持实时读写的存储框架中。
总体来讲,大数据时代结束了关系型数据库“一统天下”的局面,大数据技术经过十年左右的发展,可谓是百花齐放,未解决大数据数据体量大的难题,Google开发了GFS、MapReduce、BigTable等分布式技术解决大体量数据的存储、计算问题,同时也解决了多样数据结构的存储问题,而后的Spark、Flink、NoSQL等技术解决了数据使效率和数据价值分析、挖掘的问题。