Uploaded image for project: 'HBase'
  1. HBase
  2. HBASE-14070

Hybrid Logical Clocks for HBase

Add voteVotersWatch issueWatchersCreate sub-taskLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

    Details

    • Type: New Feature
    • Status: In Progress
    • Priority: Major
    • Resolution: Unresolved
    • Affects Version/s: None
    • Fix Version/s: None
    • Component/s: None
    • Labels:
      None

      Description

      HBase and Phoenix uses systems physical clock (PT) to give timestamps to events (read and writes). This works mostly when the system clock is strictly monotonically increasing and there is no cross-dependency between servers clocks. However we know that leap seconds, general clock skew and clock drift are in fact real.

      This jira proposes using Hybrid Logical Clocks (HLC) as an implementation of hybrid physical clock + a logical clock. HLC is best of both worlds where it keeps causality relationship similar to logical clocks, but still is compatible with NTP based physical system clock. HLC can be represented in 64bits.

      A design document is attached and also can be found here:
      https://docs.google.com/document/d/1LL2GAodiYi0waBz5ODGL4LDT4e_bXy8P9h6kWC05Bhw/edit#

        Attachments

        1. HBASE-14070.master.001.patch
          284 kB
          Sai Teja Ranuva
        2. HybridLogicalClocksforHBaseandPhoenix.docx
          24 kB
          Andrew Kyle Purtell
        3. HybridLogicalClocksforHBaseandPhoenix.pdf
          334 kB
          Enis Soztutar

        Issue Links

        1.
        Add Timestamp class to the hbase-common Sub-task Patch Available Sai Teja Ranuva Actions
        2.
        Hybrid Logical Clocks(placeholder for running tests) Sub-task Patch Available Sai Teja Ranuva Actions
        3.
        Initial patch (Core HLC) for public branch Sub-task Resolved Amit Patel Actions
        4.
        Undoing using the master's timestamp for meta updates Sub-task Resolved Amit Patel Actions
        5.
        Enable HLC for just the meta table Sub-task Resolved Amit Patel Actions
        6.
        Fix TestTimestampType failing on isLikelyOfType tests Sub-task Resolved Amit Patel Actions
        7.
        Update clock on region open and close Sub-task Resolved Amit Patel Actions
        8.
        Design improvements to Clock.java Sub-task Resolved Apekshit Sharma Actions
        9.
        Add clock type to proto message for HLC region open/close Sub-task Resolved Amit Patel Actions
        10.
        Update clock on replaying recovered edits Sub-task Resolved Amit Patel Actions
        11.
        Remove usages of masterSystemTime Sub-task Resolved Amit Patel Actions
        12.
        [HLC] Fix timing out tests in HBASE-14070.HLC branch Sub-task Resolved Amit Patel Actions
        13.
        [HLC] Finishing cleanups Sub-task Resolved Amit Patel Actions
        14.
        [HLC] Performance microbenchmarks Sub-task Patch Available Amit Patel Actions
        15.
        [HLC] Fix TestCellACLWithMultipleVersions timing out Sub-task Patch Available Amit Patel Actions
        16.
        Prevent clock from getting stuck after update() Sub-task Patch Available Apekshit Sharma Actions
        17.
        [HLC] Move clocks to a separate o.a.h.h.clocks package Sub-task Open Amit Patel Actions
        18.
        Improve HLC implementation performance Sub-task Open Unassigned Actions
        19.
        [HLC] Follow up work of updating clocks on assign/unassign (duplicate) Sub-task Resolved Unassigned Actions
        20.
        Design improvements to Clock.java (duplicate) Sub-task Resolved Apekshit Sharma Actions

          Activity

            People

            • Assignee:
              amit.patel Amit Patel
              Reporter:
              enis Enis Soztutar

              Dates

              • Created:
                Updated:

                Issue deployment