背景

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

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



产品介绍

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


数据立方的体系架构

数据立方的体系架构图


数据立方的体系架构图

  数据立方(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接口。


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

DPCA架构图


DPCA架构图

  数据立方的分布式并行架构(DPCA)是典型的主从结构,主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节点上,如并行计算架构上作业执行过程图所示,在job提交后, master根据数据文件所在位置分配task,这样在每个计算节点上要处理的HDFS上的数据块就在本地,这样避免了数据的移动,极大地减少了网络IO负载,缩短了计算时间,每个计算节点会根据Task中SQL解析器生成的执行计划对Task执行的结果进行分发,分发的方式有三种:分发所有中间数据到所有计算节点,分发所有中间数据到部分节点,根据数据所在位置分发,如并行计算架构的三中分发方式图所示。并行计算架构能够周期性地对HDFS上的数据表进行维护,保持数据表在所有的DataNode节点上所存储的数据量的平衡,减少因数据负载的不平衡而导致的计算负载的不平衡。

小表与大表的join实例图


小表与大表的join实例图

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


分布式索引

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

B树索引


B树索引

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



测试与评估


测试环境

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


设备名称 数量 CPU 内存 硬盘
主控制服务器 2 双路四核,主频2GHz 32G 2T*8
子处理服务器 10 双路四核,主频2GHz 32G 2T*8
客户端 5 单路双核,主频2GHz 8G 1T
48口千兆交换机 1      

表1 硬件配置

软件名称 软件版本
CentOS 6.3
HadoopDB 0.1.1.0
Hive 0.9.0
数据立方 1.0
Hadoop 2.0.0

表2 软件配置

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

数据入库测试

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



数据入库测试图


数据入库测试图

单表查询测试

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


单表查询测试图


单表查询测试图

多表查询测试

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


多表查询测试图


多表查询测试图

并发查询测试

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


并发查询测试图


并发查询测试图

线性扩展测试

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


线性扩展测试图


线性扩展测试图

联系方式    总机:400-8855-360

销售人员
分 机
手机号
邮 箱
腾讯QQ
叶飞
8050
15651627356
点击这里给我发消息
张  伟
8028
15805157345
点击这里给我发消息
沈有云
8029
18652099637
点击这里给我发消息
王  军
8035
13851877991
点击这里给我发消息
张绪文心
8027
18602548008
点击这里给我发消息
刘连鹏
8018
18021395113
点击这里给我发消息
左  赛
8033
18017566211
点击这里给我发消息
刘立宏
8034
13815414773
点击这里给我发消息
何家乐
8031
18616794962
点击这里给我发消息
杨  剑
8030
18751869256
点击这里给我发消息
陈跃飞
8041
13951803427
点击这里给我发消息
吴昊
8042
17701581182
点击这里给我发消息
吴亚洲
(新疆分公司 总经理)
8022
15051819138
点击这里给我发消息
刘宏
(河南办事处 主任)
 
13333831976
点击这里给我发消息
韦远雄
(广西办事处)
18577997606
点击这里给我发消息


全国代理商

区域/行业 代理商 电 话 联系人 手机号 邮 箱
西安市教育行业 陕西精测电子仪器有限公司 029-85261352 康耀 13991342692 121665529@qq.com
贵州教育行业 贵阳飞瑞敖电子科技有限公司 0851-84849961 汤添智 18166738013 1589819668@qq.com
重庆教育行业 重庆竺韩科技有限公司 曾娟 13628383332 2586577650@qq.com
湖北省 中创云城信息科技有限公司 027-88517519 吕辉 13801220173 lvhui@cncloudcity.com.cn
中国移动 江杰 13720337758 jiangjie@cncloudcity.com.cn
江苏省教育行业 南京迪软软件有限公司 025-68592750 赵琦 18005161178 zhaoqi@ideassoft.com
上海市教育行业
成都核心代理 四川菲普斯科技有限责任公司 028-87607880 陈先生 13808007617 chanxb@qq.com
杭州市 杭州麦吉科信息技术有限公司   牟桂雄 18158119777 18158119777@189.cn
北京市 北京北测教育科技发展有限公司   杨振宏 15811252385 1557848882@qq.com
合肥市 合肥朋来传媒科技有限公司   王先生 13866790669 2290127469@qq.com
郑州市 河南哈努曼电子科技有限公司   董仲飞 13810619676 dongzhongfei@msn.com
济南市 济南普云信息科技有限公司   孙刚 15253189163 124959448@qq.com
南京市 南京北极星科技有限公司   刘星雨 13815441588 1061856192@qq.com
南京市 南京硕坤电子科技有限公司   邵平 13912950086 35922285@qq.com
北京市 北京物语智城科技有限公司   王菁 18612995658 wangjing_609@163.com
南昌市 南昌达讯科技   谭持续 18170070499 575704369@qq.com
福州市 福州超联信息技术有限公司   陈增超 18695729557 532305269@qq.com
苏州市 苏州扬天信息科技有限公司 0512-65133300 陈育才 15365388158 857336980@qq.com
西安市 西安诺冠信息技术有限公司 029-62593086 付战领 13389214518 xangiot@163.com


诚征全国代理    总机:400-8855-360

负责人
分 机
手机号
邮 箱
腾讯QQ
张  伟
8028
15805157345
点击这里给我发消息
杨  剑
8030
18751869256
点击这里给我发消息
阅读:7094次


版权所有 © 2011-2016 南京云创大数据科技股份有限公司(股票代码:835305), 保留一切权利。(苏ICP备11060547号-1)  
云创大数据-领先的云存储、大数据、云计算产品供应商