近年来,随着计算机技术的发展,各领域的数据增长越来越快。这些数据来自方方面面,从搜集天气情况的感测器、接入社交媒体网站的指令、数码图片、在线的视频资料,到网络购物的交易记录、手机的全球定位系统信号等。随着数据规模的急剧膨胀,各行业累积的数据量越来越巨大,数据类型也越来越多、越来越复杂,已经超越了传统数据管理系统、处理模式的能力范围,传统的串行数据库系统已经难以适应这种飞速增长的应用需求。在这种需求的驱动下,云计算中的MapReduce技术、并行数据库技术以及云计算与数据库相结合的技术应运而生。
本文在大数据的背景下,对大数据处理技术进行了探讨,将其分为三类:MapReduce技术、并行数据库技术和云计算与数据库相结合的技术。通过研究这些技术的架构、适用环境,本文提出了一种全新的云计算数据库——数据立方。
1.云计算相关技术
1.1 大数据处理技术——MapReduce
MapReduce计算架构把运行在大规模集群上的并行计算过程简单抽象为两个函数:Map和Reduce,也就是分解与规约。简单地说,MapReduce就是“任务的分解与结果的汇总”。程序将大数据分解为多个数据块由Map函数处理,Reduce把分解后多任务处理产生的中间结果汇总起来,得到最终结果。适合MapReduce处理的任务特征为:待处理的大规模数据集可以切分为多个小的数据集,并且每一个小数据集都可以完全并行地进行处理。
图1介绍了用MapReduce处理大数据集的过程。一个MapReduce操作可以分为两个阶段:Map阶段和Reduce阶段。
图1 MapReduce处理大数据集的过程
在映射阶段,MapReduce并行计算架构将用户的输入数据切分为肘个数据段,每个数据段对应1个Map任务。每一个Map函数的输入是数据段中的键值对<Kl,V1>集合,Mask函数是用户继承MapReduce并行计算架构而编写的,Map操作调用此函数,输出一组中间结果,即键值对<K2,V2>集合。接下来,按照中间结果集合的K2将中间结果集进行排序,生成一个新的<K2,list(V2)>集合,使得对应同一个K2的所有值的数据都聚集在一起。然后,按照K2的范围将这些元组分割为月个片断,对应Reduce任务的数目。在规约阶段,每一个Reduce操作的输入是一个<K2,list(V2)>片断,Reduce操作调用用户定义的Reduce函数,生成用户需要的键值对<K3,V3>进行输出。
这种简洁的并行计算模型在系统层面解决了可用性、扩展性、容错性等问题,是非关系数据管理和分析技术的典型代表。MapReduce是面向廉价计算机组成的大规模集群设计的,其非共享结构、松耦合性和较强的容错能力带来了较强的扩展能力,同时,MapReduce在工业界被广泛应用,Google、twitter、Facebook、Yahoo等厂商对其进行了深度的改进和扩展。此外,MapReduce的<key,value>存储模型能够存储任意格式的数据,Map和Reduce函数可以进行各种复杂的数据处理,这也使得程序员的负担加重,在对上层业务的开发效率上不如结构化查询语言(SQL)简单。
在相同的硬件条件下,对于有具体条件的查询来说,并行数据库闭的性能是远远超过MapReduce的,但是对于在大数据上的复杂统计业务来说,MapReduce在速度上会占有一定优势,MapReduce是为非结构化大数据的复杂处理而设计的,这些业务具有一次性处理的特点,此外由于采取了全数据扫描的模式以及对中间结果逐步汇总的策略,使其在拥有良好扩展能力和容错能力的同时也导致了较高的磁盘和网络I/O的负载以及较高的数据解析代价。
1.2 并行数据库技术
在20世纪80年代,数据库流行的同时并行数据库也开始起源,早期并行数据库(如Gamma和Grace)的基础架构被沿用至今,当前的并行数据库主要有Oracle的Exdata、EMC的Greenplum、Temdata,这些数据库都支持标准SQL。并行数据库一般可以分为无共享架构(Shared-nothing)和磁盘共享存储架构(shared-disk)两种存储架构,如图2所示。这两种架构有各自的优缺点,在Shared—nothing系统中,数据集被切分成为了多个子集,集群中每个节点分别存储一个子集在本地磁盘上,一般来说,shared-nothing系统可以提供很高的并行I/O和并行计算能力,但是也有多节点事务处理、数据传输以及数据倾斜等问题。在Shared-disk系统中,数据被集中存储,所有的数据库节点都可以访问存储系统的任意一个磁盘,因此数据也没有必要被切分,这也避免了数据倾斜的问题,这种系统主要的缺陷在于较低的I/O带宽和扩展能力。
图2 无共享架构(Shared-nothing)和磁盘共享存储架构(Shared-disk)
1.3 云计算与数据库相结合的技术
与数据库相结合的云计算技术一般指的是MapReduce技术,当前主要有Temdata公司的Aster Data和耶鲁大学提出的HadoopDB。
Aster Data将MapReduce与SQL引擎相结合,针对大数据处理和分析提出了SQL小印Reduce框架,用户可以使用JAVA、C++等多种语言在AsterData的并行框架上编写MapReduce函数,编写的函数可以作为一个子查询在SQL中使用,从而获得SQL的易用性和MapReduce的开放性。同时Aster Data能够对多结构化数据、原始数据进行处理和分析,并拥有丰富的统计软件包可以讲数据分析推向数据库内进行,提升了数据分析性能。
在HadoopDB中,系统清晰地分成两层,上层使用Hadoop进行任务的分解和调度,下层用RDBMS(PostgreSQL)进行数据的查询和处理,在处理查询时,执行的是SQLto mapReducetoSQL操作过程(SMS planner)。该工作的创新之处是:试图利用Hadoop的任务调度机制提高系统的扩展性和容错性,以解决大数据分析的横向扩展问题;利用RDBMS实现数据存储和查询处理,以解决性能问题。在其性能实验中,HadoopDB的性能仍然落后于关系数据库系统。如何提升MapReduce的性能,已引起研究人员的高度重视,研究人员提出了MapReduce的各种优化技术,获得了重要的性能改进。Yale大学Abadi领导的小组正在使用包括列存储、持续装载和分析等技术,以改进HadoopDB的性能。
图3 所示是HadoopDB的一个构图,在原来的Hadoop与hive的基础上,增加了一些组件:其中SMSPlanner的作用是在hive解析SQL语句生成MapReduce任务树之后,对MapReduce任务树进行优化,指导Hadoop去并行数据库中执行SQL。Catalog里面存储了并行数据库的一些信息。Data loader负责把原始数据加载到并行数据库中,需要完成的工作是对原始数据的划分。Databaseconnector用于向各个节点传递信息,包含了节点里面数据库的链接信息和需要执行的SQL语句。ParalledDataBase用于代替HDFS在各个节点上存储数据。
图3 HadoopDB结构图
2.云计算数据库——数据立方
通过对MapReduce、并行数据库和两者的混合技术研究,南京云创存储科技有限公司推出了实施云计算数据库——数据立方,该系统通过引入索引模块、并行执行架构以及读取本地磁盘的执行方式,使查询达到了实时完成、简单易用、高可靠安全的效能,使艾字节级的数据能够秒级处理,极大地提高了用户执行查询操作后的使用效率,不仅在查询和检索这部分数据的时候具有非常高的性能优势,数据立方还可以支持数据仓库存储、数据深度挖掘和商业智能分析等、业务。
2.1 数据立方的体系架构
数据立方(DataCube)的结构分为用户接口、索引、SQL解析器、作业生成器、元数据管理、并行计算架构、分布式文件系统等部分,如图4所示。
图4 数据立方架构
用户接口主要有两个:JDBC和Shell。JDBC主要执行数据的定义操作,即建立数据库、建表、建分区,对数据库、表和分区的删改等,同时可执行数据查询的SQL语句,暂不支持单条记录的增删改;数据立方提供友好的shell交互界面,Shell支持数据库、表的增删改以及数据查询的SQL语句。数据在入库的同时与数据对应的索引也在同时建立,索引是一颗B树,数据插入到内存的同时,索引B树也在生成,当达到设置上限时,数据和索引会刷新到分布式文件系统上成为文件。数据立方的元数据存储在数据库中。其中包括,数据库的名字和属性,数据库中的表,表的名字,表的列和分区及其属性,表的属性,表的数据所在目录等等。SQL解析器接收从JDBc和Shell传来的SQL查询语句,同时对SQL进行词法分析、语法分析、编译、优化。作业生成器根据SQL语法树生成查询作业,分析所要处理的数据表对应的索引文件的所在存储子节点位置,并将作业发送给并行计算架构。并行计算架构接收到作业生成器生成的作业,根据索引文件的位置切分查询作业形成子任务,然后将子任务发送给数据所在的存储子节点,每个节点执行这些子任务查询索引得到结果记录所在的数据文件名与偏移量,并以广播的方式发送查询子任务到数据文件所在的节点,在执行完毕后将结果返回。数据立方可以使用HDFS和cStor,作为底层存储系统,cStor是一个主从结构的分布式文件系统,不仅具有HDFS的高吞吐率、高读写性能等特性,还支持HDFS所不具备的对文件修改等功能,并且支持POXIS接口。
2.2 分布式并行计算架构(DPCA)
数据立方的分布式并行架构(DPCA)是典型的主从结构,如图5所示。主Master与从Master分别部署在HDFS的主从NameNode物理节点上,而Slave部署在DataNode物理节点上,主从Master使用zookeeper同步,并共享系统日志,Master与Slave之间用心跳信息保持信息交换。
图5 DPCA架构
相对于MapReduce架构,DPCA具有实时性、计算的数据本地性以及数据平衡性。MapReduce架构的作业(Job)提交过程较为复杂,客户端将Job提交到JobTracker有较长的延迟,JobTracker将Job处理为MapReduceTask后,通过TaskTracker的心跳信息将Task任务返回给TaskTracker,此过程中也存在延迟。
MapReduce架构虽然也遵循数据本地性,但仍会有很大比例的数据处理不是本地的,相对于MapReduce架构,DPCA的Job提交是实时性的,在提交Job之前所需程序Jar包已经分发到所有计算节点,在Job提交之后,Master在初始化处理之后即将T鹊k直接分发到所有Slave节点上,如图6所示,在Job提交后,Master根据数据文件所在位置分配Task,这样在每个计算节点上要处理的HDFS上的数据块就在本地,这样避免了数据的移动,极大地减少了网络10负载,缩短了计算时间,每个计算节点会根据Task中SQL解析器生成的执行计划对Task执行的结果进行分发,分发的方式有3种:分发所有中间数据到所有计算节点、分发所有中间数据到部分节点、根据数据所在位置分发,如图7所示。并行计算架构能够周期性地对HDFS上的数据表进行维护,保持数据表在所有的DataNode节点上所存储的数据量的平衡,减少因数据负载的不平衡而导致的计算负载的不平衡。
图6 并行计算架构上作业执行过程
图7 并行计算架构的3种分发方式
举一个典型的小表与大表Join连接的实例,如图8所示,Master解析Job中的执行计划,判断小表的位置后,将Task0发送给了Slave0,指令Slave0发送小表到所有节点,而其他节点接收到的子任务是等待接受小表的数据,接收到数据后将小表与大表连接并将数据返回给Master,当所有数据返回完成则这个Job完成。
图8 小表与大表的Join实例
2.3 分布式索引
MapReduce是对每个查询都是直接从分布式文件系统中读入原始数据文件,I/O代价远高于数据库,相对于MapReduce架构以及在其之上的SQL解析器Hive,数据立方引入了一种高效的分布式索引机制,不同于并行数据库的Shared-nothing和Shared—disk架构,数据立方的数据文件与索引文件都存放在分布式文件系统之上。
数据在入库的同时B树索引在内存中同步生成,B树中的叶子节点存储的是数据文件路径与记录在文件中的偏移量,如图9所示,在B树中的叶子节点达到设置上限后,索引将被序列化到分布式文件系统之上,在根据条件进行单表查询的时,Job被提交到并行计算框架,Master节点首先分析该表的索引文件根据索引文件所在的节点将Task发送到相应的节点,每个节点在查询本地的索引文件之后将符合条件的数据文件路径+偏移量打包成Task根据数据文件位置进行再次分发,在数据文件中的记录查询出来之后将结果返回,如图9所示。
图9 B树索引
3.实验与评估
3.1 实验环境
实验环境搭建在两个机架的12台物理机组成的集群上。每台物理机使用ubuntu9.04 server系统,JDK版本为1.6.0.18,使用的Hadoop版本为2.0.0,将HDFS作为分布式存储环境。软硬件配置如表1、表2所示。
表1、表2 硬件配置和软件配置
当前与数据立方类似的产品有分布式数据库和数据仓库,如:开源的HIVE、HadoopDB等,因此我们在数据入库、查询、查询的并发量以及线性扩展等多方面对数据立方、HIVE和HadoopDB做了对比实验。
3.2 数据入库实验
数据立方能够快速进行数据入库同时实时建立索引,相对于基于传统数据库的HadoopDB来说具有天然的优势,但由于HIvE在数据入库的同时并没有建立索引使其在查询的过程中没有优势。实验结果如图10所示。
图10 数据入库实验
3.3 单表查询实验
对于简单的单表查询来说,数据量较小时,HadoopDB与数据立方的查询速度都是比较快的,但在大数据量下,数据立方的高效分布式查询更有优势,而HIVE的底层是基于MapReduce,所以速度较慢。实验结果如下图11所示。
图11 单表查询实验
3.4 多表查询实验
在多表查询方面,在小表与小表、大表与小表之间的关联查询,数据立方和HadoopDB都是较快的,但在大表与大表之间做关联查询时,数据立方相对于HadoopDB更快,而HIVE是最慢的。多表查询实验结果如图12所示。
图12 多表查询实验
3.5 并发查询实验
数据立方的每个节点支持200个并发查询,同时每个查询均是秒级响应,HadoopDB由于是SMS的中间层,由于MapReduce架构本身的心跳机制而导致了较大的延迟,所以是很难达到秒级响应的,HIVE的任务并发数取决于MapReduce的并发任务数,所以会更低。实验结果如图13所示。
图13 并发查询实验
3.6 线性扩展实验
数据立方、HadoopDB和HIVE均支持线性扩展,而数据立方的扩展效率更高,即对系统的软硬件做扩展后,性能也能够达到类似线性的增长。实验结果如图14所示。
图14 线性扩展实验
4.结束语
Hadoop是一种流行的MapReduce计算模型的开源实现,用于大规模数据集的并行化分析处理,并行数据库是在单机数据库基础之上发展而来的数据库集群,本文通过研究MapReduce技术、并行数据库技术以及混合技术探讨了一系列相关的大数据处理技术,更深一步探索了基于分布式文件系统的并行计算架构和分布式海量数据实时索引机制,以此为基础并辅以其他技术形成了一个支持非结构化、结构化和半结构化数据高效存储,支持离线数据分析和在线专题应用,支持结构化数据与非结构化、半结构化数据之间的复杂计算的实时云计算数据库数据立方。最后,本文通过实验验证了数据立方相对于其他系统的优势。
核心关注:拓步ERP系统平台是覆盖了众多的业务领域、行业应用,蕴涵了丰富的ERP管理思想,集成了ERP软件业务管理理念,功能涉及供应链、成本、制造、CRM、HR等众多业务领域的管理,全面涵盖了企业关注ERP管理系统的核心领域,是众多中小企业信息化建设首选的ERP管理软件信赖品牌。
转载请注明出处:拓步ERP资讯网http://www.toberp.com/
本文标题:实时云计算数据库——数据立方
本文网址:http://www.toberp.com/html/consultation/10839714063.html