Phoenix-4.14.0-CDH5.10编译版本(从Phoenix-4.14.0-CDH5.11.2降级)

本文详细介绍了在CDH5.10版本中编译和部署Phoenix的过程,包括解决HBase连接问题,以及如何通过修改版本号、依赖管理和编译设置来适配集群环境。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

 

  1. 依赖环境说明
  • CDH版本为5.10版本(但是Phoenix官网并没有提供与该版本对应的Phoenix)

  • CDH中Hbase的版本为Hbase1.2版本

虽然我们集群中的Hbase的版本在官网上有对应的Hbase1.2版本的Phoenix但是该版本经过测试,显示错误为连接不上Hbase,所以我们选择从4.14.0-cdh5.11.2重新编译成4.14.0-cdh5.10.2。

Python版本说明:该编译版本需要在Python2.X版本上运行,如果想查询自己linux主机上的Python版本使用:命令python  -v 查看

 

  1. Phoenix下载

官网地址为:http://phoenix.apache.org/download.html

  1. 编译

下载以后需要将该项目解压

打开IDEA然后导入项目,不过这个时候等待的时间有点长,需要下载大量的依赖,依赖加载完成以后,我们找到其中的build.txt文档,然后查看要求,之后通过IDEA中的ctrl+f查找pom.ml中的文档有没有版本说明,将其中的4.14.0-cdh5.11.2改为4.14.0-cdh5.10.2

    如果搜索框中颜色为蓝色,则说明该文档中有搜索的内容,找到并修改它,同样的修改操作在整个项目中的每个小项目中都需要修改

并且在Hbase中.idea中不需要修改

继续下面操作,使用Windows中的已经安装好的maven进行打包。(由于公司下载不了官网的maven包只好找百度云下载了一个maven的3.3版本的,因为Phoenix中build.txt文档要求是maven3.x,之后添加环境依赖,但是3.3版本不行,后来换了3.6版本的,并且setting文件不要修改成ali的因为编译的过程中有一个jar包ali的仓库没有。)

找到我们Phoenix源码包下的第一个pom.xml文件之后在如下图中

输入cmd命令进入Windows小黑框,然后输入命令:mvn clean install –DskipTests 进行编译,编译的时间会比较长

但是不要着急,注意每个小项目的完成情况,一共有16个。

编译完成如下图:

编译完成以后需要找出压缩包

 

  1. 安装

将编译好的安装包放到CDH的集群中的lib目录下

解压目录

tar -zxvf phoenix-4.14.0-cdh5.10.2.tar.gz

并重命名mv phoenix-4.14.0-cdh5.10.2 phoenix

进入Phoenix如下内容:

拷贝phoenix-4.14.0-cdh5.10.2-server.jar 的包到hbase中的lib中 并且每个regenserver都需要拷贝一份

 

cp phoenix-4.14.0-cdh5.10.2-server.jar  /opt/cloudera/parcels/CDH/lib/hbase/lib/

scp phoenix-4.14.0-cdh5.10.2-server.jar 主机名:/opt/cloudera/parcels/CDH/lib/hbase/lib/

重启hbase集群

 

重启之后进入Phoenix的bin目录下面执行(centos4,centos5,centos6为服务器主机名)

./sqlline.py centos4,centos5,centos6

 

 

执行结果如下:

执行!table命令得到原始表格如下:

安装完成,这时候还需要进行测试性能

  1. 测试
  1. 通过命令向Phoenix创建表格,并插入数据:

create table test (id varchar primary key,name varchar,age integer );

由于Phoenix中是区分大小写的所以在创建表格的时候没有用双引号“”所以会自动变成大写。

 

向Phoenix中插入数据:

upsert into test(id,name,age) values('000001','liubei',43);

结果如下:

这时候我们看Hbase中有没有产生映射

结果是我们刚刚插入的数据

这时候我们已经确定Phoenix已经和Hbase连接上了

 

  1. 测试JDBC连接

依赖如下:


<dependency>

      <groupId>org.apache.phoenix</groupId>

      <artifactId>phoenix-core</artifactId>

      <version>4.14.0-cdh5.11.2</version>

</dependency>

测试代码如下:

package ahhx.com.Phoenix;



import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.PreparedStatement;

import java.sql.Statement;



public class test {



    public static void main(String[] args) throws SQLException {

        Statement stmt = null;

        ResultSet rset = null;



        Connection con = DriverManager.getConnection("jdbc:phoenix:192.168.201.85,192.168.201.84,192.168.201.83");

        System.out.println("连接成功!");

        stmt = con.createStatement();



        stmt.executeUpdate("create table test1 (mykey integer not null primary key, mycolumn varchar)");

        stmt.executeUpdate("upsert into test1 values (1,'Hello')");

        stmt.executeUpdate("upsert into test1 values (2,'World!')");

        con.commit();



        PreparedStatement statement = con.prepareStatement("select * from test1");

        rset = statement.executeQuery();

        while (rset.next()) {

            System.out.println(rset.getString("mycolumn"));

        }

        statement.close();

        con.close();

    }

}

结果如下:

其中可能会出现的问题:

  1. Caused by: org.apache.hadoop.net.ConnectTimeoutException: 20000 millis timeout while waiting for channel to be ready for connect.

解决方案:

     修改主机中的hosts文件,可能是Hbase连接出现的问题。网上也没有说明,但是改了hosts文件就好了

  1. Inconsistent namespace mapping properties. Cannot initiate connection as SYSTEM:CATALOG is found but client does not have phoenix.schema.isNamespaceMappingEnabled enabled

解决方案:

  在java中的JDBC连接的时候,将Phoenix中的Hbase-site.xml配置文件放到resource文件中。

致谢:合肥兰智-数加大数据学院提供技术支持 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值