HBbase原理与实践_读书笔记_第1章 HBase概述

《HBbase原理与实践》读书笔记

第1章 HBase概述
Hbase架构图

1.1 HBase前生今世
    
    1.google 的 三篇论文

        GFS - HDFS
        MapReduce - MapReduce
        BigTable - Hbase

    2.0.98版本 Hbase历史上最稳定的版本


1.2 HBase数据模型

    sparse, distributed,persistent multidimensional sorted map

    稀疏的      分布式的    持久性的     多维度的            排序的  Map

    逻辑上: Hbase的数据是以表形式进行组织的, 表由 行列构成。
    物理上: Hbase是一个map,  是一个 稀疏的、分布式的、持久的多维度排序的Map


    1.2.1 逻辑视图

        table: 表,一个表包含多行数据

        row  : 行,一行数据包含一个唯一表示rowkey, 多个cloumn及对应的值。 row 按照rowkey的字典顺序由小到大排列

        cloumn: 列, 由 cloumn family(列族) : qualifier (列名)。列族需要在创建表的时候指定, 一个cloumn family 包含多个 qualifier

        timestamp: 时间戳,每个cell 默认分配一个时间戳 作为该cell 的版本, timestamp越大 版本号越大 越新

        cell : 单元格 由五元组构成 (rowkey, cloumn,timestamp,type,value).(rowkey, cloumn,timestamp,type) 是K, value 是 V



        Hbase引入列族, 列族下的列可以动态扩展; timestamp 实现了数据的多版本支持。


    1.2.2 多维度稀疏排序Map

        多维: hbase 是一个map,kv结构,  k 是由多个维度构成的 (rowkey, cloumn,timestamp,type) 

        稀疏:空值无需填充,理论上无需填充

        排序:不仅仅rowkey按照字典排序  而是 先比较rowkey 字典序小到大   再 cloumn(cloumn family:qualifier)小到大  再是 timestamp 大到小

1.3 HBase 体系结构

        Master-slave模型: 一个Master节点 多个RegionServer节点 ;
        数据存储在HDFS;zookeeper协助Master 对集群管理


        1.client
            提供shell命令行结构,原生java APi编程接口, Thrift/REST API接口 、MR接口


        2.zookeeper
            
            ①实现Master的高可用:如果master宕机,通过选举制度选出新的master
            
            ②管理核心元数据:管理正常RegionServer集合、保存元数据表hbase:metabase所在的RegionServer地址。 (元数据表在hbase 的 hbase命令空间)

            ③参与RegionServer宕机恢复:zk通过心跳感知Regionserver 是否宕机,通知master 进行宕机处理

            ④实现分布式锁: 对一张表操作是 需要先加锁。zk通过特定的机制实现分布式锁

        3.Master
            master主要负责管理请求

            ①处理用户的各种管理请求:表的DDL、切分表、合并数据分片、compaction
            
            ②管理RegionServer
            
            ③清理过期日志 文件

        4.RegionServer
            主要负责用户的IO请求 由WAL(Hlog 是WAL的核心实现类)、BLockCache、多个Region

            ①WAL:预写日志(写缓存)。两大作用
                a.实现数据的高可用:写数据时,先写顺写WAL,如果数据丢失 可以通过Hlog恢复
                b.集群间的主从复制

            ②BlcokCache:读缓存

                客户端从磁盘读取数据后 会将数据放入blcokcache 后续访问 就先从blockcache读取数据;默认大小64k

                利用了空间局部性  和 时间局部性

                空间局部性:最近读取的kv数据很可能与当前读取的kv数据在地址上是相近的,缓存block 而不是缓存单个kv 可以实现空间局部性
                时间局部性:一个数据正在被访问,近期它还有可能被再次访问

                BlcokCache 两中实现:LRUBlockCache 和 BucketCache

            ③Region
                
                数据表的分片,数据表的大小超过一定阈值就会 "水平切分",是集群负载均衡的基本单位

                一张表的region会分布在多台RegionServer上,一台RegionServer管理多个Region(一般来自不同的数据表)
               
                store
                    一个Region由一个或者多个store构成,有多少个column family 就有多少 store

                    每个store 由一个MemStore 和 多个 Hfile构成

                    数据写入MemStore 写满了 开始异步的将数据flush成 一个 Hfile;

                    当HFile 越来越多后 会执行Compact操作,将小文件合并成一个或者多个大文件
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值