Home Forums HBase Hbase 0.96 – Dynamic loading of endpoint on table

Tagged: 

This topic contains 1 reply, has 1 voice, and was last updated by  Fanilo Andrianasolo 8 months, 1 week ago.

  • Creator
    Topic
  • #46551

    Fanilo Andrianasolo
    Participant

    Hi,
    Recently I have been testing coprocessors on Hbase 0.96 included with HDP 2.0 and the latest sandbox. I’ve successfully deployed an observer on a table via the shell.
    For the endpoint, I have been trying to edit the implementation of ColumnAggregationEndpoint for my needs. I then tried loading it the same way as the observer : by disabling the table, altering the descriptor and re-enabling the table.
    This is where things don’t go very well : my region doesn’t open. It is then blocked into being not enabled and not disabled at the same time, I can’t drop it nor assign it, the webUI says its state is FAILED_OPEN, and the command hbase hbck -fix etc… doesn’t help.

    I just replicated the experience in the Sandbox, and got a hand on the region server logging :
    2014-01-09 06:48:12,258 ERROR [RS_OPEN_REGION-sandbox:60020-1] handler.OpenRegionHandler: Failed open of region=test2,,1389276767014.52c72a06a6cebac705c78bfd2e05825f., starting to roll back the global memstore size.
    java.lang.IllegalStateException: Could not instantiate a region instance.
    [...]
    Caused by: java.lang.LinkageError: loader constraint violation in interface itable initialization: when resolving method “[...].endpoint.MyEndpoint.getService()Lcom/google/protobuf/Service;” the class loader (instance of org/apache/hadoop/hbase/util/CoprocessorClassLoader) of the current class, [...]/endpoint/MyEndpoint, and the class loader (instance of sun/misc/Launcher$AppClassLoader) for interface org/apache/hadoop/hbase/coprocessor/CoprocessorService have different Class objects for the type com/google/protobuf/Service used in the signature
    2014-01-09 06:48:12,259 DEBUG [RS_OPEN_REGION-sandbox:60020-1] zookeeper.ZKAssign: regionserver:60020-0×143777166470004 Transitioning 52c72a06a6cebac705c78bfd2e05825f from RS_ZK_REGION_OPENING to RS_ZK_REGION_FAILED_OPEN

    So I kinda get where the bug comes from…but
    1/ how to delete the tables (without restarting the master) ? do I need to manually delete some zNodes first ?
    2/ is there a more documented or simpler protobuf endpoint implementation that can be dynamically loaded to a table ? I do understand things around coprocessors are still moving

    Thanks !

Viewing 1 replies (of 1 total)

You must be logged in to reply to this topic.

  • Author
    Replies
  • #46581

    Fanilo Andrianasolo
    Participant

    EDIT : the problem with my endpoint was solved : I was building the endpoint jar with dependencies and dynamically loaded it to the table, and as the log says there are conflicting dependencies. Build without deps and everything goes fine.

    As for the regions blocked in FAILED_OPEN state because of this .jar, can’t reassign them nor alter them. Sometimes I manage to enable them again, then drop them but I have no idea why. I’m open to any ideas :)

    Collapse
Viewing 1 replies (of 1 total)