[
https://issues.apache.org/jira/browse/HBASE-12035?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Andrey Stepachev updated HBASE-12035:
-------------------------------------
Attachment: HBASE-12035.patch
First attempt to move master out of read/whatever path.
With this patch I introduce new column family to META. This family contains
table information like state and htabledescriptor.
That looks like { tableName -> state: TableState, descriptor: HTableDescriptor
} stored in separate column family. That has great advantage:
1. Old clients would not break, if they use correct column family in scans
2. We can extend this column family with other information if needed
3. Scans for all families return table row first.
How that works:
1. I have wrapped TableDescriptors with MetaBackedTableDescriptors, that is
simple proxy that intersepts all updates of descriptors and copy them to META
after they been modified in hfds.
2. Right after meta onlined master runs sync and updates META with information
from hdfs.
Here is still need to be added some fault tolerance, but basically that could
work well (we don't remove master RPC for table states, we can use strict
queries still if needed, so META here can be used with a sense of 'eventually'
consistent data, because primary data stored in hdfs).
[~enis], [~stack], can you look at that? Let's clean up the mess I introduced
with moving states from zk :)
(sorry, was away, relocated to new country, had no time to do things)
Thank you.
> Client does an RPC to master everytime a region is relocated
> ------------------------------------------------------------
>
> Key: HBASE-12035
> URL: https://issues.apache.org/jira/browse/HBASE-12035
> Project: HBase
> Issue Type: Improvement
> Reporter: Enis Soztutar
> Assignee: Andrey Stepachev
> Priority: Critical
> Fix For: 2.0.0
>
> Attachments: HBASE-12035.patch
>
>
> HBASE-7767 moved table enabled|disabled state to be kept in hdfs instead of
> zookeeper. isTableDisabled() which is used in
> HConnectionImplementation.relocateRegion() now became a master RPC call
> rather than a zookeeper client call. Since we do relocateRegion() calls
> everytime we want to relocate a region (region moved, RS down, etc) this
> implies that when the master is down, the some of the clients for uncached
> regions will be affected.
> See HBASE-7767 and HBASE-11974 for some more background.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)