[
https://issues.apache.org/jira/browse/HBASE-5487?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13556116#comment-13556116
]
Jonathan Hsieh commented on HBASE-5487:
---------------------------------------
bq. My main point is that currently two external region states in ZK and a
table, plus two complex internal states in server and master, are a root of
some non-trivial part of all evil. Especially the nature of ZK state, that
comes and goes. Imho we should remove one of them from being actively managed.
bq. ZK has notifications and seems better suited for locking/atomic updates;
w.r.t. availability it has no disadvantage since everything (e.g. locating the
root) fails without ZK anyway, even if we do remove state machines from there.
bq. System tables are more native to HBase and have built-in WAL, plus have
advantages for recovery.
ZK notifications are useful when there are two way communications -- log
splitting, region server initiated splits. I do agree that opens and closes
seems more complicated than necessary.
bq. Maybe instead of WAL we can use ZK as universal source of region state (w/o
assorted transient nodes e.g. one node per region that is always there, or
maybe two if we want to use lock with lease to unassign) and mirror it to
system table that is only used for recovery like you describe, or when ZK state
disappears?
bq. Otherwise I think we should just use system table as universal source of
region state and get rid of ZK region state.
bq. With one source of truth master and server logic can probably be dumber.
Simpler, not dumber. :)
The 0.20/0.89 version of the master actually had most things in meta -- and
there are definitely some trade-offs with that approach. In the transition to
the 0.90 style master we traded some pain points for new ones. If we change
this again we need to make sure we keep those previous ones in mind to not
duplicate the worst of them again.
Is there any chance we could get a high level design deck/doc that illustrates
these processes currently and what looks like after we move to this proposed
FATE-like mechanism? Also, what operations would eventually get ported to this
mechanism? I think discussion and an example at the design/rpc comms level
would help a whole lot by grounding this conversion in reality and not require
diving into the code. Once we basically agree on design, code reviews would be
easier because they'd be focused on the implementation matching the design.
> Generic framework for Master-coordinated tasks
> ----------------------------------------------
>
> Key: HBASE-5487
> URL: https://issues.apache.org/jira/browse/HBASE-5487
> Project: HBase
> Issue Type: New Feature
> Components: master, regionserver, Zookeeper
> Affects Versions: 0.94.0
> Reporter: Mubarak Seyed
> Assignee: Nick Dimiduk
>
> Need a framework to execute master-coordinated tasks in a fault-tolerant
> manner.
> Master-coordinated tasks such as online-scheme change and delete-range
> (deleting region(s) based on start/end key) can make use of this framework.
> The advantages of framework are
> 1. Eliminate repeated code in Master, ZooKeeper tracker and Region-server for
> master-coordinated tasks
> 2. Ability to abstract the common functions across Master -> ZK and RS -> ZK
> 3. Easy to plugin new master-coordinated tasks without adding code to core
> components
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira