问题背景:
因为我安装的都是cdh5.7.0系列版本,Phoenix官网上没有cdh5.7.0版本,所以就看大神们都使用的是cdh5.8.0版本~, 版本一定要对上噢~
但是安装好后运行./sqlline.py的时候就是一直报错:
先是报这2个错
Caused by: java.net.SocketTimeoutException:
java.net.ConnectException: 拒绝连接
改了好多地方可是还是报错,真是尴尬。。。
后来终于自己找到了原因:
如果你安装都没有问题的话,一到启动phoenix的时候就报错:就要试试不要解压在你设定好的目录下,就直接解压就行,不要-C到指定文件夹!
然后开始用java api 对phoenix做测试操作:
结果又报错:
Inconsistent namespace mapping properties. Cannot initiate connection as SYSTEM:CATALOG is found but client does not have phoenix.schema.isNamespaceMappingEnabled enabled
按照各位大神的操作,我在hbase-site.xml下设置了命名空间启用,却总是提示这个错误。。。
<property>
<name>phoenix.schema.isNamespaceMappingEnabled</name>
<value>true</value>
</property>
后来我参照TracyGao01大神的帖子,查看了官网http://phoenix.apache.org/namspace_mapping.html
重要的是这句话:
if set once, should not be rollback. Old client will not work after this property is enabled.
如果设置一次,就不应该回滚。启用此属性后,旧客户端将无法工作。
解决方法如下:
1、删除在hbase和phoenix的hbase-site.xml下设置的关于命名空间启用的设置。
2、重启hbase,进入hbase shell
3、按照下面步骤进行操作
修改hbase中表SYSTEM:CATALOG名为SYSTEM.CATALOG
1)disable 'SYSTEM:CATALOG'
2)snapshot 'SYSTEM:CATALOG', 'cata_tableSnapshot'
3)clone_snapshot 'cata_tableSnapshot', 'SYSTEM.CATALOG'
4)drop 'SYSTEM:CATALOG'
4、重启phoenix
5、运行我自己的IDEA的测试,就成功的取到了表里的值啦~
暂时没有bug啦~~~
❤特别提醒:
pom引用的时候,版本不要太高,虽然我的是cdh的
mvn仓库里找不到4.8.0-cdh5.8.0
所以我找了一个相近的
<dependencies>
<dependency>
<groupId>org.apache.phoenix</groupId>
<artifactId>phoenix-core</artifactId>
<version>4.8.0-HBase-1.2</version>
</dependency>
</dependencies>
附一下4.8.0-cdh5.8.0安装步骤,犒劳一下这么坚持的我❤❤❤~
1、下载到win:
https://github.com/chiastic-security/phoenix-for-cloudera/tree/4.8-HBase-1.2-cdh5.8
2、下载完毕后,解压到你自己创建好的win本地目录
E:\phoenix/phoenix-for-cloudera-4.8-HBase-1.2-cdh5.8
3、打开CMD,进入目录进行编译---编译时间较长,耐心等待...
(一定要加上-Dcdh.flume.version=1.6.0)
E:\phoenix\phoenix-for-cloudera-4.8-HBase-1.2-cdh5.8>
mvn clean package -DskipTests -Dcdh.flume.version=1.6.0
编译成功~
4、将编译好的phoenix-4.8.0-cdh5.8.0.tar.gz复制到服务器指定目录下
5、直接就地解压 (不要-C)
tar -zxvf phoenix-4.8.0-cdh5.8.0.tar.gz
6、因为我的是伪分布式的,只有一个regionServer所以将指定的phoenix-4.8.0-cdh5.8.0-server.jar复制到Hbase的lib文件夹下,只拷贝到一个节点下就可以了,如果你是集群,当然每一个节点都要拷贝一个过去~
7、将hbase>conf里的hbase-site.xml 复制到phoenix-4.8.0-cdh5.8.0的 bin 下,覆盖已有的hbase-site.xml
8、启动hdfs
sbin>./start-dfs.sh
9、启动zookeeper
bin>./zkServer.sh start
10、启动hbase
bin>./start-hbase.sh
11、检查进程 jps
12、进入./hbase shell ,按照之前的方法修改hbase中表SYSTEM:CATALOG名为SYSTEM.CATALOG
8、启动phoenix----->进入Phoenix的bin目录
./sqlline.py 服务器名:zookeeper端口
bin>./sqlline.py hadoop001:2181/hbase
9、测试一下:列出所有的表
!tables
终于安装好啦!!!!!
❤特别特别感谢以下地址~~~
【cdh版本的phoneix安装教程】
https://www.2cto.com/net/201804/735362.html
【CDH5.8 HBase安装Phoenix---有个关于客户端 出现 hbase.table.sanity.checks 错误解决】
https://www.jianshu.com/p/6d2687cce817
【CDH版 Phoenix 安装方法---里面有个关于二级索引的配置】
https://blog.csdn.net/yuanhaiwn/article/details/81435013
【apache phoenix如何关掉namespace功能(作者TracyGao01)】
https://blog.csdn.net/u012551524/article/details/82595825