• 【转】华为Hbase二级索引(Secondary Index)细节分析


    华为在HBTC 2012上由其高级技术经理Anoop Sam John透露了其二级索引方案,这在业界引起极大的反响,甚至有人认为,如果华为早点公布这个方案,hbase的某些问题早就解决了。其核心思想是保证索引表和主表在同一个region server上。

    更新:目前该方案华为已经开源,详见:https://github.com/Huawei-Hadoop/hindex

    下面来对其方案做一个分析。

    1.整体架构

    这个架构在Client Ext中设定索引细节,在Balancer中收集信息,在Coprocessor中管理二级索引数据。

    architecture  华为hbase二级索引(secondary index)细节分析

    2.表创建

    在创建表的时候,在同一个region server上创建索引表,且一一对应。

    tableCreate 华为hbase二级索引(secondary index)细节分析

    3.插入操作

    在主表中插入某条数据后,用Coprocessor将索引列写到索引表中去,写道索引表中的数据的主键为:region开始key+索引名+索引列值+主表row key。这么做,是为了让其在同一个分布规则下,索引表会跟主表在通过region server上,在查询的时候就可以少一次rpc。

    putOperation 华为hbase二级索引(secondary index)细节分析

    4.scan操作

    一个查询到来的时候,通过coprocessor钩子,先从索引表中查询范围row,然后再从主表中相关row中扫描获得最终数据。

    scan 华为hbase二级索引(secondary index)细节分析

    5. split操作处理

    为了使主表和索引表在同一个RS上,要禁用索引表的自动和手动split,只能由主表split的时候触发,当主表split的时候,对索引表按其对应数据进行划分,同时,对索引表的第二个daughter split的row key的前面部分修改为对应的主键的row key。

    split 华为hbase二级索引(secondary index)细节分析

    6. 性能

    查询性能极大提升,插入性能下降10%左右

    performance1 华为hbase二级索引(secondary index)细节分析

    performance2 华为hbase二级索引(secondary index)细节分析

    总结,本文对华为hbase使用coprocessor进行二级索引的方案的创建表,插入数据,查询数据的步骤进行了一个粗略分析,以窥其全貌。在使用的时候,可以作为一个参考。

    原文出处:邓的博客

  • 相关阅读:
    ZJCTF预赛一个.py的逆向题
    if(a)是什么意思
    整理OD一些快捷键和零碎知识点
    NSCTF-Reverse02 超级详细且简单的办法搞定
    CTF实验吧——证明自己吧
    Beat our dice game and get the flag 击败我们的骰子游戏拿到旗子
    CTF-Keylead(ASIS CTF 2015)
    【第三届强网杯】两道杂项题的wp
    【实验吧】该题不简单——writeup
    嵩天老师python网课爬虫实例1的问题和解决方法
  • 原文地址:https://www.cnblogs.com/nanxin521/p/4150510.html
Copyright © 2020-2023  润新知