phoenix开启schema后的客户端连接问题
1.关于cdh的phoenix启动问题
2. 我的Phoenix版本如下:
3. 关于Phoenix最开始的启动问题:
# 关于Phoenix的启动异常
+ export HBASE_CONF_DIR=/run/cloudera-scm-agent/process/1414-phoenix-PHOENIX_QUERY_SERVER/hbase-conf
+ HBASE_CONF_DIR=/run/cloudera-scm-agent/process/1414-phoenix-PHOENIX_QUERY_SERVER/hbase-conf
+ exec /opt/cloudera/parcels/PHOENIX-5.0.0-cdh6.2.0.p0.1308267/lib/phoenix/bin/queryserver.py
File "/opt/cloudera/parcels/PHOENIX-5.0.0-cdh6.2.0.p0.1308267/lib/phoenix/bin/queryserver.py", line 137
print "<service>"
^
SyntaxError: Missing parentheses in call to 'print'. Did you mean print("<service>")?
4. Phoenix启动的时候需要依赖python环境, 我最开始安装的是python3.8版本
5. 经过查询,根据报错提示,打印的方法是没有括号的, 属于python2版本,跟现有python版本相冲突,需要修改python版本,后续安装python版本如下:
6. 当修改正常匹配的版本后,Phoenix可以正常启动,无异常,启动日志如下:
+ PHOENIX_CONF=./phoenix-site.xml
+ sed -i '$ d' ./hbase-conf/hbase-site.xml
+ grep -E '<?property>|<?name>|<?value>' ./phoenix-site.xml
+ echo '</configuration>'
+ '[' '' '!=' '' ']'
+ '[' '' '!=' '' ']'
+ export HBASE_CONF_DIR=/run/cloudera-scm-agent/process/1416-phoenix-PHOENIX_QUERY_SERVER/hbase-conf
+ HBASE_CONF_DIR=/run/cloudera-scm-agent/process/1416-phoenix-PHOENIX_QUERY_SERVER/hbase-conf
+ exec /opt/cloudera/parcels/PHOENIX-5.0.0-cdh6.2.0.p0.1308267/lib/phoenix/bin/queryserver.py
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/opt/cloudera/parcels/PHOENIX-5.0.0-cdh6.2.0.p0.1308267/lib/phoenix/phoenix-5.0.0-cdh6.2.0-client.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/cloudera/parcels/CDH-6.2.0-1.cdh6.2.0.p0.967373/jars/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
7. 注意:为了开启 hbase 的 namespace 和 phoenix 的 schema 的映射,在程序中需要加这个配置文件,另外在 linux 服务上,也需要在 hbase 以及 phoenix 的 hbase-site.xml 配置文件中,加上以上两个配置
Phenix创建TABLE_SCHEM失败:Cannot create schema because config phoenix.schema.isNamespaceMappingEnabled for enabling name space mapping isn’t enabled. schemaName=gmall_2024_realtime
因为没有添加配置,提示创建失败,所以需要修改hbase的 hbase-site.xml,下面的配置是服务端的配置
<property>
<name>phoenix.schema.isNamespaceMappingEnabled</name>
<value>true</value>
</property>
<property>
<name>phoenix.schema.mapSystemTablesToNamespace</name>
<value>true</value>
</property>
上面的是hbase的服务端.还需要修改客户端
配置和服务端配置一样,这样服务端和客户端的配置一致
<property>
<name>phoenix.schema.isNamespaceMappingEnabled</name>
<value>true</value>
</property>
<property>
<name>phoenix.schema.mapSystemTablesToNamespace</name>
<value>true</value>
</property>
8. 所有的配置都配置正常,服务正常启动,需要datagrip链接 Phoenix
datagrip链接的时候提示,客户端和服务端的配置不一致
DBMS: Phoenix (版本 5.0)
区分大小写: 普通形式=upper,分隔形式=exact
驱动程序: PhoenixEmbeddedDriver (版本 5.0,JDBC1.0)
[43M10][726] ERROR 726 (43M10): Inconsistent namespace mapping properties. Cannot initiate connection as SYSTEM:CATALOG is found but client does not have phoenix.schema.isNamespaceMappingEnabled enabled.
在datagrip下添加客户端启动schema参数
添加上面的配置,这样链接就和服务端的配置一样了
// 这是上面的配置
1. phoenix.schema.isNamespaceMappingEnabled true
2. phoenix.schema.mapSystemTablesToNamespace true