HBase、Cassandra性能简要测评
引言
HBase和Cassandra是目前国内外分布式存储研究当中最为关注的两种列式存储的非关系型数据库,其中HBase倾向于CP,强调强一致性,而Cassandra倾向于AP,强调不存在单点故障的可用性。两种数据库的生态圈各有千秋,HBase基于Hadoop平台,并且使用了Zookeeper的一致性算法进行调度,能够很好的支持MapReduce计算;而Cassandra则具有可调节的一致性级别,运维上比较简单,支持线性拓展,但也存在例如大文件不适合存储的问题。本文通过HBase、Cassandra两种数据库的集群搭建过程和YCSB负载性能测试对其性能进行简要测评。
环境准备
创建三台虚拟机,各虚拟机系统版本为CentOS7,内存4GB,硬盘20GB。配置网络及主机名如下:
主机名 | IP地址 |
---|---|
hadoop0 | 192.168.84.128/24 |
hadoop1 | 192.168.84.129/24 |
hadoop2 | 192.168.84.130/24 |
各软件版本:hadoop3.3.0、Zookeeper3.4.14、HBase1.4.13、Cassandra3.11.10、jdk1.8、maven3.8.1、ycsb0.17
在三台主机上安装各软件并修改/etc/profile环境变量
#JAVA_HOME
export JAVA_HOME=/app/jdk
export PATH=$PATH:$JAVA_HOME/bin
#HADOOP_HOME
export HADOOP_HOME=/app/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
#zookeeper environment
export ZK_HOME=/app/zookeeper
export PATH=$PATH:$ZK_HOME/bin
#HBase
export HBASE_HOME=/app/hbase
export PATH=$PATH:$HBASE_HOME/bin
#MAVEN_HOME
export MAVEN_HOME=/app/maven
export PATH=$PATH:$MAVEN_HOME/bin
#CASSANDRA_HOME
export CASSANDRA_HOME=/app/cassandra
export PATH=$PATH:$CASSANDRA_HOME/bin
HBase集群搭建
Hadoop集群搭建
由于HBase基于Hadoop的HDFS文件系统,故首先需要搭建起Hadoop分布式集群环境。
集群各节点功能规划如下:
hadoop0 | haddop1 | hadoop2 | |
---|---|---|---|
HDFS | NameNode、DataNode | DataNode | SecondaryNameNode、DataNode |
YARN | NodeManager | ResourceManager、NodeManager | NodeManager |
其中NameNode为Hadoop文件系统管理者,有单点故障特性;SecondaryNameNode为NameNode的一个备用,能够在NameNode宕机时减少损失;ResourceManager管理各节点NodeManager。
Hadoop各配置文件如下:
core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:8020</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/app/hdfs/tmp</value>
</property>
<property>