HBase(dfs三副本,syncwal)

Cassandra(N=3,W=2,R=2, batch commitlog)

CAP

CP

CA

数据存储模型

LSM

LSM

数据写入网络开销

Rpc 没有压缩,1份原始数据,占用大约3倍流量

Rpc 有压缩,1份原始数据,占用大概([三份数据写入流量,一份coordinator流量]4*0.2)倍网络流量(1:5压缩比,三份)

内存使用效率
  1. 一份数据对应一份memstore开销
  2. 一份数据对应一份cache开销
  1. 一份数据对应三份memtable开销
  2. 一份数据对应三份cache开销

sql支持

None,有第三方phoenix实现,操作不透明,业务场景简单的场景下推荐使用原生客户端

CQL,primarykey机制稍复杂,支持二级索引,但是性能不高,官方不推荐使用

数据模型

稀疏表

cql,有限兼容sql

Compaction开销

1. 计算量1倍,网络3倍压缩数据量

2. flush文件偏小,一般需要多做一层compaction,最大会有几G级别的hfile文件

  1. 计算量三倍,不需要网络开销
  2. flush下来的文件可以较hbase大一个数量级,但是每台机器分摊的数据比较多,最大会有百G级别的sstable文件

水平扩展开销

1. 一次性加入机器,水平扩展完成,需要一定的时间通过compaciton做数据本地化,写性能可以做到瞬间扩展

1. 一台一台加入,数据需要通过Streaming模块从原节点流向新节点,加入比较缓慢

可用性【短时间单机宕机场景】

1. 需要几分钟级别的故障恢复时间,故障恢复期间,宕机服务器上原来提供服务的region暂时不可用

1. 单机宕机,不影响读写,写操作会通过hinted handoff写入其他节点,恢复后再写回;读操作从其他节点获取

数据一致性

1. 保证一致

  1. 为了实现一致性,r + w > n.  对读写操作有一定放大。
  2. 不满足r+w > n的场景下会有数据不一致的情况发生;数据不一致产生的原因很多样,修复方式也多样,主要有以下三种:
  3. 反熵修复 (耗时,永久宕机修复)
  4. Hinted handoff (临时宕机修复)
  5. Read repair (读修复)

跨机房复制

1. 类似binlog的异步复制

1. 设置多DC,可以通过写入策略调整是多机房同步写入还是类异步写入

写入性能(同步wal模式)

1. 忽略内存操作,写三个dn节点的pipeline,并行写入

(r=2, w=2, n=3)

1. 忽略内存操作,并行写2节点成功即可

读性能(冷数据)

1. 一个节点磁盘io操作

2. 磁盘io数目一般10个以内

(r=2, w=2, n=3)

  1. 并行读两节点成功
  2. 每个节点操作需要磁盘io数目一般大于10, cassandra单表单节点sstables数目一般多于10个
  3. 如果发现不一致,还要异步执行写修复

运维成本

  1. 初始搭建成本高
  2. 后期运维操作方便
  1. 初始搭建成本低
  2. 后期运维操作繁琐
TTL
  1. 支持ttl自动过期,columnfamily级别
  1. 支持默认ttl,也支持写入的时候指定数据的ttl
多版本
  1. 支持多版本,columnfamily级别
  1. 不支持
前缀扫描
  1. 支持任意rowkey位置的scan
  1. 支持相同partition key下的clusterkey顺序的scan
 

