第十一章大数据技术与实践
一、大数据概述
(一)大数据的定义:大数据的“大”是相对而言的,是指所处理的数据规模巨大到无法通过目前主流数据库软件工具处理,在可以接受的时间内完成抓取、存储、管理和分析,并从中提取出人类可以理解的信息。
(二)大数据的4V特征:
1、volume(数据量大)
2、veriety(数据类型多)
3、velocity(处理速度快)
4、vlue(价值高)
二、大数据存储平台
(一)HDFS:是一款具有高容错性的分布式文件系统,可以部署在造价低廉的主机集群上。
HDFS的设计目标:
1)检测和恢复硬件故障;
2)存储大数据集;
3)应用程序流式地访问HDFS上的数据集;
4)由于大部分MapReduce程序对HDFS上的文件是一次写入、多次读取的,古HDFS只需提供文件的创建、删除、写入、读取功能,不需要提供文件的修改功能,因此也降低了HDFS在数据一致性方面的设计难度;
5)可移植性;
6)让计算随数据的位置而移动。
(二)HBase:HBase可以对大数据进行随机、实时的读取和写入操作。
HBase的特性:
1)线性和模块化的可扩展性;
2)严格的读写一致性;
3)自动且可配置的数据表分片机制;
4)Regionserver之间可以进行热备份切换;
5)为MapReduce操作HBase数据表提供Java基础类;
6)易用的Java客户端访问API;
7)支持实时查询的数据块缓存和模糊过滤;
8)提供thrift网管和rest-ful web服务,并支持XML、protobuf和二进制编码;
9)可扩展的jrubyshell;
10)支持通过Hadoop检测子系统或JMX导出检测数据文件、ganglia集群检测系统。
(三)Cassandra:分区策略:在Cassandra中Token是用来分区数据的关键。
Cassandra存储机制:借鉴了BigTable的设计,采用Memtable和SSTable的方式。
(四)Redis:是一种面向“键—值”对类型数据的分布式NoSQL数据库,其特点是高性、持久存储、能适应高并发的应用场景。
Redis存储机制:通过异步的方式将数据写入磁盘,所以redis具有快速和数据持久化的特征。
Redis分布模式:1)读写分离模型的缺陷在于不管是master还是slave,每个结点都必须保存完整的数据,在数据量很大的情况下,集群的扩展能力受限于单点的存储能力。2)可以将每个master设计成由一个master和多个slave组成的模型。
(五)MongoDB:是一个面向集合的、模式自由的文档型数据库。
MongoDB特点:
1)面向文档存储;
2)高效的传统存储方式;
3)复制及自动故障转移;
4)动态查询;
5)支持全索引;
6)支持ruby、Python、Java、C++、PHP等多种语言;
7)面向集合存储,易存储对象类型的数据;
8)模式自由;
9)查询监视。
MongoDB作用:
1)查询;
2)插入和更新;
3)索引管理;
4)常用命令。
MongoDB适用范围:
1)适合实时插入、更新与查询;
2)适合作为信息基础设施的持久化缓存层;
3)适合由数十或数百台服务器组成的数据库;
4)Mongo的BSON数据格式非常适合文档化格式的存储及查询;
5)缓存
6)大尺寸、低价值的数据
7)高伸缩性的场景
8)用于对象及JSON数据的存储
三、大数据计算模式
最重要和典型多的集中并行计算模型包括PRAM(Parallel Random Access Machine)模型、BSP(Bulk Synchronous Parallel)模型和LogP模型。
(一)PRAM模型:并行随机存储及,也称为SIMD-SM(共享存储的单指令流多数据流)模型,是一种应用于并行计算抽象模型。
PRAM的分类:互斥读和互斥写的PRAM模型(PRAM-EREW)
并行读但互斥写的PRAM模型(PRAM-CREW)
并行读并且并行写的PRAM模型(PRAM-CRCW)
PRAM模型的优点:
1)RPAM结构简单,使在其上的算法理论分析简便易行;
2)PRAM能够表达大多数并行算法。处理器间通信、存储管理和进程同步等并行系统的低级细节都被PRAM所隐藏起来,用户只需要根据PRAM的特点实现算法即可;
3)PRAM让算法设计变得简单,让并行算法更容易移植到不同的并行系统上;
4)可以按需加入一些同步和通信等功能。
PRAM模型的缺点:
1)PRAM是一个同步模型,这意味着所有的指令均按锁步方式操作,用户感觉不到同步的存在,但它的确是很费时的;
2)模型中使用了一个全局共享存储器,且本地存储容量较小,不能很好地体现当前比较多见的分布主存多处理机的性能瓶颈;
3)由于单一共享存储器的假定,不适合异步分布存储的MIMD机器;
4)假定每个处理器均可在单位时间内访间任何存储单元,因此要求处理机间通信无延迟、无限带宽和无开销,忽略多个处理器在访问同一存储空间的竞争问题以及处理器读写存储单元带宽有限性等实践中普遍存在的问题,这一假设显然是不现实的;
5)不能很好地描述多线程技术和流水线预取技术,这两种技术是当今并行体系结构应用较普遍的技术。
(二)BPS模型:是分布式存储的MIMD计算模型。
BSP模型的优点:
1)BSP并行模型独立于体系结构,接近现有的并行系统,可以在绝大多数目标体系结构上有效地实现。因此,程序员可以直接以它为目标机器进行并行程序编写,实现并行算法。而且BP并行模型和目标机器无关,因为BSP并行模型从一开始就是和体系结构无关的。通用的并行计算模型提出的并行程序从一个平台换到另一平台不需要进行动,BSP并行程序具有很强的可移植性;
2)BSP并行模型以超步为基本单位进行并行计算,这使得BSP并行程序设计简单、清晰类似顺序程序的编写,因此BSP模型可以方便进行并行程序的编写。从某种角度看,BSP并行模型可以看成严格同步的并行计算模型,其中各处理器处理每一条指令都要保持同步;
3)BSP并行程序的性能是可以预测的,可以在系统编写之前进行理论分析,预测系统是否可行。BSP程序的运行时间可以通过BSP模型的参数计算出来。对程序性能的预测可以帮助我们开发出具有良好可扩展性的并行算法和并行程序。
BSP模型的缺点:
1)需要算法设计人员显式地将同步机制编入算法中,导致算法设计有难度;
2)限制每个超级步至多可以传递h条消息,限制了消息传递的效率;
3)BSP(整体大同步)简化了算法的设计和分析,牺牲了算法运行时间,因为路障延迟意味着所有进程必须等待最慢者。一种改进是采用子集同步,将所有进程按照快慢程度分成若干个子集。如果子集小,其中只包含成对的收发者,则它就变成了异步的个体同步,即LogP模型。另一种改进去是去除路障同步限制,改用异步模式,即异步BSP(A-BSP)。