@xtccc
2015-11-02T09:37:44.000000Z
字数 1668
阅读 4714
Phoenix
在 升级CDH(Using Local Repo)中,我将CDH升级到了5.4.7,其中HBase从0.98.6升级到了1.0.0。在升级前,Phoenix的版本是 4.3.1。升级后,我将Phoenix换成了4.6.0-hbase-1.0,但是当我执行sqlline.py <zk>
时,出现问题:
原因是我们需要针对CDH 4.5.7 重新编译Phoenix,参考 这里 。
编译时,我们指定使用CDH 5.4.7的JARs,Repository的设定参考 Using the CDH 5 Maven Repository。
并且,源码中还有两处要做修改,否则会编译失败,参考 Using Phoenix with Cloudera Hbase (installed from repo)。
具体而言,对pom.xml文件做如下改动:
</repositories>
<repository>
<id>cloudera</id>
<url>https://repository.cloudera.com/artifactory/cloudera-repos/</url>
</repository>
</repositories>
<properties>
<hbase.version>1.0.0-cdh5.4.7</hbase.version>
<hadoop-two.version>2.6.0-cdh5.4.7</hadoop-two.version>
<hadoop.version>2.6.0-cdh5.4.7</hadoop.version>
<pig.version>0.12.0</pig.version>
<flume.version>1.5.0-cdh5.4.7</flume.version>
</properties>
文件 phoenix-core/src/main/java/org/apache/hadoop/hbase/regionserver/LocalIndexMerger.java
第84行:为方法 prepareMutationsForMerge 在最后加上一个参数 1
文件 phoenix-core/src/main/java/org/apache/hadoop/hbase/regionserver/IndexSplitTransaction.java
第291行:为方法 splitRegion 在最后加上一个参数 1
现在,通过mvn clean install -DskipTests
可以编译成功!
下载官方的 phoenix-4.6.0-HBase-1.0,放在集群的某个目录下,并将其解压。解压后的根目录下有很多jar文件,用我们新编译出的jar包替换以下的jar文件:
将新编译出的 phoenix-4.6.0-HBase-1.0-server.jar放到每一个RegionServer节点的HBase的library path下(例如 /opt/cloudera/parcels/CDH-5.4.7-1.cdh5.4.7.p0.3/lib/hbase/lib ),并重启HBase服务。
现在,可以正常使用Phoenix的客户端了,如下: