1.5 大数据的基本概念
通过上述介绍,读者应该已经对大数据有了基本的认识。接下来,学习大数据中一些具体的基本概念。
1.5.1 两个核心
大数据的核心技术主要是两大部分内容:一是数据的存储,二是数据的计算(处理)。对于数据的存储和计算处理,传统数据库、数据仓库等产品已经做得非常好了,为什么还要使用大数据技术呢?究其原因,不难发现,传统数据库和数据仓库的底层存储和处理结构采用的是 B+树算法。这种算法有个特性,那就是在数据量不大的时候性能非常好,但当数据量超过某一阈值,此算法的性能就会急剧下降。即使增加服务器扩展集群存储,也不能从根本上解决问题,因为这种解决方案类似于在一个数据库服务器的基础上购买大量磁盘做扩展存储,它不是真正意义上的分布式存储。
这里提到了一个关键词——磁盘。磁盘就是我们经常说的硬盘,也是计算机中常用的一种存储设备。可以向磁盘中存储数据,也可以从磁盘中读取数据。也就是说,处理数据时,是先把数据从磁盘上读到内存中,然后利用CPU资源进行计算,从磁盘上读数据的过程称为磁盘寻址。当磁盘中存储了海量数据之后,磁盘寻址的过程将会耗费大量时间。
所以,当数据量非常大时,传统的数据库和数据仓库虽然可以勉强存储,但也很难对这些数据做进一步的统计和分析应用。
大数据要解决的问题就是进行真正意义上的“分布式存储”和“分布式计算”。
1.5.2 分布式存储
“分布式”思想在20世纪甚至更早时期就已被提出来了,本节所讲的大数据在架构上并不是一种创新,但要真正实现这个架构并不容易。Google公司研发出了世界上第一款真正意义上的大数据分布式存储和分布式计算产品,即Google File System 和 Google MapReduce。
根据分布式思想,当文件数据的体量超过某一台服务器所能够存储的最大容量时,如果要继续存储,则首先根据数据整体规模的大小,以及单台服务器能够存储的最大容量,计算出存储该文件数据需要的服务器总台数,从而实现服务器节点数量的规划;其次将这些规划好的服务器以网络的形式组织起来,变成一个集群,在这个集群上部署一个“分布式文件系统”,统一管理集群中的各个服务器存储资源;然后,将这个文件数据切分为很多“块”(Block),即计算机操作系统存储文件数据的基本单位,类似于计算机存储数据大小的基本单位字节;最后将这些数据块平均分配到各个服务器节点进行存储,并记录每个块的存放名字及位置信息。
该分布式文件系统提供了统一的操作入口和出口。用户每次访问文件数据的时候,分布式文件系统会临时拼装来自不同机器上的块,呈现给用户一个完整的文件。这样,用户就会感觉自己访问的是一台服务器。
关于分布式存储的细节,后面的章节会进行详细的介绍。
1.5.3 分布式计算
将文件数据分布式地存储在多台服务器上,那么,如何分布式地在这些由多台服务器组成的文件系统上进行数据并行计算处理呢?
举一个简单的例子,一个班级有100个学生参加考试,老师需要一个一个地批改他们的试卷并计算其分数,结果花费了将近300min 才批改完成。为了节省时间,老师把试卷分给年级组的100位老师同时批改,结果每位老师平均只用3min就批改完成了。如果把批改试卷看作一个作业(Job),该例相当于将这个作业分解成了100个任务,并行计算处理,本次批改试卷的完成时间由原来的300min缩短到现在的3min,效率显著提高。
这个例子展示了分布式计算的效果。不过,分布式计算面临着许多挑战:作业的任务如何平均分发到各个节点?计算过程中各个节点上的资源如何统一分配和回收?中间产生的计算结果如何及时地统计汇总?集群服务器计算完成的最终结果如何统一地组织输出?这些令人棘手的问题将在后续的章节中一一得到解答。