ITPub博客

首页 > 大数据 > > 问答-cassandra与hbase的利弊分析?适用场景?社区环境?

问答-cassandra与hbase的利弊分析?适用场景?社区环境?

作者:浪花小雨滴 时间:2020-05-09 10:41:57 0 删除 编辑
作者:阿莱克西斯
链接:https://www.zhihu.com/question/20152327/answer/95843437
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

两个都用过,学过,虽然是NoSQL,但是它们从本质上完全不同(想了解各种不同的NoSQL,推荐看老Martin的NoSQL Distilled这本书)。这里只点出最重要的不同:数据的集中和分散

HBase基于Big Table,和Hadoop MapReduce完美integrate,有一个master node储存metadata,同时保证write总是发给shard的leader所以可以保证写的顺序和强一致性。数据组织以支持scan为最优先(rowkey 按大小排序分region,所以相近的rowkey必然在相同的region server上),甚至每一个get操作的内部实现都是scan。所以你的应用场景需要大量scan操作 或者需要经常配合MapReduce,而random access数据为辅助手段,那么HBase是你的绝佳选择。

Cassandra基于我司的Dynamo,强调CAP中的A(availability),和尽量满足的C(consistency),理论上很美好可以用read replica + write replica> total replica 在leaderless cluster里实现强consistency(根据dynamo论文),然而实际操作中在一些edge case里无法保证。强调读写的分散(由于数据都用Distibute Key散列到了不同host,所以相近的Distibute key很大几率散列到不同的host上,这里取决于你的hash算法,这里只说大多数情况)。这种storage model(consistent hash)决定了Cassandra的scan效率比HBase低,但是可以支持更高的并发写与读,并且高并发写和读可以在不同的配置的情况下在一个表上同时实现(由于读写的replica number是可以基于per request 定义的)如果你需要高并发可调节读写,scan需求少,那么Cassandra则比HBase更合适。

其他的不同就是各种feature了,比如cassandra支持用户自定义multi version control,multi version conflict resolve,算是一个亮点,而HBase貌似只支持multi version… cassandra的server是peer to peer的,完全不会有single point failure;而HBase则依赖于Master Server的协调… 等等

综上所述,两种NoSQL DB cover了两种完全不同的data access pattern,他们俩 完全 不雷同。

至于国内注重HBase?个人猜测嘛,还不是为了跟风hadoop催的… 为人必提大数据,提大数据必提hadoop,hadoop怎么存数据?HFile?那怎么random access? 然后...恩....
Canssandra提供了太多可调节的地方了,调不好可以比MySQL还慢…

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31537575/viewspace-3168588/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2018-05-16

  • 博文量
    4259
  • 访问量
    39812