Cassandra(主要由DataStax开发的,诞生于Facebook)
Cassandra赢得人心是因为易于管理的规模
对比
- c*的功能确实比hbase多一些,比如有CQL、类型等。hbase要借助Phoenix。
- 性能上,理论上c好一些。c没有hdfs层,直接对上磁盘。
- 另外SDK,c*基本支持所有的。hbase通过thrift支持多语言客户端。这快对于使用非JAVA差异还是挺大的
- 分布式协议那就差异更大 ,c*是masterless架构,hbase是masterslave且与hdfs分离的架构。
- c*是内存与磁盘多副本架构,hbase是内存单副本,磁盘用hdfs多副本架构。这个体现在可用上
- c*支持可调一致性,hbase支持强一致性,hbase内存一个副本,也没有可调的。
- hbase的优势在于如果有 大数据研发团队,可以共享hdfs等基础设施
- hbase具有强一致性,而cassandra的一致性却是可配置的
如果你的使用场景是写多读少,且数据很少删除或设置ttl等操作,Cassandra则非常适合。Cassandra 号称读写性能强劲,线性扩容增长,运维简单,可用率100%。但是要用好,还是有非常多需要注意的地方,从硬件选型,网络规划,系统优化,日常运维都需要非常注意。
Cassandra和HBase对比
一个是BigTable的孩子,一个是BigTable和dynamo的私生子
- Cassandra部署更简单。Cassandra只有一种角色,而HBase除了Region Server外还需要Zookeeper来同步集群状态
- 数据一致性是否可配置。Cassandra的数据一致性是可配置的,可以更改为最终一致性,而HBase是强一致性的
- 负载均衡算法不同。Cassandra通过一致性哈希来决定数据存储的位置,而HBase靠Master节点管理数据的分配,将过热的节点上的Region动态分配给负载较低的节点。因此Cassandra的平均性能会优于HBase,但是HBase有Master节点,热数据的负载更均衡。
- 单点问题。正是由于HBase存在Master节点,因此会存在单点问题。
- Cassandra的scan效率比HBase低,但是可以支持更高的并发写与读,并且高并发写和读可以在不同的配置的情况下在一个表上同时实现
- 如果你需要高并发可调节读写,scan需求少,那么Cassandra则比HBase更合适。