码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 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分为内存和磁盘部分,内存选择跳跃表,磁盘采用了布隆过滤器。

  • 相关阅读:
    Flutter 跨平台框架中的 Widgets,你了解多少?
    优秀程序员是怎么思考的?
    从github下载文件时遇到报错(Unable to render code block)解决办法
    HarmonyOS interface router scale pageTransition SlideEffect.Left ArkTS ArkUI
    华为网络设备高频命令
    创建CI/CD流水线中的IaC前,需要考虑哪些事项?
    元宇宙区块链游戏如何打金赚钱?
    《近期BSN开发常见问题答疑(2022.9.23)》
    通过termux tailscale huggingface 来手把手一步一步在手机上部署LLAMA2-7b和LLAMA2-70b大模型
    基于gitlab 15.1 pages 搭建内部博客一定行版本
  • 原文地址:https://blog.csdn.net/yu1336199790/article/details/125474105
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号