409.HBase vs Cassandra

HBase Cassandra
语言 Java Java
出发点 BigTable BigTable and Dynamo
License Apache Apache
Protocol HTTP/REST (also Thrift) Custom, binary (Thrift)
数据分布 表划分为多个 region 存在不同 region server 上 改进的一致性哈希(虚拟节点)
存储目标 大文件 小文件
一致性 强一致性 最终一致性,Quorum NRW 策略
架构 master/slave p2p
高可用性 NameNode 是 HDFS 的单点故障点 P2P 和去中心化设计,不会出现单点故障
伸缩性 Region Server 扩容,通过将自身发布到Master,Master 均匀分布 Region 扩容需在 Hash Ring 上多个节点间调整数据分布
读写性能 数据读写定位可能要通过最多 6 次的网络 RPC,性能较低。 数据读写定位非常快
数据冲突处理 乐观并发控制(optimistic concurrency control) 向量时钟
临时故障处理 Region Server 宕机,重做 HLog 数据回传机制:某节点宕机,hash 到该节点的新数据自动路由到下一节点做 hinted handoff,源节点恢复后,推送回源节点。
永久故障恢复 Region Server 恢复,master 重新给其分配region Merkle 哈希树,通过 Gossip 协议同步 Merkle Tree,维护集群节点间的数据一致性
成员通信及错误检测 Zookeeper 基于 Gossip
CAP 1,强一致性,0 数据丢失。2,可用性低。3,扩容方便。 1,弱一致性,数据可能丢失。2,可用性高。3,扩容方便