hbase-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Andrew Purtell (JIRA)" <j...@apache.org>
Subject [jira] [Comment Edited] (HBASE-14190) Assign system tables ahead of user region assignment
Date Mon, 10 Aug 2015 21:39:46 GMT

    [ https://issues.apache.org/jira/browse/HBASE-14190?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14680805#comment-14680805
] 

Andrew Purtell edited comment on HBASE-14190 at 8/10/15 9:38 PM:
-----------------------------------------------------------------

I may be missing something but all tables we are interested in here are in the 'hbase:' namespace.
Why not just assign all of that namespace first? The special casing seems like the wrong approach,
and is further problematic with stuff like this:

{code}
741	   if (UserProvider.isHBaseSecurityEnabled(conf)) {
742	      assignSystemTableIfExists(status, AccessControlLists.ACL_TABLE_NAME);
743	      assignSystemTableIfExists(status, VisibilityConstants.LABELS_TABLE_NAME);
744	
{code}

There's no guarantee at all security coprocessors are installed just because secure authentication
is enabled. I get the ...IfExists part, but isHBaseSecurityEnabled doesn't say anything about
if security coprocessors are installed.

What about future features or coprocessors that add additional tables to the 'hbase:' namespace
 with the expectation they are system tables that should be deployed ahead of user tables?


was (Author: apurtell):
I may be missing something but all tables we are interested in here are in the 'hbase:' namespace.
Why not just assign all of that namespace first? The special casing seems like the wrong approach,
and is further problematic with stuff like this:

{code}
741	   if (UserProvider.isHBaseSecurityEnabled(conf)) {
742	      assignSystemTableIfExists(status, AccessControlLists.ACL_TABLE_NAME);
743	      assignSystemTableIfExists(status, VisibilityConstants.LABELS_TABLE_NAME);
744	
{code}

There's no guarantee at all security coprocessors are installed just because secure authentication
is enabled.

> Assign system tables ahead of user region assignment
> ----------------------------------------------------
>
>                 Key: HBASE-14190
>                 URL: https://issues.apache.org/jira/browse/HBASE-14190
>             Project: HBase
>          Issue Type: Bug
>            Reporter: Ted Yu
>            Assignee: Ted Yu
>            Priority: Critical
>         Attachments: 14190-v5.txt, 14190-v6.txt
>
>
> Currently the namespace table region is assigned like user regions.
> I spent several hours working with a customer where master couldn't finish initialization.
> Even though master was restarted quite a few times, it went down with the following:
> {code}
> 2015-08-05 17:16:57,530 FATAL [hdpmaster1:60000.activeMasterManager] master.HMaster:
Master server abort: loaded coprocessors are: []
> 2015-08-05 17:16:57,530 FATAL [hdpmaster1:60000.activeMasterManager] master.HMaster:
Unhandled exception. Starting shutdown.
> java.io.IOException: Timedout 300000ms waiting for namespace table to be assigned
>   at org.apache.hadoop.hbase.master.TableNamespaceManager.start(TableNamespaceManager.java:104)
>   at org.apache.hadoop.hbase.master.HMaster.initNamespace(HMaster.java:985)
>   at org.apache.hadoop.hbase.master.HMaster.finishActiveMasterInitialization(HMaster.java:779)
>   at org.apache.hadoop.hbase.master.HMaster.access$500(HMaster.java:182)
>   at org.apache.hadoop.hbase.master.HMaster$1.run(HMaster.java:1646)
>   at java.lang.Thread.run(Thread.java:744)
> {code}
> During previous run(s), namespace table was created, hence leaving an entry in hbase:meta.
> The following if block in TableNamespaceManager#start() was skipped:
> {code}
>     if (!MetaTableAccessor.tableExists(masterServices.getConnection(),
>       TableName.NAMESPACE_TABLE_NAME)) {
> {code}
> TableNamespaceManager#start() spins, waiting for namespace region to be assigned.
> There was issue in master assigning user regions.
> We tried issuing 'assign' command from hbase shell which didn't work because of the following
check in MasterRpcServices#assignRegion():
> {code}
>       master.checkInitialized();
> {code}
> This scenario can be avoided if we assign hbase:namespace table after hbase:meta is assigned
but before user table region assignment.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message