利用虚拟化技术搭建数据中心成为一种发展趋势,大数据时代依托数据中心支持的许多应用,都对高并发读写、海量数据的高效存储与访问、高可用性和简单弹性的扩展能力需求强烈。面对这些不断涌现的新的挑战,传统的关系型数据库表现得越来越力不从心,业界的需求促使NoSQL数据库应运而生。已有的NoSQL数据库系统大多是开源软件,有上百种之多,这给用户在使用选择上带来很大困扰。通过性能测试,模拟实际业务的海量数据处理,评价NoSQL系统性能,从而帮助用户做出恰当选择是必要的.由于NoSQL发展时间较短,系统复杂性等原因,目前尚未有一个统一、公认的类似TPC的测试标准。 2010年Yahoo研究院针对NoSQL系统开发了开源测试框架YCSB (Yahoo cloud serving benchmark),其测试结果得到比较广泛的认同.本文利用YCSB对2个较典型的NoSQL数据库系统Hbase和Cassandra进行评测研究,分析它们在虚拟化环境中的性能差异,并给出其适用性建议.
1、相关工作
1.1虚拟化技术
目前,比较成熟的虚拟化产品和技术主要有VMware的vSphere和Workstation、citrix的XENserver/desktop、微软的Hyper-V , KVM(Kernel-based Virtual Machine),已有的在虚拟化环境下进行系统评测的研究中,采用开源虚拟化产品的较多.据CCW Research发布的研究报告显示,VMware虚拟化产品在2009年的中国市场占有率达到73.5%,居于绝对的领导地位,其产品技术的成熟度和商业支持受到广泛认同.
虚拟化技术从架构上分为原生架构和寄居架构2种,与之对应,VMware的产品有原生架构的ESX/ESXi和寄居架构的Workstation.原生架构的虚拟机系统直接管理硬件资源,Hypervisior层占用小,只专注于上层VM操作系统与硬件资源之间的协调管理,资源开销更少、稳定性更高,更适合实际生产环境下的企业级应用,所以本文最终确定采用VMware vSphere 5与ESXi。
1.2 NoSQL数据库
NoSQL是非关系型数据存储的广义定义,目前最常见的解释是“Not Only SQL",其理论依据是分布式数据库的CAP理论,即在一个分布式系统中不能同时满足一致性、可用性或分区容忍性这3种属性。这使得数据库设计者可以放弃或者弱化一致性或可用性,来构建NoSQL数据库.NoSQL数据库一般分为4类:1)Key/Value存储包括Dynamo , Redis , Tokyo Cabine等;2)面向列存储包括BigTable , HBase , Cassandra等;3)面向文档存储包括MongoDB , CouchDB , SimpleDB等;4)面向图存储包括Neo4J、InfiniteGraph、DEX等,HBase和Cassandra是目前比较流行的2个NoSQL数据库产品,发展相对较为成熟。
HBase是Google BigTable的开源实现,旨在提供高可靠性、高性能、面向列、可伸缩、实时读写的分布式存储系统。HBase将数据持久化存储在HDFS分布式文件系统上,采用主从架构,一个主节点HMaster和若干个从节点HRegionServer,由ZooKeeper承担分布式系统的协调工作,客户端读写数据时,先连接ZooKeeper,获得要写入或者读取的Region的位置,再直接和Region所在的服务器节点进行交互。
Cassandra结合Dynamo与BigTable技术,采用基于列的数据存储模式,提供灵活、高性能、稳定的分布式网络数据存储服务。Cassandra采用无中心架构,基于P2P协议,每个节点都是对等的,任何节点由于故障造成的失效,不影响整个集群的服务,Cassandra使用gossip机制维护节点列表.客户端读写数据时,向集群中随机的一个节点请求,系统根据副本放置策略,自动分配读或者写操作到具体的一些节点中.
现实应用中,Facebook , Twitter、淘宝、百度等多家公司已经采用HBase和Cassandra这两款产品以支持自己的大数据分析.
1.3测试基准
当前NoSQL发展十分迅速.YCSB可以对不同NoSQL系统进行统一的基准测试,帮助开发人员选择更合适的数据库系统.目前YCSB测试结果得到较多认同,HBase官方文档中也将其推荐为性能测试的基准。
YCSB开放了2个基准层的测试,基于吞吐量和操作时延的性能测试,以及系统扩展性的测试.性能测试时YCSB客户端通过预先定义工作负载,配置不同的读写任务场景.首先客户端产生记录数据加载到系统中,再根据定义好的负载量作出操作请求,并统计任务过程中的相关数据,最终返回给用户以便分析使用.扩展性测试可以反映系统增加节点时性能表现的变化情况。YCSB的可扩展性优势体现在可以根据实际需求自定义工作负载,从而得到更符合应用场景的测试结果;还可以通过改写源代码实现更复杂的测试操作,探索NoSQL系统的高级性能.本文选择YCSB作为本次评测工作的客户端.
2、测评方法与方案设计
2.1测评方法
采用YCSB框架,根据设计的不同测试方案,客户端在非数据节点上提交任务,对待测数据库系统执行一系列事务,测量其平均吞吐量和响应延时,即对NoSQL数据库系统并发提交简单事务请求,通过返回的响应时间和吞吐量数据,来评价系统性能.
YCSB的测试过程分为2个阶段:①数据加载阶段,客户端产生记录并加载到NoSQL数据库系统中.YCSB生成的记录默认有10个字段,每个字段都是100 B的ASCII字符串,所以1条记录大小为1 KB .②执行事务阶段,根据定义好的负载结构,进行不同的处理请求,包含read ,insert , update , scan 4种操作,操作执行结束后,将统计的结果返回给用户.YCSB自带默认6组负载结构(如表1所示),分别定义了不同操作的比例分配,以模拟不同读写环境的应用场景.HBase和Cassandra都是对写优化的数据库,一些应用场景特别关注数据库写性能,因此本文再自定义一种模拟大量写场景的负载结构worklOAdg:insert/read (0.95/0.05).
2.2测试方案设计
1)方案1.测试不同负载结构下NoSQL系统性能.选取典型的workloads, workloadb ,workloadf以及自定义的workloadg进行测试,workloads模拟更新负载大的应用场景,workloadb模拟大量并发读的场景,workloadf模拟复杂写操作任务重的场景,workloadg则模拟写负载重的任务场景.设置:ecordcount=100 000,threads=10,每组试验重复5次,记录每次测试的吞吐量,取平均值。
2)方案2.测试不同数据负载量下NoSQL系统性能.选择在2种不同的负载结构workloads(大量更新)、workloadg(以写为主)下,通过设置recordcount为100 000 , 500 000 ,1 000 000,即数据量分别为100 MB , 500 MB , 1 GB,记录相应的平均吞吐量。
3)方案3.考察不同大小虚拟集群下,2个系统的性能表现.选择workloadg的负载结构,将每台虚拟机内存调整为1G,定义负载量recordcount=1000000,分别测试NoSQL数据库在3,4,5,6虚拟机节点的集群下的系统性能表现,记录吞吐量与响应时延.
3、实验与分析
3.1测试环境
由4台虚拟机构成的集群环境主要搭建在1台服务器上,服务器的硬件条件为4核Xeon处理器,主频2.13 GHz,内存8 GB , 500 GBx2硬盘无RAID,千兆网卡,软件环境是ESXiS.集群节点的虚拟机配置:①硬件环境为双核vCPU , 2 GB内存、80 GB磁盘;②操作系统为CentOS6.2(l}ernel2.6.32);③软件环境为Hadoop1.1.2,HBase0.92,Cassandra 1.0.6和YCSB0.1.4.HBase和Cassandra均使用3个数据节点(HBase另有1个不存储数据的主节点NameNode) .
3.2测试结果与分析
方案1和方案2的测试结果如图1和图2所示,方案3的测试结果如图3和图4所示.
测试方案1的结果表明,当系统节点为3个且数据负载较小时,不同读写场景下HBase的性能优于Cassandra,尤其是写入性能。
测试方案2结果表明,Cassandra读写能力均衡,稳定性更好,当负载量加大时,HBase性能下降明显,而Cassandra最大吞吐量一直保持在一个平均水平.从图2可以看到,当数据量达到一定程度时(超过500 000),在workloads下HBase吞吐量急剧下降,只有Cassandra的1/4左右,观察测试过程控制台信息发现,Hbase在执行update操作时,当积累一定数量(约50000多操作)后,会有30 s左右的时间无操作响应,因此影响了Hbase的平均吞吐量.
测试方案3的结果验证了前面得出的结论,HBase具有更好的写入性能,当节点逐渐增加到6个时,Hbase拥有更大的吞吐量以及更低的写入时延.随着节点的增加,Cassandra的性能变化不明显,但是Hbase则有了较大的提升,从3个节点增加到6个节点时,吞吐量增加了1倍,读时延降低了2/3 .
以上研究表明,虚拟化环境中,HBase与Cassandra都具有简单灵活的横向扩展能力,特别是Cassandra,直接在添加的节点上启动进程,系统自动完成节点增加的工作.但两者在不同读写结构、数据负载以及集群规模下的性能是存在差异的.HBase具有更高的写入吞吐量及更低的延时,更适合高并发写的应用场景;Cassandra写入性能稍弱,但读能力更好也更稳定,适合读写稳定性要求高的场景.
4、结论
本文测试结果与文献结果趋势比较一致,但虚拟化环境下的NoSQL数据库的性能有一定程度下降,尤其是读性能,而且方案2中测试HBase时出现update操作短暂无响应现象,初步分析原因可能在2个方面:10 HBase自身存储机制问题,②除了物理机器本身的性能差距外,HBase与Cassandra对内存和磁盘I/O速度比较敏感,而实验室单台服务器虚拟化后会产生大量磁盘数据交换,可能造成NoSQL系统的性能损失.由于条件限制,单台服务器下虚拟化集群性能有限,虚拟化技术对NoSQL性能的影响程度和因素有待进一步论证。
核心关注:拓步ERP系统平台是覆盖了众多的业务领域、行业应用,蕴涵了丰富的ERP管理思想,集成了ERP软件业务管理理念,功能涉及供应链、成本、制造、CRM、HR等众多业务领域的管理,全面涵盖了企业关注ERP管理系统的核心领域,是众多中小企业信息化建设首选的ERP管理软件信赖品牌。
转载请注明出处:拓步ERP资讯网http://www.toberp.com/
本文标题:虚拟化环境下的NoSQL数据库评测