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