Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1398402
  • 博文数量: 277
  • 博客积分: 2551
  • 博客等级: 少校
  • 技术积分: 3918
  • 用 户 组: 普通用户
  • 注册时间: 2011-02-21 22:46
文章分类

全部博文(277)

文章存档

2017年(3)

2016年(9)

2015年(65)

2014年(27)

2013年(85)

2012年(61)

2011年(27)

分类: 大数据

2014-10-09 23:55:39

     hbase在三者中更注重的是存储,它实现了类似mysql的double write机制,但是它是一种NoSQL的数据库,并且是可以支持列式存储的,算是比较大的一个内存Hash表。hbase也采用了类似mysql中的mvcc的思想通过时间戳来做版本控制。
     hbase是在hdfs基础之上的,可以算是数据的一种组织方式,是一种基于hadoop的分布式数据库系统。从数据库的角度来说,与mysql处在同一个层次,都是基于文件系统之上的管理数据的一种方法。
     hbase作为面向列的数据库,支持按列读取和行读取,并解决了关系型数据库的分表的一些需求,如:关系型数据库中有些表的列重复数据太多了,需要重新建表来存重复列的数据,减少表的大小。
    
    hive和impala则更偏向于查询分析,impala需要依赖hive的元数据,它们都有自己的查询分析引擎,只是impala是纯查询分析引擎。
     hive 本身并不执行任务的分析过程,而是推给了mapreduce,这点与impala大不同,hive本身提供了数据的格式化输出功能,但是hive转换的mr可能不是最高效的,调优方式有限,很多复杂的算法没有办法表达,毕竟sql的语义表达能力有限。
     hive与impala在查询分析这部分,hive明显的支持程度要比impala高,提供了很多内部函数,并且支持UDAF,UDF的方式
     从数据库特性角度来看,hive与hbase的对比,hive不能修改数据,只能追加的方式,hbase允许增加和删除数据,hive不支持索引,impala和hive都是没有存储引擎的,hbase算是有自己的存储引擎。
    在使用层面上来看,hive在使用上更像数据库,它提供非常丰富的系统函数,各种数据的操作,hbase在这方面就不太像一般的关系型数据库,它还是一个key-val的NoSQL,这方面的操作支持很有限,impala在这方面也是比较弱。
    在计算模型层面上来看,hive是通过MR来计算的,这是一个偏向挪动数据到mr的计算节点来计算的模型,而impala则更多的是移动计算需求到DN上来做,数据不用动,最后变成了本地的磁盘IO。
    
阅读(9778) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~