Hbase和phonix关联使用问题总汇(连载)

使用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
链接配置

添加配置
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。