Created 03-22-2017 04:47 PM
I am using HDP 2.5 Single Node. And I am using OSX. I have include hbase-site.xml in my local path.
The following is my java code in local. I am running it from eclipse. I create a table called as demo using the shell
package hbase; import java.io.IOException; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.HBaseConfiguration; import org.apache.hadoop.hbase.TableName; import org.apache.hadoop.hbase.client.Connection; import org.apache.hadoop.hbase.client.ConnectionFactory; import org.apache.hadoop.hbase.client.Result; import org.apache.hadoop.hbase.client.ResultScanner; import org.apache.hadoop.hbase.client.Scan; import org.apache.hadoop.hbase.client.Table; public class Sample { public static void main(String[] args) throws IOException{ System.out.println("Trying to connect..."); Configuration conf = HBaseConfiguration.create(); System.out.println("HBase is running!"); Connection conn = ConnectionFactory.createConnection(conf); Table table = conn.getTable(TableName.valueOf("demo")); Scan scan1 = new Scan(); ResultScanner scanner1 = table.getScanner(scan1); for(Result res: scanner1){ System.out.print(res); } System.out.println("Table created Successfully..."); } }
And I get the following output
Trying to connect... HBase is running! log4j:WARN No appenders could be found for logger (org.apache.hadoop.metrics2.lib.MutableMetricsFactory). log4j:WARN Please initialize the log4j system properly. log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info. 2017-03-22 22:07:10.625 java[30947:3719243] Unable to load realm mapping info from SCDynamicStore Exception in thread "main" java.lang.RuntimeException: java.lang.RuntimeException: java.lang.NullPointerException at org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithoutRetries(RpcRetryingCaller.java:208) at org.apache.hadoop.hbase.client.ClientScanner.call(ClientScanner.java:320) at org.apache.hadoop.hbase.client.ClientScanner.nextScanner(ClientScanner.java:295) at org.apache.hadoop.hbase.client.ClientScanner.initializeScannerInConstruction(ClientScanner.java:160) at org.apache.hadoop.hbase.client.ClientScanner.<init>(ClientScanner.java:155) at org.apache.hadoop.hbase.client.HTable.getScanner(HTable.java:821) at hbase.Sample.main(Sample.java:29) Caused by: java.lang.RuntimeException: java.lang.NullPointerException at org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithoutRetries(RpcRetryingCaller.java:208) at org.apache.hadoop.hbase.client.ClientSmallReversedScanner.loadCache(ClientSmallReversedScanner.java:211) at org.apache.hadoop.hbase.client.ClientSmallReversedScanner.next(ClientSmallReversedScanner.java:185) at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.locateRegionInMeta(ConnectionManager.java:1249) at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.locateRegion(ConnectionManager.java:1155) at org.apache.hadoop.hbase.client.RpcRetryingCallerWithReadReplicas.getRegionLocations(RpcRetryingCallerWithReadReplicas.java:300) at org.apache.hadoop.hbase.client.ScannerCallableWithReplicas.call(ScannerCallableWithReplicas.java:151) at org.apache.hadoop.hbase.client.ScannerCallableWithReplicas.call(ScannerCallableWithReplicas.java:59) at org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithoutRetries(RpcRetryingCaller.java:200) ... 6 more Caused by: java.lang.NullPointerException at org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher.getMetaReplicaNodes(ZooKeeperWatcher.java:395) at org.apache.hadoop.hbase.zookeeper.MetaTableLocator.blockUntilAvailable(MetaTableLocator.java:553) at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:61) at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.locateMeta(ConnectionManager.java:1185) at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.locateRegion(ConnectionManager.java:1152) at org.apache.hadoop.hbase.client.RpcRetryingCallerWithReadReplicas.getRegionLocations(RpcRetryingCallerWithReadReplicas.java:300) at org.apache.hadoop.hbase.client.ScannerCallableWithReplicas.call(ScannerCallableWithReplicas.java:151) at org.apache.hadoop.hbase.client.ScannerCallableWithReplicas.call(ScannerCallableWithReplicas.java:59) at org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithoutRetries(RpcRetryingCaller.java:200) ... 14 more
Please tell me what am I doing wrong.
Created 03-22-2017 05:23 PM
Please define the "zookeeper.znode.parent" property in your code something like following:
Configuration conf = HBaseConfiguration.create(); conf.set("zookeeper.znode.parent", "/hbase-unsecure");
.
Parent value may differ in your case though but you can find the value of "zookeeper.znode.parent" in the "hbase-site.xml" file.
Created 03-22-2017 05:28 PM
If I use it my code gets stuck with the following output.
Trying to connect...
HBase is running!
log4j:WARN No appenders could be found for logger (org.apache.hadoop.metrics2.lib.MutableMetricsFactory).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
2017-03-22 22:57:48.776 java[31831:3869652] Unable to load realm mapping info from SCDynamicStore
Created 03-22-2017 05:43 PM
Is it a kerberized environment? If yes then have you set on the client side.
export HADOOP_OPTS="-Djava.security.krb5.realm=YOUR.REALM.NAME -Djava.security.krb5.kdc=my.kdc.com
.
Also Can you pelas emake sure that "hbase-site.xml" file is present in clients classpath and your code knows the Zookeeper Addresses and those host and ports are accessible from your machine where you are running the java code.
Example:
config.set("hbase.zookeeper.quorum", "node1.example.com"); config.set("hbase.zookeeper.property.clientPort", "2181")
.
Created 03-22-2017 05:53 PM
I did not install kerberized on sandbox. So i guess it is not there.
And I have hbase-site.xml in my classpath. I even tried after adding the two statements but I get the same error. I also made a runnable jar and copied it to the cluster. Still I was getting the same error.
Created 03-23-2017 07:42 AM
I have developed a very simple HBase Client code completely using maven so it would be easier for you to test and run.
Please refer to the demo: https://github.com/jaysensharma/MiddlewareMagicDemos/tree/master/HDP_Ambari/HBase_Client
Few changes you will need to make in the code.
config.set("hbase.zookeeper.quorum", "erie3.example.com,erie1.example.com,erie4.example.com,erie2.example.com"); config.set("hbase.zookeeper.property.clientPort", "2181"); config.set("zookeeper.znode.parent", "/hbase-unsecure"); config.addResource(new Path("/PATH/TO/HBase_Client/src/main/resources/hbase-site.xml")); config.addResource(new Path("/PATH/TO/HBase_Client/src/main/resources/core-site.xml")); config.addResource(new Path("/PATH/TO/HBase_Client/src/main/resources/hdfs-site.xml"));
.
Please use your own "hbase-site.xml","core-site.xml" and "hdfs-site.xml" files.
.
Then run it as following:
How to build and run? # cd /PATH/TO/HBase_Client # mvn clean install exec:java
Created 03-22-2017 07:50 PM
Can you add following in your code and see whether that helps?
conf.addResource(<path to hbase site.xml>+"/hbase-site.xml");
Created 03-23-2017 06:42 AM
Using this my code is getting stuck with the following output
Trying to connect... HBase is running! log4j:WARN No appenders could be found for logger (org.apache.hadoop.metrics2.lib.MutableMetricsFactory). log4j:WARN Please initialize the log4j system properly. log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info. 2017-03-23 11:44:44.217 java[33698:4112278] Unable to load realm mapping info from SCDynamicStore