使用phoenix时,idea和squirrel 链接失败的解决办法:
虽然HBase用得多,但用Phoenix的比较少。从自己测试来看,Phoenix确实还存在各种不稳定,如下面描述的几点问题:
最新版本对HBase、Hadoop等有严格版本控制,对于已经用上HBase的业务来说要升级HBase版本适配Phoenix代价太大
与HBase强相关,作为HBase中的一个组件启动,HBase元数据容易遭到破坏
官方提供的创建索引方法,容易导致插入失败,查询失败,程序崩溃等问题
我觉得Phoenix总体思路还是很不错的,但本身太冒进,急于集成新功能,但现有的功能所存在的问题却并未有很好的解决方案,导致版本很多。
错误:
Error: ERROR 726 (43M10): Inconsistent namespace mapping properties.. Cannot initiate connection as SYSTEM:CATALOG is found but client does not have phoenix.schema.isNamespaceMappingEnabled enabled (state=43M10,code=726)
原因:
由于服务端hbase.xml配置了如下参数(用于操作其他命名空间), 所以客户端链接时会报错
<property>
<name>phoenix.schema.isNamespaceMappingEnabled</name>
<value>true</value>
</property>
解决方式一:
优缺点:如果使用全删除的方式,squirrel有默认库,idea则不需要再添加任何配置文件,这时候再去链接phoenix是不报错的
1.首先修改hbase-site.xml这个配置文件
注释掉/opt/module/hbase/conf/hbase-site.xml这个配置文件里面的如下内容phoenix.schema.isNamespaceMappingEnabled=true
**第二步把修改后的配置文件分发到其他节点,比如服务器103和104**
2.修改phoenix的hbase-site.xml这个配置文件
注释掉/opt/module/phoenix/bin/hbase-site.xml文件里面的如下内容
phoenix.schema.isNamespaceMappingEnabled=true
这个配置文件不需要分发,只有一个服务器上安装phoenix便可以了。
3.进入到zookeeper的客户端中,删除掉hbase的目录下所有内容,命令如下:
cd /opt/module/zookeeper-3.5.7/
bin/zkCli.sh
deleteall /hbase
4.再启动hadoop后受用命令删除掉hdfs上hbase的目录下所有内容,命令如下:
hdfs -dfs -rmr /hbase
或者在hadoop(3.0+)的web页面上手动删除hbase目录下所有内容,俩种方式都可以。不知道怎么删除的小伙伴,看下图示范。
删除hbase
补存:如果不想删除hbase的所有数据,还可以只修改指定部分
修改hbase中表SYSTEM:CATALOG名为SYSTEM.CATALOG
1、disable 'SYSTEM:CATALOG'
2、snapshot 'SYSTEM:CATALOG', 'cata_tableSnapshot'
3、clone_snapshot 'cata_tableSnapshot', 'SYSTEM.CATALOG'
一定要在第三步最后删掉SYSTEM:CATALOG,并且保证你已经clone了一张SYSTEM.CATALOG
4、drop 'SYSTEM:CATALOG'
5.重启hbase(删除hdfs上/hbase时一定要先停掉hbase的服务)
解决方式二:
优缺点:这种方式会导致squirrel不显示默认数据库,不指定库创建表时 图形化界面squirrel中无法看见表名
1.idea链接phoenix时报错解决
1.1把服务端hbase-site.xml放到工程resources/下
1.2 获取连接时 构造Properties参数传入
//注册驱动
Class.forName("org.apache.phoenix.jdbc.PhoenixDriver")
//代码设置配置文件
val properties = new Properties()
properties.setProperty("phoenix.schema.isNamespaceMappingEnabled","true")
val conn: Connection = DriverManager.getConnection("jdbc:phoenix:hadoop22,hadoop23,hadoop24:2181"
,properties)
2.: 图形化界面squirrel链接报错解决
配置连接时添加参数
phoenix.schema.isNamespaceMappingEnabled
true
链接配置
添加配置