Cassandra VS HBase的更多相关文章

  1. 能够满足这样要求的哈希算法有很多,其中比较著名并且应用广泛的一个哈希算法,那就是MurmurHash 算法。尽管这个哈希算法在 2008 年才被发明出来,但现在它已经广泛应用到 Redis、MemCache、Cassandra、HBase、Lucene 等众多著名的软件中。

    能够满足这样要求的哈希算法有很多,其中比较著名并且应用广泛的一个哈希算法,那就是MurmurHash 算法.尽管这个哈希算法在 2008 年才被发明出来,但现在它已经广泛应用到 Redis.MemCa ...

  2. NoSQL四种——kv存储(memcache,Riak),列存储(Cassandra,Hbase),文档类(mongoDB,CouchDB),图数据库(neo4j)

    见:https://software.intel.com/sites/default/files/Configuration_and_Deployment_Guide_for_Cassandra_on ...

  3. [转载] HBase vs Cassandra:我们迁移系统的原因

    转载自http://www.csdn.net/article/2010-11-29/282698 我的团队近来正在忙于一个全新的产品——即将发布的网络游戏www.FightMyMonster.com. ...

  4. NoSQL: Cassandra, HBase, RocksDB

    转自: http://www.linkedin.com/pulse/nosql-cassandra-hbase-rocksdb-siddharth-anand I've had the pleasur ...

  5. [转载] Cassandra入门 框架模型 总结

    转载自http://asyty.iteye.com/blog/1202072 一.Cassandra框架二.Cassandra数据模型 Colum / Colum Family, SuperColum ...

  6. Hbase和Oracle的对比

    转自:http://www.cnblogs.com/chay1227/archive/2013/03/17/2964020.html 转自:http://blog.csdn.net/allen879/ ...

  7. spark + cassandra +postgres +codis 大数据方案

    1.环境: 1.1.cassandra 集群: 用于日志数据存储 1.2.spark集群: 用户后期的实时计算及批处理 1.3.codis 集群: 用于缓存一些基本数据如IP归属地,IP经纬度等,当日 ...

  8. hbase学习(一)hbase简介

    1.hadoop生态系统 2.hbase简介 非关系型数据库知识面扩展 cassandra.hbase.mongodb.redis couchdb,文件存储数据库 Neo4j非关系型图数据库 3.hb ...

  9. cassandra框架模型之二——存储机制 CommitLog MemTable SSTable

    四.副本存储 Cassandra不像HBase是基于HDFS的分布式存储,它的数据是存在每个节点的本地文件系统中. Cassandra有三种副本配置策略: 1) SimpleStrategy (Rac ...

随机推荐

  1. response (响应对象)

    一.response响应过程 在去发送一个请求时, 会找到tomcat引擎 引擎会找到对应的web应用,并且会创建request对象和response对象 找到应用后, 会执行应用的web.xml再去 ...

  2. 【构造】【分类讨论】Codeforces Round #435 (Div. 2) C. Mahmoud and Ehab and the xor

    题意:给你n,x,均不超过10^5,让你构造一个无重复元素的n个元素的非负整数集合(每个元素不超过10^6),使得它们的Xor和恰好为x. 如果x不为0: 随便在x里面找一个非零位,然后固定该位为0, ...

  3. 【预处理】【分类讨论】Playrix Codescapes Cup (Codeforces Round #413, rated, Div. 1 + Div. 2) C. Fountains

    分几种情况讨论: (1)仅用C或D买两个 ①买两个代价相同的(实际不同)(排个序) ②买两个代价不同的(因为买两个代价相同的情况已经考虑过了,所以此时对于同一个代价,只需要保存美丽度最高的喷泉即可)( ...

  4. 原生js实现Ajax请求

    总的来说,Ajax是与服务器交换数据并更新部分网页的艺术,在不重新加载整个网页的情况下,异步请求数据并刷新页面.举一个小的例子:Goole搜索页面.当用户在输入框输入关键字的时候,JavaScript ...

  5. 谷歌地图聚合点使用(GoogleMaps MarkerCluster)

    我们有时候需要观察地图 不同地方数据的所在范围和分布密集情况,热力图和聚合点的使用无疑是最好的选择. 1.首先说说百度地图,只做国内的地图可以使用百度地图的海量点和热力图还是蛮好用的. a.海量点的最 ...

  6. 把网页转换成图片或者pdf--wkhtmltopdf

    一.下载并安装wkhtmltopdf https://wkhtmltopdf.org/downloads.html 按照需要自己下载安装就可以了: 二.使用步骤--启动和生成图片或pdf 1.下载wk ...

  7. Eclipse使用maven创建struct2项目及遇到的各种坑

    参考创建教程:http://www.jb51.net/article/45138.htm   坑一: Eclipse创建maven项目报错:Could not resolve archetype or ...

  8. [Linux] Linux软连接和硬链接

    转载自:http://www.cnblogs.com/itech/archive/2009/04/10/1433052.html 1.Linux链接概念Linux链接分两种,一种被称为硬链接(Hard ...

  9. Ping Pod不通问题定位及Ingress验证

    Ping Pod网络问题不通定位记录 1.验证墙是否通 flannel默认使用8285端口作为UDP封装报文的端口,VxLan使用8472端口,下面命令验证一下确定其在8472端口 ip -d lin ...

  10. SQLAlchemy使用笔记--SQLAlchemy ORM(二)

    參考: http://docs.sqlalchemy.org/en/rel_1_0/orm/tutorial.html#building-a-relationship http://docs.sqla ...