为什么国内流行hbase,国外反而多用cassandra?
Google trend上的数据
只有中韩在使用hbase,其他地区大多都在用cassandra,这是什么原因导致的?hbase和cassandra又分别适用于什么场景呢?
1、cassandra我认为还是更加数据库一些,hbase的流行主要是依赖hadoop生态的发展。
2、cassandra在大部分公司是DBA及运维同学 维护的,hbase在很多公司是大数据研发团队维护的,大数据研发团队一般有一些源码的能力。DBA及运维同学基本是把cassandra当做类似mysql来看待的。
3、cassandra有比较强的商业支持的,https://mp.weixin.qq.com/s/EnxBaTzDNMhCGvQWsAHS6Q hbase依赖于hadoop生态
4、国内hbase比cassandra火,个人认为 研发为主体 比 DBA及运维 为主体更加会宣传。另外跟 Datastax的商业化策略也有关系。
今年也负责了c*,去年也负责过hbase,也越来越明白各种缘由。
c*全球用的最大的是apple,有16w个实例之多。也不能说大公司用hbase多,中小用c*多。不过确实是 中小企业用c*比较容易上手。
国内 hbase流行,应该就是hadoop流行,带动了hbase。 全球是c*流行,目前在10,hbase比较可怜,跌出了20名。
有几个区别,可以说下,方便大家选型:
- c* 很多公司是 DBA或者运维负责 HBase是大数据研发团队负责
- 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等基础设施
对于个人选择,可以多对比下。
Cassandra和HBase对比
(1)Cassandra部署更简单。Cassandra只有一种角色,而HBase除了Region Server外还需要Zookeeper来同步集群状态
(2)数据一致性是否可配置。Cassandra的数据一致性是可配置的,可以更改为最终一致性,而HBase是强一致性的
(3)负载均衡算法不同。Cassandra通过一致性哈希来决定数据存储的位置,而HBase靠Master节点管理数据的分配,将过热的节点上的Region动态分配给负载较低的节点。因此Cassandra的平均性能会优于HBase,但是HBase有Master节点,热数据的负载更均衡。
(4)单点问题。正是由于HBase存在Master节点,因此会存在单点问题。