• Hbase原理与实践(学习笔记一:基本概念):


    相关笔记:

    《Hbase原理与实践》读书笔记——1.HBase概述_凯哥多帅哦的博客-CSDN博客_hbase的实现原理1.1 HBase前世今生Google当年风靡一时的“三篇论文”:GFS -> HDFS , Mapreduce -> hadoop mapreduce , bigTable -> HBase。HBase在国外起步很早,包括Facebook、Yahoo、Pinterest等大公司都大规模使用HBase作为基础服务。在国内HBase相对起步较晚,但现在各大公司对于HBase的使用已经越来越普遍,包括阿里巴巴、小米、华为、网易、京东、滴滴、中国电信、中国人寿等公司都使用HBase存储海https://blog.csdn.net/qq_31957747/article/details/109204420

    物理视图来看:Hbase 是一个MAp,由很多key-value对组成(和普通的Map不同的是:稀疏的、分布式的、多维排序的Map)。是按列簇存储的,分别存储在不同的目录中。

    在这里插入图片描述

    在这里插入图片描述

    根据行名rowkey、列(列簇:列名 contents:html)、时间戳t5可以定位到具体的value。

    特性解释:
    1、多维:Hbase中的map的key是一个复合数据结构,由多维元素构成,包括rowkey、column family、column qualifier、type以及timestamp。

    2、稀疏:比如逻辑表中行"com.example.www"可以看出,整整一行仅有一列(people:author)有值,其他列都为空值。对于HBase来说,空值不需要任何填充,从而节省了大量的空间,这也是hbase的列可以无限扩展的一个重要条件。

    3、排序:构成HBase的KV在同一个文件中都是有序的,但规则并不是仅仅按照rowkey排序,而是按照KV中的key进行排序——先比较rowkey,rowkey小的排在前面;如果rowkey相同,再比较column,即column family:qualifier,column小的排在前面;如果column还相同,再比较时间戳timestamp,即版本信息,timestamp大的排在前面。这样的多维元素排序规则对于提升HBase的读取性能至关重要
    ————————————————

    行式存储:一行数据存一起,比如mysql,获取整行高效,获取某列需要截取, OLTP主要是对数据的增删改()

    列式存储**:列式存储理论上会将一列数据存储在一起,不同列的数据分别集中存储,最典型的如Kudu、Parquet on HDFS等系统(文件格式)。

    列簇式存储:介于行式存储和列式存储之间,可以通过不同的设计思路在行式存储和列式存储两者之间相互切换,比如
    1、一张表只设置一个列簇,这个列簇包含所有用户的列。HBase中一个列簇的数据是存储在一起的,因此这种设计模式就等同于行式存储
    2、一张表设置大量列簇,每个列簇下仅有一列,这种设计模式就等同于列式存储
    ————————————————
     

    三:HBASE体系结构

    DDL/DML/DQL/DCL

    (Data Definition Language 数据定义语言)用于操作对象及对象本身,这种对象包括数据库,表对象,及视图对象

    create:创建数据库和数据库的一些对象
    drop:删除数据表、索引、触发程序、条件约束以及数据表的权限等
    alter:修改数据表定义及数据属性

    (Data Manipulation Language 数据操控语言) 用于操作数据库对象对象中包含的数据

    insert:向数据库插入一条数据
    delete:删除表中的一条或多条记录
    update:用于修改表中的数据

    (Data Query Language 数据查询语言 )用于查询数据 select

    (Data Control Language 数据控制语句) 用于操作数据库对象的权限

    greate:分配权限给用户
    revoke:废除数据库中某用户的权限

    3.1 HBase的优点

    • 容量巨大:单表支持千亿行、百万列的数据规模。
    • 良好的可扩展性:集群扩展容易,主要是数据存储节点的扩展以及读写服务节点扩展。(添加RegionServer节点)
    • 稀疏性:允许大量列值为空,并不占用任何存储空间。
    • 高性能:主要擅长OLTP场景,数据写操作性能强劲,对于 随机单点读 以及 小范围扫描读 ,其性能也能得到保障。对于大范围的扫描读可以使用MR的API,以便实现更高效的并行扫描。
    • 多版本:时间戳,可以保留多个历史版本。
    • 支持过期:TTL过期特性,只要设置过期时间,就可以自动清理。
    • Hadoop原生支持

    3.2 HBase的缺点

    • HBase本身不支持很复杂的聚合运算(如,Join、GroupBy等)。如果业务中需要使用聚合运算,可以在HBase之上架设Phoenix组件(小规模OLTP)或者Spark组件(大规模聚合的OLTP)。
    • HBase本身没有二级索引功能,不支持二级索引查找。好在针对HBase实现的第三方二级索引方案非常丰富,比如目前比较普遍的使用Phoenix提供的二级索引功能。
    • HBase原生不支持全局跨行事务,只支持单行事务模型。同样,可以使用Phoenix提供的全局事务模型组件来弥补HBase的这个缺陷。

    二、Hbase基本数据结构与算法

    hbase的一个列簇本质上就是一颗LSM树,lSM分为内存和磁盘部分,内存选择跳跃表,磁盘采用了布隆过滤器。

  • 相关阅读:
    【Git】Git基础操作一文详解,入门易懂(附图和案例)
    STM32CUBEMX开发GD32F303(7)----配置printf
    全面了解事务、分布式事务理论及其实现方案
    $nextTick的原理及作用
    2022“杭电杯”中国大学生算法设计超级联赛(8)
    java数组转List的几种方式
    Thales安全解决方案:国家网络安全的关键
    力扣(LeetCode)20. 有效的括号(C++)
    react-native android图标尺寸规范
    C/C++常用函数
  • 原文地址:https://blog.csdn.net/yu1336199790/article/details/125474105