Search code examples
hivehbase

HBase Storage Handler: UnknownProtocolException: No coprocessor found for name AuthenticationService hbase:meta


Error

Receiving this error with HBase Storage Handler in Hive when I run a query in a Kerberized environment. on HBase 1.5

Caused by: org.apache.hadoop.hbase.exceptions.UnknownProtocolException: org.apache.hadoop.hbase.exceptions.UnknownProtocolException: 
        No registered coprocessor service found for name AuthenticationService in region hbase:meta,,1
        at org.apache.hadoop.hbase.regionserver.HRegion.execService(HRegion.java:8499)
        at org.apache.hadoop.hbase.regionserver.RSRpcServices.execServiceOnRegion(RSRpcServices.java:2282)
        at org.apache.hadoop.hbase.regionserver.RSRpcServices.execService(RSRpcServices.java:2264)
        at org.apache.hadoop.hbase.protobuf.generated.ClientProtos$ClientService$2.callBlockingMethod(ClientProtos.java:36808)
        at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2399)
        at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:124)
        at org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run(RpcExecutor.java:311)
        at org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run(RpcExecutor.java:291)

The important part being:

No registered coprocessor service found for name AuthenticationService in region hbase:meta,,1

I did some reading and learned that AuthenticationService is provided by TokenProvider coprocessor.


Solution

  • In hbase-site.xml ensure these options are configured

    • hadoop.security.authentication
    • hbase.coprocessor.master.classes
    • hbase.coprocessor.region.classes

    Ensure values are configured as follows:

    <property>
        <name>hadoop.security.authentication</name>
        <value>kerberos</value>
    </property>
    <property>
       <name>hbase.coprocessor.master.classes</name>
       <value>org.apache.hadoop.hbase.security.access.AccessController</value>
    </property>
    <property>
       <name>hbase.coprocessor.region.classes</name>
       <value>org.apache.hadoop.hbase.security.token.TokenProvider,org.apache.hadoop.hbase.security.access.AccessController</value>
    </property>
    

    Note: In older versions of HBase the settinghbase.coprocessor.regionserver.classes was used, make sure you are using the correct; hbase.coprocessor.region.classes