You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@hbase.apache.org by anil gupta <an...@gmail.com> on 2012/10/17 00:35:05 UTC

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

Re: Unable to add co-processor to table through HBase api

Posted by anil gupta <an...@gmail.com>.
I forgot to mention that I am using HBase0.92.1

On Tue, Oct 16, 2012 at 5:35 PM, anil gupta <an...@gmail.com> wrote:

> 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

RE: Unable to add co-processor to table through HBase api

Posted by "Ramkrishna.S.Vasudevan" <ra...@huawei.com>.
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


RE: Unable to add co-processor to table through HBase api

Posted by "Ramkrishna.S.Vasudevan" <ra...@huawei.com>.
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


RE: Unable to add co-processor to table through HBase api

Posted by "Ramkrishna.S.Vasudevan" <ra...@huawei.com>.
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 <an...@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


RE: Unable to add co-processor to table through HBase api

Posted by "Ramkrishna.S.Vasudevan" <ra...@huawei.com>.
Yes you are right. modifyTable has to be called.

public class TestClass { 
  private static HBaseTestingUtility UTIL = new HBaseTestingUtility(); 
  @BeforeClass 
  public static void setupBeforeClass() throws Exception { 
    Configuration conf = UTIL.getConfiguration();   
    
  } 
  
  @Before 
  public void setUp() throws Exception{ 
    UTIL.startMiniCluster(1); 
  } 
  
