这一个部分,我们将介绍这次测试中我们所使用的软件和硬件环境。这次的测试是在SequoiaDB的实验室中一个集群上进行的,所有的测试都在物理硬件上进行,没有使用任何虚拟化的层级。基本系统的搭建以及MongoDB和SequoiaDB的基本安装操作都是由训练有素的专业人员进行的。bankmark有着完全的访问集群和查看配置信息的权限。Cassandra则由bankmark来进行安装。
所有的数据库测试都在一个10节点的集群上进行(5台 Dell PowerEdge R520 服务器,5台Dell PowerEdge R720 服务器),另外还有5台HP ProLiant BL465c刀片机作为YCSB客户端。详细硬件信息如下:
集群以上述的硬件为物理系统,而其中则配置了不同的软件。所有的软件实用信息以及对应的软件版本信息如下:
三款数据库系统使用YCSB进行基准测试,分别是Apache Cassandra、MongoDB 以及 SequoiaDB。下来这一部分,分别介绍了这三者如何安装。集群上运行的数据库系统使用3组副本以及3组不同的磁盘。压缩性能的比较只在带有此功能的系统上进行。
下面的配置参数为三款数据库系统共同使用:
Apache Cassandra在所有服务器上都按照官方文档[4]进行安装,其配置也按照推荐的产品配置[5]进行。提交的日志和数据在不同的磁盘进行存储(disk1 存储提交的日志,disk5和disk6 存储数据)。
MongoDB由专业的工作人员安装。为了使用三个数据磁盘以及在集群上运行复制组,我们根据官方文档有关集群安装的介绍[6],使用了一套复杂的方案。3个集群点上都启动了配置服务器。在十台服务器上,每台一个mongos实例(用于分区操作)也同时启动。每一个分区都被加入集群当中。为了使用所有三个集群以及三个复制备份,10个复制组的分布按照下表进行配置(列 为集群节点):
Node1 |
Node2 |
Node3 |
Node4 |
Node5 |
Node6 |
Node7 |
Node8 |
Node9 |
Node10 |
|
Disk3 |
dg0 |
dg0 |
dg0 |
dg1 |
dg1 |
dg1 |
dg2 |
dg2 |
dg2 |
dg3 |
Disk4 |
dg3 |
dg3 |
dg4 |
dg4 |
dg4 |
dg5 |
dg5 |
dg5 |
dg6 |
dg6 |
Disk5 |
dg6 |
dg7 |
dg7 |
dg7 |
dg8 |
dg8 |
dg8 |
dg9 |
dg9 |
dg9 |
MongoDB没有提供自动启动已分区节点的机制,我们专门为了10个集群节点将手动启动的步骤写入了YCSB工具当中。
SequoiaDB由专业的工作人员按照官方文档进行安装[7]。安装设置按照了广泛文档中有关集群安装和配置[8]的部分进行。SequoiaDB可以用一个统一的集群管理器启动所有的实例,内置的脚本 “sdbcm”能用来启动所有服务。三个数据库系统的节点由catalog节点进行选择。三个SequoiaDB的实例在每个节点启动,访问自己的磁盘。
YCSB在使用中存在一些不足。它并不能很好的支持不同主机的多个YCSB实例运行的情况,也不能很好支持多核物理机上的连续运行和高OPS负载。 此外,YCSB也不是很方便温服。bankmark根据这些情况,对资源库中的YCSB 0,1,14版本 其做了扩展和一些修改优化。较大的改动如下:
如下的通用和专用参数为了基准测试而进行运行:
bankmark的YCSB工具,根据工作说明中的测试内容提供了负载文件:
workload1 |
warmup |
Single load |
Zipfian distribution |
100% read |
workload1 |
bulk load (1k records) |
Zipfian distribution |
100% read |
|
workload2 |
warmup |
Single load |
Zipfian distribution |
50% read, 50% update |
workload2 |
bulk load (1k records) |
Zipfian distribution |
50% read, 50% insert |
|
workload3 |
warmup |
Single load |
Zipfian distribution |
5% read, 95% update |
workload3 |
bulk load (1k records) |
Zipfian distribution |
5% read, 95% update |
|
workload4 |
warmup |
Single load |
Zipfian distribution |
95% read, 5% update |
workload4 |
bulk load (1k records) |
Zipfian distribution |
95% read, 5% update |
|
workload5 |
warmup |
Single load |
latest distribution |
95% read, 5% update |
workload6 |
bulk load (1k records) |
latest distribution |
95% read, 5% insert |
对于数据载入,workload[1-5]-warmup或者workload[1-5]文件都可以使用,需要根据具体的需求载入类型选择。5种负载中的每一个都会被分为一个针对最终结果的负载文件和一个在真正运行测试之前运行的预热文件。为了避免和YCSB的内部访问记录控制部分冲突,预热阶段将不会进行插入操作。通过一个线程扩展的测试,我们发现每个YCSB实例将会使用64个线程对于所有的3个系统都是表现最好的。
如下是测试中用到的其他的参数:
所有的系统都运行一次单条载入,一次预热还有一次正式测试。对于支持批量载入的系统,MongoDB和SequoiaDB,还有一项批量载入的测试要运行。
Database Options |
Cassandra |
MongoDB |
SequoiaDB |
Nodes |
10 instances (1 per node) |
10 “mongos” instances (1 per node) 30 “mongod” replica instances (3 per node) 3 configuration Servers (every 3rd node) |
10 SequoiaDB instances 30 Replica instances (3 per node) |
Disks |
Log :disk1 Data: disk5,disk6 |
Replicas: disk3,disk4,disk5 |
Replicas: disk3,disk4,disk5 |
Sharding/ Replication |
3replicas(on db creation) |
10 shards with 3 replicas each |
10 shards with 3 replicas each |
Compression |
Yes |
No(not support) |
Yes |
Consistency |
Read/write/scan/ delete:ONE |
Read preference: nearest, Write concern: Journaled |
Write concern: Journaled (not changeable) |
Bulk |
No |
Yes(1k records per batch) |
Yes(1k records per batch) |
在此测试中,原始数据大约为总系统RAM的45%。
Tilmann Rabl是多伦多大学(University of Toronto)的博士后以及bankmark公司的CEO。他的研究主要针对于大数据的基准测试以及大数据系统方面。Michael Frank是bankmark公司的CTO,他是工业标准的基准测试方案Parallel Data Generation Framework(PDGF)的核心开发成员之一。ManuelDanisch是bankmark公司的COO。他是BigBench大数据分析基准测试系统的主要开发者之一,此外他还是Transaction Processing Performance Council(TPC) 基准测试 TPC-DI的数据贡献者。
bankmark是一家独立的基准测评机构,公司为大数据提供了革命性的基准测试方案。受创新技术的推动,bankmark产生了许多优秀而有质量的测试,同时还对很多概念系统进行了验证并成功的将这些概念系统进行生产力模拟以及成本模拟。以前沿科学研究为基础的技术,保证了史无前例的质量和速度。
bankmark是工业基准测试标准化协会SPEC和TPC的独立成员之一,他们的技术基于TPC-DI和BigBench等基准测试标准。