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


Reply via email to