  @Test 
  public void testSampe() throws Exception{ 
    HBaseAdmin admin = UTIL.getHBaseAdmin(); 
    Configuration conf = UTIL.getConfiguration(); 
    ZooKeeperWatcher zkw = HBaseTestingUtility.getZooKeeperWatcher(UTIL); 
    String userTableName = "testSampe"; 
    HTableDescriptor htd = new HTableDescriptor(userTableName); 
 
//htd.addCoprocessor("org.apache.hadoop.hbase.regionserver.MockRegionObserve
r"); 
    HColumnDescriptor hcd = new HColumnDescriptor("col"); 
    htd.addFamily(hcd); 
    admin.createTable(htd); 
    ZKAssign.blockUntilNoRIT(zkw); 
    
    admin.disableTable(userTableName); 
 
htd.addCoprocessor("org.apache.hadoop.hbase.regionserver.MockRegionObserver"
); 
    admin.modifyTable(Bytes.toBytes(userTableName), htd); 
    admin.enableTable(userTableName); 
    HTable table = new HTable(conf, userTableName); 
    
    HTableDescriptor tableDescriptor =
admin.getTableDescriptor(Bytes.toBytes(userTableName)); 
    boolean hasCoprocessor =
tableDescriptor.hasCoprocessor("org.apache.hadoop.hbase.regionserver.MockReg
ionObserver"); 
    System.out.println(hasCoprocessor); 
    
    
    
  } 
}

If you comment the modifyTable() you will not be able to see the coprocessor
added.
That's what I told in my previous reply itself like try doing this while
createTable itself.  If you want to add it later then its thro modify table
you can do because it involves changes the HTD.

Regards
Ram

> -----Original Message-----
> From: anil gupta [mailto:anilgupta84@gmail.com]
> Sent: Friday, October 19, 2012 11:02 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/HTableDescript
> or.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/HBaseAdm
> in.html#modifyTable%28byte[],%20org.apache.hadoop.hbase.HTableDescripto
> r%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
> <an...@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


RE: Unable to add co-processor to table through HBase api

Posted by Anoop Sam John <an...@huawei.com>.
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 <an...@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

RE: Unable to add co-processor to table through HBase api

Posted by "Ramkrishna.S.Vasudevan" <ra...@huawei.com>.
Ok Anil.. Not a problem.. My intention was to just see if the api was
working during createtable so that it will help you.

Regards
Ram

> -----Original Message-----
> From: anil gupta [mailto:anilgupta84@gmail.com]
> Sent: Friday, October 19, 2012 11:22 AM
> To: user@hbase.apache.org
> Subject: Re: Unable to add co-processor to table through HBase api
> 
> Thanks a lot Guys. I really appreciate you help. I'll try this change
> in
> the morning and let you know the outcome.
> 
> @Ram: Actually, i was trying to add the coprocessor to a per-existing
> table. I think yesterday you assumed that I am trying to add the
> coprocessor while creating the table. That's why there was a confusion
> between us.
> 
> On Thu, Oct 18, 2012 at 10:40 PM, Ramkrishna.S.Vasudevan <
> ramkrishna.vasudevan@huawei.com> wrote:
> 
> > Yes you are right. modifyTable has to be called.
> >
> > public class TestClass {
> >   private static HBaseTestingUtility UTIL = new
> HBaseTestingUtility();
> >   @BeforeClass
> >   public static void setupBeforeClass() throws Exception {
> >     Configuration conf = UTIL.getConfiguration();
> >
> >   }
> >
> >   @Before
> >   public void setUp() throws Exception{
> >     UTIL.startMiniCluster(1);
> >   }
> >
> >   @Test
> >   public void testSampe() throws Exception{
> >     HBaseAdmin admin = UTIL.getHBaseAdmin();
> >     Configuration conf = UTIL.getConfiguration();
> >     ZooKeeperWatcher zkw =
> HBaseTestingUtility.getZooKeeperWatcher(UTIL);
> >     String userTableName = "testSampe";
> >     HTableDescriptor htd = new HTableDescriptor(userTableName);
> >
> >
> >
> //htd.addCoprocessor("org.apache.hadoop.hbase.regionserver.MockRegionOb
> serve
> > r");
> >     HColumnDescriptor hcd = new HColumnDescriptor("col");
> >     htd.addFamily(hcd);
> >     admin.createTable(htd);
> >     ZKAssign.blockUntilNoRIT(zkw);
> >
> >     admin.disableTable(userTableName);
> >
> >
> >
> htd.addCoprocessor("org.apache.hadoop.hbase.regionserver.MockRegionObse
> rver"
> > );
> >     admin.modifyTable(Bytes.toBytes(userTableName), htd);
> >     admin.enableTable(userTableName);
> >     HTable table = new HTable(conf, userTableName);
> >
> >     HTableDescriptor tableDescriptor =
> > admin.getTableDescriptor(Bytes.toBytes(userTableName));
> >     boolean hasCoprocessor =
> >
> >
> tableDescriptor.hasCoprocessor("org.apache.hadoop.hbase.regionserver.Mo
> ckReg
> > ionObserver");
> >     System.out.println(hasCoprocessor);
> >
> >
> >
> >   }
> > }
> >
> > If you comment the modifyTable() you will not be able to see the
> > coprocessor
> > added.
> > That's what I told in my previous reply itself like try doing this
> while
> > createTable itself.  If you want to add it later then its thro modify
> table
> > you can do because it involves changes the HTD.
> >
> > Regards
> > Ram
> >
> > > -----Original Message-----
> > > From: anil gupta [mailto:anilgupta84@gmail.com]
> > > Sent: Friday, October 19, 2012 11:02 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/HTableDescript
> > > or.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/HBaseAdm
> > >
> in.html#modifyTable%28byte[],%20org.apache.hadoop.hbase.HTableDescripto
> > > r%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
> > > <an...@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
> >
> >
> 
> 
> --
> Thanks & Regards,
> Anil Gupta


Re: Unable to add co-processor to table through HBase api

Posted by anil gupta <an...@gmail.com>.
It worked. :)

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

> Ok Anil.. Not a problem.. My intention was to just see if the api was
> working during createtable so that it will help you.
>
> Regards
> Ram
>
> > -----Original Message-----
> > From: anil gupta [mailto:anilgupta84@gmail.com]
> > Sent: Friday, October 19, 2012 11:22 AM
> > To: user@hbase.apache.org
> > Subject: Re: Unable to add co-processor to table through HBase api
> >
> > Thanks a lot Guys. I really appreciate you help. I'll try this change
> > in
> > the morning and let you know the outcome.
> >
> > @Ram: Actually, i was trying to add the coprocessor to a per-existing
> > table. I think yesterday you assumed that I am trying to add the
> > coprocessor while creating the table. That's why there was a confusion
> > between us.
> >
> > On Thu, Oct 18, 2012 at 10:40 PM, Ramkrishna.S.Vasudevan <
> > ramkrishna.vasudevan@huawei.com> wrote:
> >
> > > Yes you are right. modifyTable has to be called.
> > >
> > > public class TestClass {
> > >   private static HBaseTestingUtility UTIL = new
> > HBaseTestingUtility();
> > >   @BeforeClass
> > >   public static void setupBeforeClass() throws Exception {
> > >     Configuration conf = UTIL.getConfiguration();
> > >
> > >   }
> > >
> > >   @Before
> > >   public void setUp() throws Exception{
> > >     UTIL.startMiniCluster(1);
> > >   }
> > >
> > >   @Test
> > >   public void testSampe() throws Exception{
> > >     HBaseAdmin admin = UTIL.getHBaseAdmin();
> > >     Configuration conf = UTIL.getConfiguration();
> > >     ZooKeeperWatcher zkw =
> > HBaseTestingUtility.getZooKeeperWatcher(UTIL);
> > >     String userTableName = "testSampe";
> > >     HTableDescriptor htd = new HTableDescriptor(userTableName);
> > >
> > >
> > >
> > //htd.addCoprocessor("org.apache.hadoop.hbase.regionserver.MockRegionOb
> > serve
> > > r");
> > >     HColumnDescriptor hcd = new HColumnDescriptor("col");
> > >     htd.addFamily(hcd);
> > >     admin.createTable(htd);
> > >     ZKAssign.blockUntilNoRIT(zkw);
> > >
> > >     admin.disableTable(userTableName);
> > >
> > >
> > >
> > htd.addCoprocessor("org.apache.hadoop.hbase.regionserver.MockRegionObse
> > rver"
> > > );
> > >     admin.modifyTable(Bytes.toBytes(userTableName), htd);
> > >     admin.enableTable(userTableName);
> > >     HTable table = new HTable(conf, userTableName);
> > >
> > >     HTableDescriptor tableDescriptor =
> > > admin.getTableDescriptor(Bytes.toBytes(userTableName));
> > >     boolean hasCoprocessor =
> > >
> > >
> > tableDescriptor.hasCoprocessor("org.apache.hadoop.hbase.regionserver.Mo
> > ckReg
> > > ionObserver");
> > >     System.out.println(hasCoprocessor);
> > >
> > >
> > >
> > >   }
> > > }
> > >
> > > If you comment the modifyTable() you will not be able to see the
> > > coprocessor
> > > added.
> > > That's what I told in my previous reply itself like try doing this
> > while
> > > createTable itself.  If you want to add it later then its thro modify
> > table
> > > you can do because it involves changes the HTD.
> > >
> > > Regards
> > > Ram
> > >
> > > > -----Original Message-----
> > > > From: anil gupta [mailto:anilgupta84@gmail.com]
> > > > Sent: Friday, October 19, 2012 11:02 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/HTableDescript
> > > > or.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/HBaseAdm
> > > >
> > in.html#modifyTable%28byte[],%20org.apache.hadoop.hbase.HTableDescripto
> > > > r%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
> > > > <an...@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
> > >
> > >
> >
> >
> > --
> > Thanks & Regards,
> > Anil Gupta
>
>


-- 
Thanks & Regards,
Anil Gupta

Re: Unable to add co-processor to table through HBase api

Posted by anil gupta <an...@gmail.com>.
Thanks a lot Guys. I really appreciate you help. I'll try this change in
the morning and let you know the outcome.

@Ram: Actually, i was trying to add the coprocessor to a per-existing
table. I think yesterday you assumed that I am trying to add the
coprocessor while creating the table. That's why there was a confusion
between us.

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

> Yes you are right. modifyTable has to be called.
>
> public class TestClass {
>   private static HBaseTestingUtility UTIL = new HBaseTestingUtility();
>   @BeforeClass
>   public static void setupBeforeClass() throws Exception {
>     Configuration conf = UTIL.getConfiguration();
>
>   }
>
>   @Before
>   public void setUp() throws Exception{
>     UTIL.startMiniCluster(1);
>   }
>
>   @Test
>   public void testSampe() throws Exception{
>     HBaseAdmin admin = UTIL.getHBaseAdmin();
>     Configuration conf = UTIL.getConfiguration();
>     ZooKeeperWatcher zkw = HBaseTestingUtility.getZooKeeperWatcher(UTIL);
>     String userTableName = "testSampe";
>     HTableDescriptor htd = new HTableDescriptor(userTableName);
>
>
> //htd.addCoprocessor("org.apache.hadoop.hbase.regionserver.MockRegionObserve
> r");
>     HColumnDescriptor hcd = new HColumnDescriptor("col");
>     htd.addFamily(hcd);
>     admin.createTable(htd);
>     ZKAssign.blockUntilNoRIT(zkw);
>
>     admin.disableTable(userTableName);
>
>
> htd.addCoprocessor("org.apache.hadoop.hbase.regionserver.MockRegionObserver"
> );
>     admin.modifyTable(Bytes.toBytes(userTableName), htd);
>     admin.enableTable(userTableName);
>     HTable table = new HTable(conf, userTableName);
>
>     HTableDescriptor tableDescriptor =
> admin.getTableDescriptor(Bytes.toBytes(userTableName));
>     boolean hasCoprocessor =
>
> tableDescriptor.hasCoprocessor("org.apache.hadoop.hbase.regionserver.MockReg
> ionObserver");
>     System.out.println(hasCoprocessor);
>
>
>
>   }
> }
>
> If you comment the modifyTable() you will not be able to see the
> coprocessor
> added.
> That's what I told in my previous reply itself like try doing this while
> createTable itself.  If you want to add it later then its thro modify table
> you can do because it involves changes the HTD.
>
> Regards
> Ram
>
> > -----Original Message-----
> > From: anil gupta [mailto:anilgupta84@gmail.com]
> > Sent: Friday, October 19, 2012 11:02 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/HTableDescript
> > or.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/HBaseAdm
> > in.html#modifyTable%28byte[],%20org.apache.hadoop.hbase.HTableDescripto
> > r%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
> > <an...@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
>
>


-- 
Thanks & Regards,
Anil Gupta

Re: Unable to add co-processor to table through HBase api

Posted by anil gupta <an...@gmail.com>.
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 <an...@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

Re: Unable to add co-processor to table through HBase api

Posted by anil gupta <an...@gmail.com>.
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 <an...@huawei.com> wrote:

>
>
> >hAdmin.getTableDescriptor(Bytes.toBytes(tableName)).addCoprocessor(className,
>               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(className,
>               new Path("hdfs://hbasecluster/tmp/hbase_cdh4.jar"),
> Coprocessor.PRIORITY_USER,map);
>
>       if(
>
> hAdmin.getTableDescriptor(Bytes.toBytes(tableName)).hasCoprocessor(className)
>               )
>       {
>         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

RE: Unable to add co-processor to table through HBase api

Posted by Anoop Sam John <an...@huawei.com>.
>hAdmin.getTableDescriptor(Bytes.toBytes(tableName)).addCoprocessor(className,
              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(className,
              new Path("hdfs://hbasecluster/tmp/hbase_cdh4.jar"),
Coprocessor.PRIORITY_USER,map);

      if(
hAdmin.getTableDescriptor(Bytes.toBytes(tableName)).hasCoprocessor(className)
              )
      {
        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

Re: Unable to add co-processor to table through HBase api

Posted by anil gupta <an...@gmail.com>.
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(className,
              new Path("hdfs://hbasecluster/tmp/hbase_cdh4.jar"),
Coprocessor.PRIORITY_USER,map);

      if(
hAdmin.getTableDescriptor(Bytes.toBytes(tableName)).hasCoprocessor(className)
              )
      {
        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

Re: Unable to add co-processor to table through HBase api

Posted by anil gupta <an...@gmail.com>.
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