Our Community is getting an upgrade! To get everything ready for the relaunch, we’ll be placing the site in read-only mode starting September 21st.
We really appreciate your understanding while we get things set up behind the scenes. Catch up on all the exciting details about the move here.
Need help or have questions? Drop us a line at [email protected]
Created 09-15-2016 09:39 PM
Hi:
While I tried to connect to a hbase server with phoenix 4.7 installed using client with the same version,
I got the following exception:
java.sql.SQLException: ERROR 726 (43M10): Inconsistent namespace mapping properites
Cannot initiate connection as SYSTEM:CATALOG is found but client does not have phoenix.schema.isNamespaceMappingEnabled enabled
I checked the server and client, both sides are having the following options set to true in the hbase-site config:
phoenix.schema.isNamespaceMappingEnabled,
phoenix.schema.mapSystemTablesToNamespace
The attached are the traces and the config screenshots for HBase client and server . The platform is HDP 2.5 on both sides.
Trace1 is when using Pheonix jdbc driver directly, trace2 is using it through Spark
Any idea what I should do?
Thanks
Xindian
Created 09-16-2016 07:41 AM
For trace 1 (if you are using sqlline.py).
can you check your <PHOENIX_HOME>/bin directory and remove if there is any hbase-site.xml and try.
If you are using any java program, you need to ensure hbase-site.xml in classpath or you are adding these properties while creating connection.
For trace 2 (spark job)
You need to include hbase-site.xml in the classpath of spark like this:-
you can add hbase-site.xml in spark conf directory of all nodes or add properties needed in spark-defaults.conf. OR(try) spark.driver.extraClassPath= /usr/hdp/current/phoenix-client/phoenix-client-spark.jar:/etc/hbase/conf/hbase-site.xml spark.executor.extraClassPath= /usr/hdp/current/phoenix-client/phoenix-client-spark.jar:/etc/hbase/conf/hbase-site.xml
Created 09-15-2016 09:42 PM
You need to be sure that phoenix client has hbase-site.xml in the classpath. You may do this by setting HBASE_CONF_DIR environment variable.
Created 09-15-2016 10:17 PM
Hi, ssoldatov:
Thanks for the suggestions, but it still does not work, with the same error.
This is what I did to submit the spark job:
#!/usr/bin/bash
CWD="$(pwd)"
SPARK_CONF_DIR=${CWD}/output/conf
HBASE_CONF_DIR=/usr/hdp/2.5.0.0-1245/hbase/conf
export SPARK_CONF_DIR
export CWD
export HBASE_CONF_DIR
spark-submit \
--driver-class-path "${CWD}/target/uber-spark-boot-0.1.0.jar:/usr/hdp/2.5.0.0-1245/phoenix/phoenix-client.jar" \
--class "com.nms.Application" --master local[3] ${CWD}/target/uber-spark-boot-0.1.0.jar
This is what I printed out at run time in the main procedure in the spark driver, /usr/hdp/2.5.0.0-1245/hbase/conf is where the corrrect hbase-site.xml locates
Let's inspect the classpath: 16/09/15 17:57:30 INFO Application: /home/vagrant/nms/spark-boot/target/uber-spark-boot-0.1.0.jar 16/09/15 17:57:30 INFO Application: /usr/hdp/2.5.0.0-1245/phoenix/phoenix-4.7.0.2.5.0.0-1245-client.jar 16/09/15 17:57:30 INFO Application: /home/vagrant/nms/spark-boot/output/conf/ 16/09/15 17:57:30 INFO Application: /usr/hdp/2.5.0.0-1245/spark/lib/spark-assembly-1.6.2.2.5.0.0-1245-hadoop2.7.3.2.5.0.0-1245.jar 16/09/15 17:57:30 INFO Application: /usr/hdp/2.5.0.0-1245/spark/lib/datanucleus-api-jdo-3.2.6.jar 16/09/15 17:57:30 INFO Application: /usr/hdp/2.5.0.0-1245/spark/lib/datanucleus-core-3.2.10.jar 16/09/15 17:57:30 INFO Application: /usr/hdp/2.5.0.0-1245/spark/lib/datanucleus-rdbms-3.2.9.jar 16/09/15 17:57:30 INFO Application: /etc/hadoop/2.5.0.0-1245/0/ 16/09/15 17:57:30 INFO Application: /usr/hdp/2.5.0.0-1245/hadoop/lib/aws-java-sdk-s3-1.10.6.jar 16/09/15 17:57:30 INFO Application: /usr/hdp/2.5.0.0-1245/hadoop/lib/aws-java-sdk-core-1.10.6.jar 16/09/15 17:57:30 INFO Application: /usr/hdp/2.5.0.0-1245/hadoop/lib/aws-java-sdk-kms-1.10.6.jar Let's inspect the environment variables: 16/09/15 17:57:30 INFO Application: Env Var Name : CWD Value : /home/vagrant/nms/spark-boot 16/09/15 17:57:30 INFO Application: Env Var Name : DBUS_SESSION_BUS_ADDRESS Value : unix:abstract=/tmp/dbus-qWsc4sL7En,guid=ee8eaf05797434b6bd4fffdf57dab404 16/09/15 17:57:30 INFO Application: Env Var Name : DESKTOP_SESSION Value : gnome-classic 16/09/15 17:57:30 INFO Application: Env Var Name : DISPLAY Value : :0 16/09/15 17:57:30 INFO Application: Env Var Name : GDMSESSION Value : gnome-classic 16/09/15 17:57:30 INFO Application: Env Var Name : GDM_LANG Value : en_US.utf8 16/09/15 17:57:30 INFO Application: Env Var Name : GEM_HOME Value : /usr/local/rvm/gems/ruby-2.2.0 16/09/15 17:57:30 INFO Application: Env Var Name : GEM_PATH Value : /usr/local/rvm/gems/ruby-2.2.0:/usr/local/rvm/gems/ruby-2.2.0@global 16/09/15 17:57:30 INFO Application: Env Var Name : GJS_DEBUG_OUTPUT Value : stderr 16/09/15 17:57:30 INFO Application: Env Var Name : GJS_DEBUG_TOPICS Value : JS ERROR;JS LOG 16/09/15 17:57:30 INFO Application: Env Var Name : GNOME_DESKTOP_SESSION_ID Value : this-is-deprecated 16/09/15 17:57:30 INFO Application: Env Var Name : GNOME_SHELL_SESSION_MODE Value : classic 16/09/15 17:57:30 INFO Application: Env Var Name : GPG_AGENT_INFO Value : /run/user/1000/keyring/gpg:0:1 16/09/15 17:57:30 INFO Application: Env Var Name : HADOOP_CONF_DIR Value : /usr/hdp/current/hadoop-client/conf 16/09/15 17:57:30 INFO Application: Env Var Name : HADOOP_HOME Value : /usr/hdp/current/hadoop-client 16/09/15 17:57:30 INFO Application: Env Var Name : HBASE_CONF_DIR Value : /usr/hdp/2.5.0.0-1245/hbase/conf 16/09/15 17:57:30 INFO Application: Env Var Name : HDP_VERSION Value : 2.5.0.0-1245 16/09/15 17:57:30 INFO Application: Env Var Name : HISTCONTROL Value : ignoredups
16/09/15 17:57:30 INFO Application: Env Var Name : HISTSIZE Value : 1000
Created 09-15-2016 11:46 PM
Can we see what the Phoenix System tables look like in HBase Shell?
Run 'hbase shell' then 'list' and post the output.
Example:
[root@sandbox ~]# hbase shell
HBase Shell; enter 'help<RETURN>' for list of supported commands.
Type "exit<RETURN>" to leave the HBase Shell Version 1.1.2.2.5.0.0-1245, r53538b8ab6749cbb6fdc0fe448b89aa82495fb3f, Fri Aug 26 01:32:27 UTC 2016
hbase(main):001:0> list
TABLE
SYSTEM:CATALOG
SYSTEM:FUNCTION
SYSTEM:SEQUENCE
SYSTEM:STATS
3 row(s) in 0.2090 seconds => ["SYSTEM:CATALOG", "SYSTEM:FUNCTION", "SYSTEM:SEQUENCE", "SYSTEM:STATS"]
Created 09-15-2016 11:49 PM
If they instead look like 'SYSTEM.CATALOG' then they are still the original way.
If instead your Phoenix System tables look like 'SYSTEM:CATALOG' they were migrated to the new namespace mechanism already. I think you'll likely have to add 'phoenix.schema.isNamespaceMappingEnabled' to your hbase-site.xml, I dont see a way to go back.
Created 09-16-2016 06:27 PM
it looks like this. The problem gets solved when I copy the hbase-site.xml into the spark conf directory
Thanks
Shindian
1.8.7-p357 :002 > list TABLE DATA_SCHEMA PROCESS_LOG SCHEMA_VERSION SYSTEM.CATALOG SYSTEM:CATALOG SYSTEM:FUNCTION SYSTEM:SEQUENCE SYSTEM:STATS TENANT WEB_STAT 10 row(s) in 0.4010 seconds => ["DATA_SCHEMA", "PROCESS_LOG", "SCHEMA_VERSION", "SYSTEM.CATALOG", "SYSTEM:CATALOG", "SYSTEM:FUNCTION", "SYSTEM:SEQUENCE", "SYSTEM:STATS", "TENANT", "WEB_STAT"]
Created 09-16-2016 07:41 AM
For trace 1 (if you are using sqlline.py).
can you check your <PHOENIX_HOME>/bin directory and remove if there is any hbase-site.xml and try.
If you are using any java program, you need to ensure hbase-site.xml in classpath or you are adding these properties while creating connection.
For trace 2 (spark job)
You need to include hbase-site.xml in the classpath of spark like this:-
you can add hbase-site.xml in spark conf directory of all nodes or add properties needed in spark-defaults.conf. OR(try) spark.driver.extraClassPath= /usr/hdp/current/phoenix-client/phoenix-client-spark.jar:/etc/hbase/conf/hbase-site.xml spark.executor.extraClassPath= /usr/hdp/current/phoenix-client/phoenix-client-spark.jar:/etc/hbase/conf/hbase-site.xml
Created 09-16-2016 07:45 AM
As an improvement, we could get namespace mapping properties from server at the client so that every client doesn't need to specify them, have raised the jira for the same
https://issues.apache.org/jira/browse/PHOENIX-3288
Created 09-16-2016 06:24 PM
adding hbase-site.xml in spark conf directory solves the problem
Thanks
Shindian
Created 12-16-2016 03:34 PM
This was the solution. Thank you!