hbase-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Anoop Sam John <anoo...@huawei.com>
Subject RE: Unable to add co-processor to table through HBase api
Date Fri, 19 Oct 2012 05:37:06 GMT

Anil
     Yes the same. You got the HTD from the master to your client code and just added the
CP into that Object. In order to reflect the change in the HBase cluster you need to call
the modifyTable API with your changed HTD. Master will change the table. When you enable back
the table, regions will get opened in the RSs and will be having the CP with that then.. 
:)  Hope now I make it clear for you..

-Anoop-
________________________________________
From: anil gupta [anilgupta84@gmail.com]
Sent: Friday, October 19, 2012 11:01 AM
To: user@hbase.apache.org
Subject: Re: Unable to add co-processor to table through HBase api

Hi Guys,

Do you mean to say that i need to call the following method after the call
to addCoprocessor method:

public void *modifyTable*(byte[] tableName,
                        HTableDescriptor
<http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/HTableDescriptor.html>
htd)
                 throws IOException
<http://download.oracle.com/javase/6/docs/api/java/io/IOException.html?is-external=true>


http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/client/HBaseAdmin.html#modifyTable%28byte[],%20org.apache.hadoop.hbase.HTableDescriptor%29

Thanks,
Anil Gupta

On Thu, Oct 18, 2012 at 10:23 PM, Ramkrishna.S.Vasudevan <
ramkrishna.vasudevan@huawei.com> wrote:

