分布式列存储框架,在生产生活中会接触到很多信息数据,而大部分信息是由非结构化数据组成的,特别是在大数据处理过程中尤为明显。这些数据都无法用关系型数据库的思维方式建模,因此在大数据的处理过程中,就出现了很多非结构化数据处理需求。
为了存储便利,易于理解,在完整的大数据体系中采用了很多NoSQL(Not OnlySQL的缩写)数据库。基于NoSQL理念设计的最著名的系统是Google的BigTable和滑铁卢大学开发的HBase。Facebook将Google BigTable和Amazon Dynamo的完全分布式架构集于一身,开发了Cassandra,后于2010年正式成为了Apache基金会项目。
Cassandra和HBase的出现不但使NoSQL的处理速度得到了前所未有的提升,而且它们能够组成集群化也为Hadoop、Spark等需要大容量数据快速写入的业务场景提供了非常有用的工具。著名的甲骨文公司Oracle也有自己的NoSQL产品,叫做NoSQL Database。
1.Cassandra简介
Cassandra的名字来源于希腊神话的一位女先知,因此该项目的Logo是一只明亮的眼睛。最突出的特点是它的可扩展性,给集群添加新节点时,可以直接指向新的主机,不必重启任何进程和改变任何查询,是非常便利的自动热扩展机制。这是一个非常好的特性。
此外,Cassandra还有一个优良的特性,即支持SQL语言。这也让广大的SQL爱好者觉得非常亲切,大大降低了学习的门槛。
2.HBase简介
HBase采用Java语言开发,和Cassandra一样,同样借鉴了Google的BigTable模型,主要为Hadoop生态圈提供了列存储服务。
HBase使用HFile对文件进行列式存储,HFile存储以列族为单位。在读取时如果只需用行键作为索引要扫描一个列族的内容,那么其他不相干的列族即便存在和索引条件对应的逻辑关系也不会被扫描到,这种方式在一定程度上避免了IO拥塞,也更加适合这种小尺寸的OLTP操作。
但是和Cassandra一样,HBase也不支持事务操作。
3.Cassandra和HBase对比
(1)Cassandra部署更简单。Cassandra只有一种角色,而HBase除了RegionServer外还需要ZooKeeper来同步集群状态。
(2)数据一致性是否可配置。Cassandra的数据一致性是可以配置的,可以更改为最终一致性,而HBase是强一致性的。
(3)负载均衡算法不同。Cassandra通过一致性哈希来决定数据存储的位置,而HBase靠Master节点管理数据的分配,将过热的节点上的Region动态分配给负载较低的节点。因此Cassandra的平均性能会优于HBase,但是Hbase有Master节点,热数据的负载更均衡。
(4)单点问题。正是由于Hbase存在Master节点,因此会存在单点问题。