OGG-15051 Java or JNI exception: hadoop.hbase.HTableDescriptor.addFamily in Cloudera
Oracle GoldenGate Replicat process for Cloudera HBase abend with the below error.
Oracle GoldenGate Delivery Version 12.2.0.1.160823 OGGCORE_OGGADP.12.2.0.1.0_PLATFORMS_170324.1532 Linux, x64, 64bit (optimized), Generic on Mar 24 2017 17:11:07 2017-10-12 05:01:44 INFO OGG-06511 Using following columns in default map by name: ROW_ID, LAST_UPD, PAR_ROW_ID, BU_ID, NAME, CUST_STAT_CD,INTEGRATION_ID, OU_NUM,OU_TYPE_CD, PAR_OU_ID, PR_ADDR_ID, ACCNT_TYPE_CD, PROCESS_TIMESTAMP,X_BILL_TYPE_BT, STAT_REASON_CD. 2017-10-12 05:01:44 INFO OGG-06510 Using the following key columns for target table SCHEMA.TABLE: ROW_ID. 2017-10-12 05:01:59 INFO OGG-01021 Command received from GGSCI: STATS. Oct 12, 2017 5:02:56 AM org.apache.hadoop.conf.Configuration warnOnceIfDeprecated INFO: hadoop.native.lib is deprecated. Instead, use io.native.lib.available Exception in thread "main" java.lang.NoSuchMethodError: org.apache.hadoop.hbase.HTableDescriptor.addFamily(Lorg/apache/hadoop/hbase/HColumnDescriptor;)Lorg/apache/hadoop/hbase/HTableDescriptor; at oracle.goldengate.handler.hbase.operations.HBase1TableWriter.createTable(HBase1TableWriter.java:254) at oracle.goldengate.handler.hbase.operations.HBase1TableWriter.open(HBase1TableWriter.java:96) at oracle.goldengate.handler.hbase.operations.HBase1Writer.getTableWriter(HBase1Writer.java:167) at oracle.goldengate.handler.hbase.operations.HBase1Writer.put(HBase1Writer.java:110) at oracle.goldengate.handler.hbase.operations.HBaseInsertDBOperation.processOp(HBaseInsertDBOperation.java:78) at oracle.goldengate.handler.hbase.HBaseHandler.processOp(HBaseHandler.java:468) at oracle.goldengate.handler.hbase.HBaseHandler.transactionCommit(HBaseHandler.java:411) at oracle.goldengate.datasource.DsEventManager$2.send(DsEventManager.java:422) at oracle.goldengate.datasource.DsEventManager$EventDispatcher.distributeEvent(DsEventManager.java:231) at oracle.goldengate.datasource.DsEventManager.fireTransactionCommit(DsEventManager.java:430) at oracle.goldengate.datasource.AbstractDataSource.fireTransactionCommit(AbstractDataSource.java:506) at oracle.goldengate.datasource.UserExitDataSource.commitActiveTransaction(UserExitDataSource.java:1546) at oracle.goldengate.datasource.UserExitDataSource.commitTx(UserExitDataSource.java:1469) 2017-10-12 05:02:56 ERROR OGG-15051 Java or JNI exception: java.lang.NoSuchMethodError: org.apache.hadoop.hbase.HTableDescriptor.addFamily(Lorg/apache/hadoop/hbase/HColumnDescriptor;)Lorg/apache/hadoop/hbase/HTableDescriptor;.
The root cause is Compatibility Issue. I came across a bug for this issue.
Bug 25591766 – HBase 1.2: java.lang.NoSuchMethodError: ….addFamily
In the bug it has been mentioned to set the below parameter, but already the below parameter is set and still facing the same issue.
gg.handler.
This is a well known compatibility problem with Cloudera HBase. The root cause is that the Cloudera HBase client libraries broke binary compatibility with the Apache HBase libraries. You must be on OGGBD 12.3.0.1.x or earlier.
What the problem is and how to work around it, is explained in the documentation:
Go to section 1.2.2.2
The OGGBD 12.3.1.1.0 release provided improved support by resolving the offending HBase method using Java reflection. Therefore, if you are ready to move to OGGBD 12.3.1.1.0 or later this issue is resolved automatically.
See the documentation:
Go to section 5.6.5
Cheers 🙂