Apache Phoenix vs Hbase Native API

时间:2015-02-06 07:45:29

标签: hbase phoenix

我正在使用Apache Phoenix来简化我在Hbase上的数据检索/更新操作。但我想从性能的角度来看哪一个会更好?使用Hbase Native API的Phoenix或Custom包装器?或者我们是否有其他方法不影响性能?

2 个答案:

答案 0 :(得分:3)

在完美世界中,Native api的工作速度会更快,但是你需要一直工作,因为为Hbase开发了一个好的API,它是一个独立的项目。大项目。

您需要对map-reduce和hbase内部流程有很好的理解。但菲尼克斯已经为你做了这一切。 例如 二级索引,用于在主表上创建和自动维护全局索引。 查询在更高效时自动使用索引,将全表扫描转换为点扫描范围。 可以按升序或降序排序多列。 索引中可以包括附加的主表列以形成覆盖索引。 有两种口味: 可变数据的服务器端索引维护。 客户端索引维护针对一次写入,仅附加用例进行了优化。

凤凰也为你做了跳过扫描map-reduce。 还有更多...看这里http://phoenix-hbase.blogspot.com/http://phoenix.apache.org/performance.html#

在凤凰城下工作的团队花了很多时间来优化所有这些操作,如果你想用本机api编写。你必须确保你能做得更好。

作为另一种解决方案,您可以使用Hive或SparkSQL。 但是Hive的性能较低,而Spark是独立的集群,也是一项困难的技术。

同样非常出色的技术是SparkOnHbase具有高性能http://blog.cloudera.com/blog/2014/12/new-in-cloudera-labs-sparkonhbase/ 这个更快,但更复杂。而且没有像index和Hbase本机功能这样的好功能。所以你需要写它。

答案 1 :(得分:0)

通过更好地理解Hbase的内部工作原理,凤凰城非常适合将类似SQL的查询转换为本机HBase调用。它将为您实现协处理器,为您维护索引,如果您计划通过Hbase API实现,将是一个繁琐的过程。因此,phoenix使Hbase查询的生命更容易。由于它是由salesforce创建的,因此您可以保证它。此外,它还有很好的社区支持。