• 休闲生活
  • 教育教学
  • 经济贸易
  • 政法军事
  • 人文社科
  • 农林牧渔
  • 信息科技
  • 建筑房产
  • 环境安全
  • 当前位置: 达达文档网 > 达达文库 > 休闲生活 > 正文

    实时云计算数据库——数据立方

    时间:2021-04-09 07:52:35 来源:达达文档网 本文已影响 达达文档网手机站


    打开文本图片集

    摘要:基于快速发展的并行数据库技术、云计算MapReduce技术及其混合技术,分析了这些技术的优缺点,对并行计算架构、分布式存储系统之上的索引以及其他方面进行了研究,提出了一种被称为数据立方的大数据处理系统。通过与大数据处理系统Hive和HadoopDB的对比实验表明,数据立方的大数据处理系统在入库、查询、并发、扩展等多方面有明显的优势。

    关键词: 云计算;实时;大数据;并行计算

    Abstract: In this paper, we discuss parallel database technology, MapReduce for cloud computing, and hybrid (parallel and MapReduce) technology. We discuss the advantages and disadvantages of all these technologies. We discuss parallel architecture and indexing on distributed storage system. We also discuss other aspects of big-data processing technology and propose a big-data processing system called Datacube. Datacube ios shown to have advantages over Hive and HadoopDB in terms of in query, concurrency, and expansibility.

    Key words: cloud computing; real-time; large-data; parallel computing

    中图分类号:TN915.03; TP393.03 文献标志码:A 文章编号:1009-6868 (2013) 04-0025-007

    近年来,随着计算机技术的发展,各领域数据的增长越来越快。这些数据来自方方面面,从搜集天气情况的感测器、接入社交媒体网站的指令、数码图片、在线的视频资料,到网络购物的交易记录、手机的全球定位系统信号等。随着数据规模的急剧膨胀,各行业累积的数据量越来越巨大,数据类型也越来越多、越来越复杂,已经超越了传统数据管理系统、处理模式的能力范围,传统的串行数据库系统已经难以适应这种飞速增长的应用需求。在这种需求的驱动下,云计算中的MapReduce[1]技术、并行数据库技术以及云计算与数据库相结合的技术应运而生。

    本文在大数据的背景下,对大数据处理技术进行了探讨,将其分为三类:MapReduce技术、并行数据库技术和云计算与数据库相结合的技术。通过研究这些技术的架构、适用环境,本文提出了一种全新的云计算数据库——数据立方。

    1 云计算相关技术

    1.1 大数据处理技术——MapReduce

    MapReduce计算架构把运行在大规模集群上的并行计算过程简单抽象为两个函数:Map和Reduce,也就是分解与规约。简单地说,MapReduce就是“任务的分解与结果的汇总”。程序将大数据分解为多个数据块由Map函数处理,Reduce把分解后多任务处理产生的中间结果汇总起来,得到最终结果。适合MapReduce处理的任务特征为:待处理的大规模数据集可以切分为多个小的数据集,并且每一个小数据集都可以完全并行地进行处理。

    图1介绍了用MapReduce处理大数据集的过程。一个MapReduce操作可以分为两个阶段:Map阶段和Reduce阶段。

    在映射阶段,MapReduce并行计算架构将用户的输入数据切分为M个数据段,每个数据段对应1个Map任务。每一个Map函数的输入是数据段中的键值对集合,Map函数是用户继承MapReduce并行计算架构而编写的,Map操作调用此函数,输出一组中间结果,即键值对集合。接下来,按照中间结果集合的K2将中间结果集进行排序,生成一个新的集合,使得对应同一个K2的所有值的数据都聚集在一起。然后,按照K2的范围将这些元组分割为R个片断,对应Reduce任务的数目。在规约阶段,每一个Reduce操作的输入是一个片断,Reduce操作调用用户定义的Reduce函数,生成用户需要的键值对进行输出。

    这种简洁的并行计算模型在系统层面解决了可用性、扩展性、容错性等问题,是非关系数据管理和分析技术的典型代表。MapReduce是面向廉价计算机组成的大规模集群设计的,其非共享结构、松耦合性和较强的容错能力带来了较强的扩展能力,同时,MapReduce在工业界被广泛应用,Google、twitter、Facebook、Yahoo等厂商对其进行了深度的改进和扩展。此外,MapReduce的存储模型能够存储任意格式的数据,Map和Reduce函数可以进行各种复杂的数据处理,这也使得程序员的负担加重,在对上层业务的开发效率上不如结构化查询语言(SQL)简单。在相同的硬件条件下,对于有具体条件的查询来说,并行数据库[2]的性能是远远超过MapReduce的,但是对于在大数据上的复杂统计业务来说,MapReduce在速度上会占有一定优势,MapReduce是为非结构化大数据的复杂处理而设计的,这些业务具有一次性处理的特点,此外由于采取了全数据扫描的模式以及对中间结果逐步汇总的策略,使其在拥有良好扩展能力和容错能力的同时也导致了较高的磁盘和网络I/O的负载以及较高的数据解析代价[3]。

    1.2 并行数据库技术

    在20世纪80年代,数据库流行的同时并行数据库也开始起源,早期并行数据库(如Gamma[4]和Grace[5])的基础架构被沿用至今,当前的并行数据库主要有Oracle的Exdata[6]、EMC的Greenplum[7]、Teradata[8],这些数据库都支持标准SQL。并行数据库一般可以分为无共享架构(Shared-nothing)和磁盘共享存储架构(Shared-disk)两种存储架构,如图2所示。这两种架构有各自的优缺点,在Shared-nothing系统中,数据集被切分成为了多个子集[9-11],集群中每个节点分别存储一个子集在本地磁盘上,一般来说,Shared-nothing系统可以提供很高的并行I/O和并行计算能力,但是也有多节点事务处理[12-13]、数据传输以及数据倾斜[14]等问题。在Shared-disk系统中,数据被集中存储,所有的数据库节点都可以访问存储系统的任意一个磁盘,因此数据也没有必要被切分,这也避免了数据倾斜的问题,这种系统主要的缺陷在于较低的I/O带宽和扩展能力。

    1.3 云计算与数据库相结合的技术

    与数据库相结合的云计算技术一般指的是MapReduce技术,当前主要有Teradata公司的Aster Data[15]和耶鲁大学提出的HadoopDB[16]。

    Aster Data将MapReduce与SQL引擎相结合,针对大数据处理和分析提出了SQL/MapReduce框架,用户可以使用JAVA、C++等多种语言在Aster Data的并行框架上编写MapReduce函数,编写的函数可以作为一个子查询在SQL中使用,从而获得SQL的易用性和MapReduce的开放性。同时Aster Data能够对多结构化数据、原始数据进行处理和分析,并拥有丰富的统计软件包可以讲数据分析推向数据库内进行,提升了数据分析性能。

    在HadoopDB中,系统清晰地分成两层,上层使用Hadoop进行任务的分解和调度,下层用RDBMS(Postgresql)进行数据的查询和处理,在处理查询时,执行的是SQL to mapReduce to SQL操作过程(SMS planner)。该工作的创新之处是:试图利用Hadoop的任务调度机制提高系统的扩展性和容错性,以解决大数据分析的横向扩展问题;利用RDBMS实现数据存储和查询处理,以解决性能问题。在其性能实验中,HadoopDB的性能仍然落后于关系数据库系统。如何提升MapReduce的性能,已引起研究人员的高度重视,研究人员提出了MapReduce的各种优化技术,获得了重要的性能改进。Yale大学Abadi领导的小组正在使用包括列存储、持续装载和分析等技术,以改进HadoopDB的性能[17]。

    图3所示是HadoopDB的一个结构图,在原来的Hadoop与hive的基础上,增加了一些组件[18]:其中SMS Planner的作用是在hive解析SQL语句生成MapReduce任务树之后,对MapReduce任务树进行优化,指导Hadoop去并行数据库中执行SQL。Catalog里面存储了并行数据库的一些信息。Data loader负责把原始数据加载到并行数据库中,需要完成的工作是对原始数据的划分。Database Connector用于向各个节点传递信息,包含了节点里面数据库的链接信息和需要执行的SQL语句。Paralled DataBase用于代替HDFS在各个节点上存储数据。

    2 云计算数据库

    ——数据立方

    通过对MapReduce、并行数据库和两者的混合技术研究,南京云创存储科技有限公司推出了实施云计算数据库——数据立方,该系统通过引入索引模块、并行执行架构以及读取本地磁盘的执行方式,使查询达到了实时完成、简单易用、高可靠安全的效能,使艾字节级的数据能够秒级处理,极大地提高了用户执行查询操作后的使用效率,不仅在查询和检索这部分数据的时候具有非常高的性能优势,数据立方还可以支持数据仓库存储、数据深度挖掘和商业智能分析等业务。

    2.1 数据立方的体系架构

    数据立方(DataCube)的结构分为用户接口、索引、SQL解析器、作业生成器、元数据管理、并行计算架构、分布式文件系统等部分,如图4所示。用户接口主要有两个:JDBC和Shell。JDBC主要执行数据的定义操作,即建立数据库、建表、建分区,对数据库、表和分区的删改等,同时可执行数据查询的SQL语句,暂不支持单条记录的增删改;数据立方提供友好的Shell交互界面,Shell支持数据库、表的增删改以及数据查询的SQL语句。数据在入库的同时与数据对应的索引也在同时建立,索引是一颗B树,数据插入到内存的同时,索引B树也在生成,当达到设置上限时,数据和索引会刷新到分布式文件系统上成为文件。数据立方的元数据存储在数据库中。其中包括,数据库的名字和属性,数据库中的表,表的名字,表的列和分区及其属性,表的属性,表的数据所在目录等等。SQL解析器接收从JDBC和Shell传来的SQL查询语句,同时对SQL进行词法分析、语法分析、编译、优化。作业生成器根据SQL语法树生成查询作业,分析所要处理的数据表对应的索引文件的所在存储子节点位置,并将作业发送给并行计算架构。并行计算架构接收到作业生成器生成的作业,根据索引文件的位置切分查询作业形成子任务,然后将子任务发送给数据所在的存储子节点,每个节点执行这些子任务查询索引得到结果记录所在的数据文件名与偏移量,并以广播的方式发送查询子任务到数据文件所在的节点,在执行完毕后将结果返回。数据立方可以使用HDFS和cStor[19]作为底层存储系统,cStor是一个主从结构的分布式文件系统,不仅具有HDFS的高吞吐率、高读写性能等特性,还支持HDFS所不具备的对文件修改等功能,并且支持POXIS接口。

    2.2 分布式并行计算架构(DPCA)

    数据立方的分布式并行架构(DPCA)是典型的主从结构,如图5所示。主Master与从Master分别部署在HDFS的主从NameNode物理节点上,而Slave部署在DataNode物理节点上,主从Master使用Zookeeper同步,并共享系统日志,Master与Slave之间用心跳信息保持信息交换。

    相对于MapReduce架构,DPCA具有实时性、计算的数据本地性以及数据平衡性。MapReduce架构的作业(Job)提交过程较为复杂,客户端将Job提交到JobTracker有较长的延迟,JobTracker将Job处理为MapReduce Task后,通过TaskTracker的心跳信息将Task任务返回给TaskTracker,此过程中也存在延迟。

    MapReduce架构虽然也遵循数据本地性,但仍会有很大比例的数据处理不是本地的,相对于MapReduce架构,DPCA的Job提交是实时性的,在提交Job之前所需程序Jar包已经分发到所有计算节点,在Job提交之后,Master在初始化处理之后即将Task直接分发到所有Slave节点上,如图6所示,在Job提交后,Master根据数据文件所在位置分配Task,这样在每个计算节点上要处理的HDFS上的数据块就在本地,这样避免了数据的移动,极大地减少了网络IO负载,缩短了计算时间,每个计算节点会根据Task中SQL解析器生成的执行计划对Task执行的结果进行分发,分发的方式有3种:分发所有中间数据到所有计算节点、分发所有中间数据到部分节点、根据数据所在位置分发,如图7所示。并行计算架构能够周期性地对HDFS上的数据表进行维护,保持数据表在所有的DataNode节点上所存储的数据量的平衡,减少因数据负载的不平衡而导致的计算负载的不平衡。

    举一个典型的小表与大表Join连接的实例,如图8所示,Master解析Job中的执行计划,判断小表的位置后,将Task0发送给了Slave0,指令Slave0发送小表到所有节点,而其他节点接收到的子任务是等待接受小表的数据,接收到数据后将小表与大表连接并将数据返回给Master,当所有数据返回完成则这个Job完成。

    2.3 分布式索引

    MapReduce是对每个查询都是直接从分布式文件系统中读入原始数据文件,I/O代价远高于数据库,相对于MapReduce架构以及在其之上的SQL解析器Hive,数据立方引入了一种高效的分布式索引机制,不同于并行数据库的Shared-nothing和Shared-disk架构,数据立方的数据文件与索引文件都存放在分布式文件系统之上。

    数据在入库的同时B树索引在内存中同步生成,B树中的叶子节点存储的是数据文件路径与记录在文件中的偏移量,如图9所示,在B树中的叶子节点达到设置上限后,索引将被序列化到分布式文件系统之上,在根据条件进行单表查询的时,Job被提交到并行计算框架,Master节点首先分析该表的索引文件根据索引文件所在的节点将Task发送到相应的节点,每个节点在查询本地的索引文件之后将符合条件的数据文件路径+偏移量打包成Task根据数据文件位置进行再次分发,在数据文件中的记录查询出来之后将结果返回,如图9所示。

    3 实验与评估

    3.1 实验环境

    实验环境搭建在两个机架的12台物理机组成的集群上。每台物理机使用Ubuntu9.04 server系统,JDK版本为1.6.0.18,使用的Hadoop版本为2.0.0,将HDFS作为分布式存储环境。软硬件配置如表1、表2所示。

    当前与数据立方类似的产品有分布式数据库和数据仓库,如:开源的HIVE、HadoopDB等,因此我们在数据入库、查询、查询的并发量以及线性扩展等多方面对数据立方、HIVE和HadoopDB做了对比实验。

    3.2 数据入库实验

    数据立方能够快速进行数据入库同时实时建立索引,相对于基于传统数据库的HadoopDB来说具有天然的优势,但由于HIVE在数据入库的同时并没有建立索引使其在查询的过程中没有优势。实验结果如图10所示。

    3.3 单表查询实验

    对于简单的单表查询来说,数据量较小时,HadoopDB与数据立方的查询速度都是比较快的,但在大数据量下,数据立方的高效分布式查询更有优势,而HIVE的底层是基于MapReduce,所以速度较慢。实验结果如下图11所示。

    3.4 多表查询实验

    在多表查询方面,在小表与小表、大表与小表之间的关联查询,数据立方和HadoopDB都是较快的,但在大表与大表之间做关联查询时,数据立方相对于HadoopDB更快,而HIVE是最慢的。多表查询实验结果如图12所示。

    3.5 并发查询实验

    数据立方的每个节点支持200个并发查询,同时每个查询均是秒级响应,HadoopDB由于是SMS的中间层,由于MapReduce架构本身的心跳机制而导致了较大的延迟,所以是很难达到秒级响应的,HIVE的任务并发数取决于MapReduce的并发任务数,所以会更低。实验结果如图13所示。

    3.6 线性扩展实验

    数据立方、HadoopDB和HIVE均支持线性扩展,而数据立方的扩展效率更高,即对系统的软硬件做扩展后,性能也能够达到类似线性的增长。实验结果如图14所示。

    4 结束语

    Hadoop是一种流行的MapReduce计算模型的开源实现,用于大规模数据集的并行化分析处理,并行数据库是在单机数据库基础之上发展而来的数据库集群,本文通过研究MapReduce技术、并行数据库技术以及混合技术探讨了一系列相关的大数据处理技术,更深一步探索了基于分布式文件系统的并行计算架构和分布式海量数据实时索引机制,以此为基础并辅以其他技术形成了一个支持非结构化、结构化和半结构化数据高效存储,支持离线数据分析和在线专题应用,支持结构化数据与非结构化、半结构化数据之间的复杂计算的实时云计算数据库数据立方。最后,本文通过实验验证了数据立方相对于其他系统的优势。

    参考文献

    [1] DEAN J, GHEMAWAT S. MapReduce:Simplified data processing on large clusters [C]//Proceedings of the 6th USENIX Symposium on Operation Systems Design and Implementation (OSDI’04), Dec 6-8, 2004, San Francisco, CA USA. New York, NY, USA: ACM, 2004:137-150.

    [2] PAVLO A, PAULSON E, RASIN A, et al. A comparison of approaches to large scale data analysis [C]//Proceedings of the ACM SIGMOD International Conference on Management of Data (SIGMOD’09), Jun 29-Jul 2, 2009,Providence,Rhode Island, USA. New York, NY, USA: ACM, 2009:165-178.

    [3] JIANG D, OOI B C, SHI L, et al. The performance of MapReduce: An in-depth study [J]. Proceedings of the VLDB Endowment (PVLDB), 2010, 3 (1): 472-483.

    [4] DEWITT D J, GERBER R H, GRAEFE G, et al. GAMMA- A high performance dataflow database machine [C]//Proceedings of the 12th International Conference on Very Large Data Bases (VLDB’86 ), Aug 15-18, 1986, Kyoto, Japan. San Francisco, CA,USA: Morgan Kaufmann Publishers, 1986: 228-237.

    [5] FUSHIMI S, KITSUREGAWA M, TANAKA H. An overview of the system software of a parallel relational database machine [C]//Proceedings of the 12th International Conference on Very Large Data Bases(VLDB’86), Aug 15-18, 1986, Kyoto,Japan. San Francisco, CA,USA: Morgan Kaufmann Publishers, 1986:209-219.

    [6] EMC Corporation. Greenplum [EB/OL]. [2013-04-02]. http:///.

    [7] Oracle Exadata [EB/OL]. [2013-04-09]. http:///cn/products/database/ exadata/overview/index.html/.

    [8] Teradata Corporation. Teradata [EB/OL]. [2013-04-10]. http:///.

    [9] DEWITT D, GRAY J. Parallel database systems: The future of high performance database systems [J]. Communications of the ACM, 1992,35(6):85-98.

    [10] MEHTA M, DEWITT D J. Data placement in Shared-nothing parallel database systems [J]. The VLDB Journal, 1997,6(1):53-72.

    [11] CHAMBERLIN D D, SCHMUCK F B. Dynamic data distribution(D3) in a Shared-nothing multiprocessor data store [C]//Proceedings of the 18th International Conference on Very Large Data Bases(VLDB’92), Aug 23-27, 1992,Vancouver, Canada. San Francisco, CA, USA: Morgan Kaufmann Publishers, 1992:163-174.

    [12] MAREK R, RAHM E. Performance evaluation of parallel transaction processing in Shared nothing database systems [C]//Proceedings of the 4th International Conference on Parallel Architectures and Languages Europe(PARLE’92), Jun 15-18, 1992, Paris, France. Berlin, Germany: Springer-Verlag,1992:295-310.

    [13] JENQ B C, TWICHELL B C, KELLER T W. Locking performance in a Shared nothing parallel database machine [J]. IEEE Transactions on Knowledge and Data Engineering, 1989,1(4): 530-543.

    [14] LEE C, CHANG Z A. Workload balance and page access scheduling for parallel JOINs in Shared-nothing systems [C]//Proceedings of the 9th International Conference on Data Engineering, Apr 19-23, 1993, Vienna, Austria. Washington, DC, USA: IEEE Computer Society, 1993:411-418.

    [15] Asterdata Corporation. Asterdata [EB/OL]. [2013-04-10]. http:///.

    [16] ABOUZEID A, BAJDA-PAWLIKOWSKI K, ABADI D J, et al. HadoopDB: An architectural hybrid of MapReduce and DBMS technologies for analytical workloads [C]//Proceedings of the 35th International Conference on Very Large Data Bases (VLDB’09), Lyon,France.2009: 733-743.

    [17] ABOUZIED A, BAJDA-PAWLIKOWSKI K, HUANG J W, et al. HadoopDB in action: Building real world applications [C]//Proceedings of the ACM SIGMOD International Conference on Management of Data(SIGMOD’10), Jun 6-10, 2010,Indianapolis, IA, USA. New York, NY, USA: ACM, 2010:1111-1114.

    [18] HadoopDB 数据仓库简介 [EB/OL]. [2013-04-10]. http://blog.csdn.net/suwei19870312/ article/details/7242995.

    [19] Cstor Corporation. cstor [EB/OL]. [2013-04-10]. http://.

    作者简介

    王磊,中国矿业大学计算机学院硕士毕业;南京云创存储科技有限公司技术总监;从事大数据处理、数据立方产品技术规划及架构设计,大数据处理项目需求分析等。

    张真,北京科技大学MBA硕士毕业,南京云创存储科技有限公司董事长兼CEO。

    王胤然,南京航空航天大学毕业;南京云创存储科技有限公司云计算高级研发工程师;从事分布式数据处理和大规模数据挖掘工作。

    相关热词搜索: 立方 实时 数据库 计算 数据

    • 生活居家
    • 情感人生
    • 社会财经
    • 文化
    • 职场
    • 教育
    • 电脑上网