> I can attach the code that I tried.  Here as the HTD is getting modified we
> may need to call modifyTable().
> My testclass did try this while doing creation of table itself.
>
> I will attach shortly.
>
> Regards
> Ram
>
> > -----Original Message-----
> > From: anil gupta [mailto:anilgupta84@gmail.com]
> > Sent: Friday, October 19, 2012 10:29 AM
> > To: user@hbase.apache.org
> > Subject: Re: Unable to add co-processor to table through HBase api
> >
> > Hi Anoop,
> >
> > Sorry, i am unable to understand what you mean by "have to modify the
> > table
> > calling Admin API??". Am i missing some other calls in my code?
> >
> > Thanks,
> > Anil Gupta
> >
> > On Thu, Oct 18, 2012 at 9:43 PM, Anoop Sam John <anoopsj@huawei.com>
> > wrote:
> >
> > >
> > >
> > >
> > >hAdmin.getTableDescriptor(Bytes.toBytes(tableName)).addCoprocessor(cla
> > ssName,
> > >               new Path("hdfs://hbasecluster/tmp/hbase_cdh4.jar"),
> > > Coprocessor.PRIORITY_USER,map);
> > >
> > > Anil,
> > >
> > > Don't you have to modify the table calling Admin API??  !!!!!  Not
> > seeing
> > > that code here...
> > >
> > > -Anoop-
> > >
> > > ________________________________________
> > > From: anil gupta [anilgupta84@gmail.com]
> > > Sent: Friday, October 19, 2012 2:46 AM
> > > To: user@hbase.apache.org
> > > Subject: Re: Unable to add co-processor to table through HBase api
> > >
> > > Hi Folks,
> > >
> > > Still, i am unable to add the co-processors through HBase client api.
> > This
> > > time i tried loading the coprocessor by providing the jar path along
> > with
> > > parameters. But, it failed.
> > > I was able to add the same coprocessor to the table through HBase
> > shell.
> > > I also dont see any logs regarding adding coprocessors in
> > regionservers
> > > when i try to add the co-processor through api.I strongly feel that
> > HBase
> > > client api for adding coprocessor seems to be broken. Please let me
> > know if
> > > the code below seems to be problematic.
> > >
> > > Here is the code i used to add the coprocessor through HBase api:
> > >     private static void modifyTable() throws IOException
> > >     {
> > >     Configuration conf = HBaseConfiguration.create();
> > >     HBaseAdmin hAdmin = new HBaseAdmin(conf);
> > >     String tableName = "txn";
> > >     hAdmin.disableTable(tableName);
> > >     if(!hAdmin.isTableEnabled(tableName))
> > >     {
> > >       System.out.println("Trying to add coproc to table"); // using
> > err so
> > > that it's easy to read this on eclipse console.
> > >       HashMap<String, String> map = new HashMap<String,String>();
> > >       map.put("arg1", "batchdate");
> > >       String className =
> > >
> > "com.intuit.ihub.hbase.poc.coprocessor.observer.IhubTxnRegionObserver";
> > >
> > >
> > >
> > hAdmin.getTableDescriptor(Bytes.toBytes(tableName)).addCoprocessor(clas
> > sName,
> > >               new Path("hdfs://hbasecluster/tmp/hbase_cdh4.jar"),
> > > Coprocessor.PRIORITY_USER,map);
> > >
> > >       if(
> > >
> > >
> > hAdmin.getTableDescriptor(Bytes.toBytes(tableName)).hasCoprocessor(clas
> > sName)
> > >               )
> > >       {
> > >         System.err.println("YIPPPPPPPPPIEEEEE!!!!!!!");
> > >       }
> > >       hAdmin.enableTable(tableName);
> > >
> > >     }
> > >     hAdmin.close();
> > >    }
> > >
> > > Thanks,
> > > Anil Gupta
> > >
> > > On Wed, Oct 17, 2012 at 9:27 PM, Ramkrishna.S.Vasudevan <
> > > ramkrishna.vasudevan@huawei.com> wrote:
> > >
> > > > Do let me know if you are stuck up.  May be I did not get your
> > actual
> > > > problem.
> > > >
> > > > All the best.
> > > >
> > > > Regards
> > > > Ram
> > > >
> > > > > -----Original Message-----
> > > > > From: anil gupta [mailto:anilgupta84@gmail.com]
> > > > > Sent: Wednesday, October 17, 2012 11:34 PM
> > > > > To: user@hbase.apache.org
> > > > > Subject: Re: Unable to add co-processor to table through HBase
> > api
> > > > >
> > > > > Hi Ram,
> > > > >
> > > > > The table exists and I don't get any error while running the
> > program(i
> > > > > would get an error if the table did not exist). I am running a
> > > > > distributed
> > > > > cluster.
> > > > >
> > > > > Tried following additional ways also:
> > > > >
> > > > >    1. I tried loading the AggregationImplementation coproc.
> > > > >    2. I also tried adding the coprocs while the table is enabled.
> > > > >
> > > > >
> > > > > Also had a look at the JUnit test cases and could not find any
> > > > > difference.
> > > > >
> > > > > I am going to try adding the coproc along with jar in Hdfs and
> > see what
> > > > > happens.
> > > > >
> > > > > Thanks,
> > > > > Anil Gupta
> > > > >
> > > > > On Tue, Oct 16, 2012 at 11:44 PM, Ramkrishna.S.Vasudevan <
> > > > > ramkrishna.vasudevan@huawei.com> wrote:
> > > > >
> > > > > > I tried out a sample test class.  It is working properly.  I
> > just
> > > > > have a
> > > > > > doubt whether you are doing the
> > > > > > Htd.addCoprocessor() step before creating the table?  Try that
> > way
> > > > > hope it
> > > > > > should work.
> > > > > >
> > > > > > Regards
> > > > > > Ram
> > > > > >
> > > > > > > -----Original Message-----
> > > > > > > From: anil gupta [mailto:anilgupta84@gmail.com]
> > > > > > > Sent: Wednesday, October 17, 2012 4:05 AM
> > > > > > > To: user@hbase.apache.org
> > > > > > > Subject: Unable to add co-processor to table through HBase
> > api
> > > > > > >
> > > > > > > Hi All,
> > > > > > >
> > > > > > > I would like to add a RegionObserver to a HBase table through
> > HBase
> > > > > > > api. I
> > > > > > > don't want to put this RegionObserver as a user or system
co-
> > > > > processor
> > > > > > > in
> > > > > > > hbase-site.xml since this is specific to a table. So, option
> > of
> > > > > using
> > > > > > > hbase
> > > > > > > properties is out. I have already copied the jar file in
the
> > > > > classpath
> > > > > > > of
> > > > > > > region server and restarted the cluster.
> > > > > > >
> > > > > > > Can any one point out the problem in following code for
> > adding the
> > > > > > > co-processor to the table:
> > > > > > >     private void modifyTable(String name) throws IOException
> > > > > > >     {
> > > > > > >     Configuration conf = HBaseConfiguration.create();
> > > > > > >     HBaseAdmin hAdmin = new HBaseAdmin(conf);
> > > > > > >     hAdmin.disableTable("txn_subset");
> > > > > > >     if(!hAdmin.isTableEnabled("txn_subset"))
> > > > > > >     {
> > > > > > >       System.err.println("Trying to add coproc to table");
//
> > using
> > > > > err
> > > > > > > so
> > > > > > > that it's easy to read this on eclipse console.
> > > > > > >
> > > > > > >
> > > > >
> > hAdmin.getTableDescriptor(Bytes.toBytes("txn_subset")).addCoprocessor("
> > > > > > >
> > com.intuit.hbase.poc.coprocessor.observer.IhubTxnRegionObserver");
> > > > > > >       if(
> > > > > > >
> > > > >
> > hAdmin.getTableDescriptor(Bytes.toBytes("txn_subset")).hasCoprocessor("
> > > > > > >
> > com.intuit.hbase.poc.coprocessor.observer.IhubTxnRegionObserver")
> > > > > > > )
> > > > > > >       {
> > > > > > >         System.err.println("YIPPPPPPPPPIEEEEE!!!!!!!");
> > > > > > >       }
> > > > > > >       hAdmin.enableTable("ihub_txn_subset");
> > > > > > >     }
> > > > > > >     hAdmin.close();
> > > > > > >         }*
> > > > > > > *
> > > > > > > --
> > > > > > > Thanks & Regards,
> > > > > > > Anil Gupta
> > > > > >
> > > > > >
> > > > >
> > > > >
> > > > > --
> > > > > Thanks & Regards,
> > > > > Anil Gupta
> > > >
> > > >
> > >
> > >
> > > --
> > > Thanks & Regards,
> > > Anil Gupta
> > >
> >
> >
> >
> > --
> > Thanks & Regards,
> > Anil Gupta
>
>


--
Thanks & Regards,
Anil Gupta
Mime
View raw message