hbase-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Andrey Stepachev (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HBASE-13087) branch-1 isn't rolling upgradable from 0.98
Date Tue, 03 Mar 2015 18:16:04 GMT

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

Andrey Stepachev commented on HBASE-13087:
------------------------------------------

[~eclark] I understand your concern for meta. but keep in mind, that meta is only special
table which is handled separately. During first implementation (in table descriptors) I thought
about introducing special table for tables or state or whatever, but I dropped that idea.
It complicates table state management, because we need to keep two tables online to do most
operations, so we can't start recovering until we are onlined meta _and_ our new table. That
will definitely introduce more methods named like assignMeta which is definitely bad.
With introduction of meta replicas we can go further and prohibit requests to primary replica
and always try secondary for state requests first.
But in general I agree that may be this change is too early for branch-1. 

[~stack] As for steps for fixing that, here are two problems at once:
1. we need(?) to be compatible with 0.98 clients, which use zk for table states. That can
be solved by optionally duplicating states in readonly mode to zk (actually nobody doing writes
there, so basically it will not hurt clients, they just can be a bit lagged)
2. we faced with no sharing of knowledge of compatibility between master and regions. We can
solve that in two ways:
  - hackery way, adding 'mark' coprocessor to ServerLoad report, say 'compatCoprocessor:haveMeta,disabledZk,whateverWeHave'
and find out which region servers will be capable to handle new meta (i.e thay were upgraded)
  - send/request additional information once on registration or later by additional RPC which
allows to query (that definitely need to be with new jira):
     a) any config values if needed (say ask do regions server thinks zk assigment enabled?)
     b) list of compatibilities in strict enum-like list (meta, branch-1, release, amInZk...)
and master can make conscious decisions on what is going on.

just my 5 cents.


> branch-1 isn't rolling upgradable from 0.98
> -------------------------------------------
>
>                 Key: HBASE-13087
>                 URL: https://issues.apache.org/jira/browse/HBASE-13087
>             Project: HBase
>          Issue Type: Bug
>    Affects Versions: 1.1.0
>            Reporter: Elliott Clark
>            Assignee: Rajesh Nishtala
>            Priority: Blocker
>             Fix For: 1.1.0
>
>         Attachments: HBASE-13087-v1.txt
>
>
> {code}org.apache.hadoop.hbase.client.RetriesExhaustedWithDetailsException: Failed 1 action:
org.apache.hadoop.hbase.regionserver.NoSuchColumnFamilyException: Column family table does
not exist in region hbase:meta,,1.1588230740 in table 'hbase:meta', {TABLE_ATTRIBUTES =>
{IS_META => 'true', coprocessor$1 => '|org.apache.hadoop.hbase.coprocessor.MultiRowMutationEndpoint|536870911|'},
{NAME => 'info', BLOOMFILTER => 'NONE', VERSIONS => '10', IN_MEMORY => 'true',
KEEP_DELETED_CELLS => 'FALSE', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREVER', COMPRESSION
=> 'NONE', MIN_VERSIONS => '0', BLOCKCACHE => 'true', BLOCKSIZE => '8192', REPLICATION_SCOPE
=> '0'}
> 	at org.apache.hadoop.hbase.regionserver.HRegionServer.doBatchOp(HRegionServer.java:4513)
> 	at org.apache.hadoop.hbase.regionserver.HRegionServer.doNonAtomicRegionMutation(HRegionServer.java:3687)
> 	at org.apache.hadoop.hbase.regionserver.HRegionServer.multi(HRegionServer.java:3576)
> 	at org.apache.hadoop.hbase.protobuf.generated.ClientProtos$ClientService$2.callBlockingMethod(ClientProtos.java:30816)
> 	at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2029)
> 	at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:107)
> 	at org.apache.hadoop.hbase.ipc.RpcExecutor.consumerLoop(RpcExecutor.java:130)
> 	at org.apache.hadoop.hbase.ipc.RpcExecutor$1.run(RpcExecutor.java:107)
> 	at java.lang.Thread.run(Thread.java:745)
> : 1 time, 
> 	at org.apache.hadoop.hbase.client.AsyncProcess$BatchErrors.makeException(AsyncProcess.java:228)
> 	at org.apache.hadoop.hbase.client.AsyncProcess$BatchErrors.access$1700(AsyncProcess.java:208)
> 	at org.apache.hadoop.hbase.client.AsyncProcess.waitForAllPreviousOpsAndReset(AsyncProcess.java:1689)
> 	at org.apache.hadoop.hbase.client.BufferedMutatorImpl.backgroundFlushCommits(BufferedMutatorImpl.java:208)
> 	at org.apache.hadoop.hbase.client.BufferedMutatorImpl.flush(BufferedMutatorImpl.java:183)
> 	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1404)
> 	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:1017)
> 	at org.apache.hadoop.hbase.MetaTableAccessor.put(MetaTableAccessor.java:1123)
> 	at org.apache.hadoop.hbase.MetaTableAccessor.putToMetaTable(MetaTableAccessor.java:1113)
> 	at org.apache.hadoop.hbase.MetaTableAccessor.updateTableState(MetaTableAccessor.java:1436)
> 	at org.apache.hadoop.hbase.MetaTableAccessor.updateTableState(MetaTableAccessor.java:948)
> 	at org.apache.hadoop.hbase.master.TableStateManager.writeMetaState(TableStateManager.java:195)
> 	at org.apache.hadoop.hbase.master.TableStateManager.setTableState(TableStateManager.java:69)
> 	at org.apache.hadoop.hbase.master.AssignmentManager.setEnabledTable(AssignmentManager.java:3427)
> 	at org.apache.hadoop.hbase.master.HMaster.assignMeta(HMaster.java:903)
> 	at org.apache.hadoop.hbase.master.HMaster.finishActiveMasterInitialization(HMaster.java:698)
> 	at org.apache.hadoop.hbase.master.HMaster.access$500(HMaster.java:166)
> 	at org.apache.hadoop.hbase.master.HMaster$1.run(HMaster.java:1494)
> 	at java.lang.Thread.run(Thread.java:745)
> {code}



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

Mime
View raw message