我有兴趣了解最近发布的(http://mirror.facebook.com/facebook/hive/hadoop-0.17/)Hive在性能方面与HBase的比较.Hive使用的类似SQL的接口比我们实现的HBase API要好得多.
很难找到关于Hive的内容,但是我发现Hive网站上的这个片段大量倾向于支持HBase(粗体添加):
Hive基于Hadoop,这是一个批处理系统.因此,该系统不会也不能承诺对查询的低延迟.这里的范例严格来说是提交工作并在完成工作时通知,而不是实时查询.因此,不应将其与像Oracle这样的系统进行比较,在这些系统中,对数据量显着减少的数据进行分析,但分析的迭代次数要多得多,迭代之间的响应时间少于几分钟.对于Hive查询,即使是最小的作业,响应时间也可能是5-10分钟,而对于较大的作业,这甚至可能会持续数小时.
由于HBase和HyperTable都是关于性能的(以Google的BigTable为模型),它们听起来肯定比Hive快得多,代价是功能和更高的学习曲线(例如,它们没有连接或SQL - 类似语法).
从一个角度来看,Hive由五个主要组件组成:类似SQL的语法和解析器,查询计划器,查询执行引擎,元数据存储库和列式存储布局.其主要关注点是数据仓库式分析工作负载,因此不需要按密钥检索值的低延迟.
HBase有自己的元数据存储库和列式存储布局.可以通过HBase表创建HiveQL查询,允许HBase利用Hive的语法和解析器,查询计划器和查询执行引擎.有关更多详细信息,请参阅http://wiki.apache.org/hadoop/Hive/HBaseIntegration.
Hive是一种分析工具.就像猪一样,它设计用于通过利用map reduce来临时批量处理潜在的大量数据.想想terrabytes.想象一下,试图在关系数据库中做到这一点......
HBase是基于BigTable的基于列的键值存储.虽然您可以通过HBase运行map reduce作业,但您本身无法进行查询.它的主要用例是按键获取行或扫描行的范围.一个主要特征是,当扫描跨越"族"列的行键范围时,能够具有数据局部性.
据我所知,Hive与Pig相当.Hive与SQL类似,Pig是基于脚本的.Hive似乎更复杂的是查询优化和执行引擎,并且需要最终用户需要指定模式参数(分区等).两者都打算处理文本文件或sequenceFiles.
HBase用于键值数据存储和检索...您可以扫描或过滤这些键值对(行).您无法对(键,值)行执行查询.