1. 前言
phoenix-4.8.0版本已经出了挺长一段时间了,之前一直有用开4.6版本,不过4.6版本的本地索引还不成熟,而且也存在着一些bug,在网上找到一些对旧版本的本地索引的描述
APPROACH 1 is a good start for local indexes, but I think we are not getting the full benefits for the feature. We can support this for the short term, and decide on the next steps for a longer term implementation.
The local indexing feature is a technical preview and considered under development. Do not use this feature in your production systems.
建议如果使用本地索引,最好使用phoenix4.8以后的版本。由于我们使用的是cloudera公司的cdh,而原生的phoenix与cdh是不兼容的。庆幸的是,已经有大神修改了相关的API把两者整合了,并把源码放到了github上面,所以只需要把源码下载下来自己编译即可。
2. 尝试兼容cdh更早版本
原本打算看看phoenix-4.8.0能不能兼容cdh5.8.0之前的版本,例如5.4.x,最终通过编译并对比两者的API发现还是不可靠的。
phoenix官方发行的phoenix-4.8.0版本的包是可以兼容hbase0.98至hbase1.2版本的,而cdh5.4.x对应hbase1.0-cdh5.4.x,理论上应该可以兼容才对,但hbase1.0与hbase1.0-cdh5.4.x两版本的api差异还是比较大,看来cloudera公司还是做了挺多修改的。把编译的错误对比了一下cdh5.4-5.7,这几个版本的Hbase比较相近,应该都是无法(或者说很困难)兼容phoenix-4.8.0,这可能也是为什么github上面那个项目只有phoenix4.8.0-cdh5.8.0的原因了吧。附一张尝试整合phoenix4.8.0-cdh5.4.x版本的编译错误信息图:
API相差太多,放弃整合。
3. 下载源码并编译
下载地址:https://github.com/chiastic-security/phoenix-for-cloudera
下载后,可以简单看一下pom.xml文件,里面maven仓库已经改成了cloudera的以及相关的版本也改成了cdh,然后进行编译:
- 1
- 1
如果网络好应该可以很顺利就编译成功。
4. 配置hbase支持phoenix
编译完成后,在phoenix-assembly\target目录下找到phoenix-4.8.0-cdh5.8.0.tar.gz:
把phoenix-4.8.0-cdh5.8.0.tar.gz上传到服务器上并解压:
把phoenix-4.8.0-cdh5.8.0-server.jar拷贝到每个regionserver的hbase/lib目录下
Package安装方式:/usr/lib/hbase/lib/
Parcel安装方式:/opt/cloudera/parcels/CDH/lib/hbase/lib
5. 配置支持二级索引
到cloudera-manager管理页面配置hbase-site.xml 的 RegionServer 高级配置代码段(安全阀)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
与4.6的配置不一样,这里只需要配置regionserver的hbase-site.xml即可,配置内容如上,然后重启hbase使得配置生效。
6. 测试使用
1.创建一个测试表
- 1
- 1
2.创建一个本地索引
- 1
- 1
3.插入一条记录
- 1
- 1
3.查看结果