phoenix-4.8.0整合hbase-1.2.0-cdh5.8.0

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,然后进行编译:

mvn clean package –DskipTests -Dcdh.flume.version=1.6.0-cdh5.8.0

如果网络好应该可以很顺利就编译成功。

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 高级配置代码段(安全阀)

<property>
    <name>hbase.regionserver.wal.codec</name>
    <value>org.apache.hadoop.hbase.regionserver.wal.IndexedWALEditCodec</value>
</property>
<property>
    <name>hbase.region.server.rpc.scheduler.factory.class</name>
    <value>org.apache.hadoop.hbase.ipc.PhoenixRpcSchedulerFactory</value>
    <description>Factory to create the Phoenix RPC Scheduler that uses separate queues for index and metadata updates</description>
</property>
<property>
    <name>hbase.rpc.controllerfactory.class</name>
    <value>org.apache.hadoop.hbase.ipc.controller.ServerRpcControllerFactory</value>
    <description>Factory to create the Phoenix RPC Scheduler that uses separate queues for index and metadata updates</description>
</property>

与4.6的配置不一样,这里只需要配置regionserver的hbase-site.xml即可,配置内容如上,然后重启hbase使得配置生效。

6. 测试使用

1.创建一个测试表

CREATE TABLE USER (ID BIGINT NOT NULL PRIMARY KEY, NAME VARCHAR  NULL,AGE INTEGER  NULL, ADDRESS VARCHAR NULL) ;

2.创建一个本地索引

CREATE LOCAL INDEX USER_IDX ON USER(NAME);

3.插入一条记录

UPSERT INTO USER(ID,NAME,AGE,ADDRESS) VALUES(1,'name1',11,'china');

3.查看结果

这里写图片描述

这里写图片描述

猜你喜欢

转载自blog.csdn.net/czmacd/article/details/53958261
今日推荐