e-works数字化企业网  »  文章频道  »  基础信息化  »  大数据

Hbase 技术细节笔记(上)

2017/10/13    来源:网络大数据    作者:佚名      
关键字:Hbase  Hbase 技术  
最近在跟进Hbase的相关工作,由于之前对Hbase并不怎么了解,因此系统地学习了下Hbase,为了加深对Hbase的理解,对相关知识点做了笔记,并在组内进行了Hbase相关技术的分享。

    3.2、Rowkey的概念
 
    Rowkey的概念和mysql中的主键是完全一样的,Hbase使用Rowkey来唯一的区分某一行的数据。
 
    由于Hbase只支持3中查询方式:
 
    基于Rowkey的单行查询
 
    基于Rowkey的范围扫描
 
    全表扫描
 
    因此,Rowkey对Hbase的性能影响非常大,Rowkey的设计就显得尤为的重要。设计的时候要兼顾基于Rowkey的单行查询也要键入Rowkey的范围扫描。具体Rowkey要如何设计后续会整理相关的文章做进一步的描述。这里大家只要有一个概念就是Rowkey的设计极为重要。
 
    3.3、Region的概念
 
    Region的概念和关系型数据库的分区或者分片差不多。
 
    Hbase会将一个大表的数据基于Rowkey的不同范围分配到不通的Region中,每个Region负责一定范围的数据访问和存储。这样即使是一张巨大的表,由于被切割到不通的region,访问起来的时延也很低。
 
    3.4、TimeStamp的概念
 
    TimeStamp对Hbase来说至关重要,因为它是实现Hbase多版本的关键。在Hbase中使用不同的timestame来标识相同rowkey行对应的不通版本的数据。
 
    在写入数据的时候,如果用户没有指定对应的timestamp,Hbase会自动添加一个timestamp,timestamp和服务器时间保持一致。
 
    在Hbase中,相同rowkey的数据按照timestamp倒序排列。默认查询的是最新的版本,用户可同指定timestamp的值来读取旧版本的数据。
 
    4、Hbase的架构
 
    Hbase的架构图如下图所示:
 
Hbase
 
    从图中可以看出Hbase是由Client、Zookeeper、Master、HRegionServer、HDFS等几个组建组成,下面来介绍一下几个组建的相关功能:
 
    4.1、Client
 
    Client包含了访问Hbase的接口,另外Client还维护了对应的cache来加速Hbase的访问,比如cache的.META.元数据的信息。
 
    4.2、Zookeeper
 
    Hbase通过Zookeeper来做master的高可用、RegionServer的监控、元数据的入口以及集群配置的维护等工作。具体工作如下:
 
    通过Zoopkeeper来保证集群中只有1个master在运行,如果master异常,会通过竞争机制产生新的master提供服务
 
    通过Zoopkeeper来监控RegionServer的状态,当RegionSevrer有异常的时候,通过回调的形式通知Master RegionServer上下限的信息
 
    通过Zoopkeeper存储元数据的统一入口地址
 
    4.3、Hmaster
 
    master节点的主要职责如下:
 
    为RegionServer分配Region
 
    维护整个集群的负载均衡
 
    维护集群的元数据信息
 
    发现失效的Region,并将失效的Region分配到正常的RegionServer上
 
    当RegionSever失效的时候,协调对应Hlog的拆分
 
    4.4、HregionServer
 
    HregionServer直接对接用户的读写请求,是真正的“干活”的节点。它的功能概括如下:
 
    管理master为其分配的Region
 
    处理来自客户端的读写请求
 
    负责和底层HDFS的交互,存储数据到HDFS
 
    负责Region变大以后的拆分
 
    负责Storefile的合并工作
 
    4.5、HDFS
 
    HDFS为Hbase提供最终的底层数据存储服务,同时为Hbase提供高可用(Hlog存储在HDFS)的支持,具体功能概括如下:
 
    提供元数据和表数据的底层分布式存储服务
 
    数据多副本,保证的高可靠和高可用性
 
    5、Hbase的使用场景
 
    Hbase是一个通过廉价PC机器集群来存储海量数据的分布式数据库解决方案。它比较适合的场景概括如下:
 
    是巨量大(百T、PB级别)
 
    查询简单(基于rowkey或者rowkey范围查询)
 
    不涉及到复杂的关联
 
    有几个典型的场景特别适合使用Hbase来存储:
 
    海量订单流水数据(长久保存)
 
    交易记录
 
    数据库历史数据
 
    二、Hbase的Region介绍
 
    前面已经介绍了Region类似于数据库的分片和分区的概念,每个Region负责一小部分Rowkey范围的数据的读写和维护,Region包含了对应的起始行到结束行的所有信息。master将对应的region分配给不同的RergionServer,由RegionSever来提供Region的读写服务和相关的管理工作。这部分主要介绍Region实例以及Rgeion的寻找路径:
 
    1、region实例
 
Hbase
 
    上图模拟了一个Hbase的表是如何拆分成region,以及分配到不同的RegionServer中去。上面是1个Userinfo表,里面有7条记录,其中rowkey为0001到0002的记录被分配到了Region1上,Rowkey为0003到0004的记录被分配到了Region2上,而rowkey为0005、0006和0007的记录则被分配到了Region3上。region1和region2被master分配给了RegionServer1(RS1),Region3被master配分给了RegionServer2(RS2)
 
    备注:这里只是为了更容易的说明拆分的规则,其实真实的场景并不会几条记录拆分到不通的Region上,而是到一定的数据量才会拆分,具体的在Region的拆分那部分再具体的介绍。
 
    2、Region的寻址
 
    既然读写都在RegionServer上发生,我们前面有讲到,每个RegionSever为一定数量的region服务,那么client要对某一行数据做读写的时候如何能知道具体要去访问哪个RegionServer呢?那就是接下来我们要讨论的问题
 

责任编辑:李欢
本文为授权转载文章,任何人未经原授权方同意,不得复制、转载、摘编等任何方式进行使用,e-works不承担由此而产生的任何法律责任! 如有异议请及时告之,以便进行及时处理。联系方式:editor@e-works.net.cn tel:027-87592219/20/21。
兴趣阅读
相关资料
e-works
官方微信
掌上
信息化
编辑推荐
新闻推荐
博客推荐
视频推荐