• 大数据数据库HBase(一)——架构原理


    一、HBase简介

    1.1.Hadoop生态系统

    1.2.非关系型数据库知识面扩展 

    • Cassandra hbase mongodb 
    • Couchdb,文件存储数据库 
    • Neo4j非关系型图数据库

    1.3.Hbase初始

    • Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩、实时读写的分布式数据库
    • 利用Hadoop HDFS作为其文件存储系统,利用Hadoop MapReduce来处理HBase中的海量数据,利用Zookeeper作为其分布式协同服务
    • 主要用来存储非结构化和半结构化的松散数据(列存 NoSQL 数据库)

    二、HBase数据模型

                                                                   图2.1 逻辑形式图

    一张类似这样的表,确定一个value必须有RowKey,Time Stamp,column Family,column key

    2.1.1.ROW KEY

    – 决定一行数据
    – 按照字典顺序排序的。
    – Row key只能存储64k的字节数据

    2.1.2.Column Family列族 & qualifier列

    – HBase表中的每个列都归属于某个列族,列族必须作为表模式(schema)定义的一
    部分预先给出。如 create ‘test’, ‘course’;
    – 列名以列族作为前缀,每个“列族”都可以有多个列成员(column);如course:math,
    course:english, 新的列族成员(列)可以随后按需、动态加入;
    – 权限控制、存储以及调优都是在列族层面进行的;
    – HBase把同一列族里面的数据存储在同一目录下,由几个文件保存。

    2.1.3.Timestamp时间戳

    – 在HBase每个cell存储单元对同一份数据有多个版本,根据唯一
    的时间戳来区分每个版本之间的差异,不同版本的数据按照时
    间倒序排序,最新的数据版本排在最前面。
    – 时间戳的类型是 64位整型。
    – 时间戳可以由HBase(在数据写入时自动)赋值,此时时间戳是精
    确到毫秒的当前系统时间。
    – 时间戳也可以由客户显式赋值,如果应用程序要避免数据版本
    冲突,就必须自己生成具有唯一性的时间戳。
     

    2.1.4.Cell单元格

    – 由行和列的坐标交叉决定;
    – 单元格是有版本的;
    – 单元格的内容是未解析的字节数组;
    ▪ 由{row key, column( =<family> +<qualifier>), version} 唯一确定的
    单元。
    ▪ cell中的数据是没有类型的,全部是字节数组形式存贮。
     

                                                                                     图 2-2 Hbase架构图

    2.2.1.Client

    ▪ 包含访问HBase的接口并维护cache来加快对HBase的访问

    2.2.2.Zookeeper

    ▪ 保证任何时候,集群中只有一个活跃master
    ▪ 存贮所有Region的寻址入口。
    ▪ 实时监控Region server的上线和下线信息。并实时通知Master
    ▪ 存储HBase的schema和table元数据

    2.2.3.Master

    – 为Region server分配region
    – 负责Region server的负载均衡
    – 发现失效的Region server并重新分配其上的region
    – 管理用户对table的增删改操作

    2.2.4. RegionServer

    – Region server维护region,处理对这些region的IO请求
    – Region server负责切分在运行过程中变得过大的region

    2.2.5.Memstore 与 storefile

    – 一个region由多个store组成,一个store对应一个CF(列族)
    – store包括位于内存中的memstore和位于磁盘的storefile写操作先写入memstore,
    当memstore中的数据达到某个阈值,hregionserver会启动flashcache进程写入
    storefile,每次写入形成单独的一个storefile
    – 当storefile文件的数量增长到一定阈值后,系统会进行合并(minor、major
    compaction),在合并过程中会进行版本合并和删除工作(majar),形成更大
    的storefile
    – 当一个region所有storefile的大小和数量超过一定阈值后,会把当前的region分割
    为两个,并由hmaster分配到相应的regionserver服务器,实现负载均衡
    – 客户端检索数据,先在memstore找,找不到去blockcache,找不到再找storefile
     
    ▪ HRegion是HBase中分布式存储和负载均衡的最小单元。最小单元就表示不同的HRegion
    可以分布在不同的 HRegion server上。
    ▪ HRegion由一个或者多个Store组成,每个store保存一个columns family。
    ▪ 每个Strore又由一个memStore和0至多个StoreFile组成。如图:StoreFile以HFile格式保存
    在HDFS上。
     
                                                                 图 2-3 Region & Store 关系图
     

                                                                图 2-4 关系图(二)

  • 相关阅读:
    mysql的主从复制是如何实现的
    Innodb的索引
    PHP 五大运行模式
    nginx 与PHP之间是怎么交互的? Nginx与PHP通信的两种方式 unix socket和tcp socket
    识别身份证中的籍贯、出生年月、性别-http://www.cnblogs.com/huxj/archive/2010/08/01/1789843.html转!
    mysql大数据分表后查询
    19. HTTP协议二:HTTP请求与响应、常见状态码
    18. HTTP协议一:概述、原理、版本、请求方法
    17. 接口定义
    16. Django基础数据访问
  • 原文地址:https://www.cnblogs.com/littlepage/p/11273098.html
Copyright © 2020-2023  润新知