hbase-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Ma, Sheng-Chen (Aven)" <shengchen...@esgyn.cn>
Subject how to Dynamic load of Coprocessors
Date Fri, 22 Jul 2016 08:12:48 GMT
Hi all:
I want to dynamic add coprocessor in order to not restart hbase.

Following is my code:
        Path path = new Path("/coprocessor_jars");
        FileSystem fs = FileSystem.get(conf);
        FileStatus[] status = fs.listStatus(path);
        Path[] listedPaths = FileUtil.stat2Paths(status);
        for (Path p : listedPaths) {
            if(p.getName().contains("test.jar")){
                hdfsPath = p;
            }
        }
        HBaseAdmin hadmin = new HBaseAdmin(conf);
        HTableDescriptor tableDesc = hadmin.getTableDescriptor("testTbl".getBytes());
        tableDesc.addCoprocessor("org.apache.hadoop.hbase.coprocessor.transactional.TestRegionEndpoint",
hdfsPath,
                Coprocessor.PRIORITY_USER, null);
        // tableDesc.removeCoprocessor("org.apache.hadoop.hbase.coprocessor.transactional.TrxRegionEndpoint");
        for (Entry<ImmutableBytesWritable, ImmutableBytesWritable> entry : tableDesc.getValues().entrySet())
{
            System.out.println(Bytes.toString(entry.getKey().get()) + " = " + Bytes.toString(entry.getValue().get()));
        }
        hadmin.disableTable("testTbl".getBytes());
        hadmin.modifyTable("testTbl", tableDesc);
        hadmin.enableTable("testTbl");

the syso print : coprocessor$1 = hdfs://192.168.0.17:17400/coprocessor_jars/test.jar|org.apache.hadoop.hbase.coprocessor.transactional.TestRegionEndpoint|1073741823|

and the remote side return Exception:
org.apache.hadoop.hbase.DoNotRetryIOException: org.apache.hadoop.hbase.DoNotRetryIOException:
Class org.apache.hadoop.hbase.coprocessor.transactional.TestRegionEndpoint cannot be loaded
Set hbase.table.sanity.checks to false at conf or table descriptor if you want to bypass sanity
checks

I use hbase 1.2 and the test.jar is not under hbase/lib, I just put the test.jar in hdfs.

If I add test.jar to hbase/lib but not restart hbase, the upon code still throw same exception.
If I add test.jar to hbase/lib and restart hbase, the upon code will exec successful.

But my requirement is not restart hbase.

Is there someone can give me a favor.

Thanks



Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message