Hbase数据结构和体系架构

2023-05-16

1.HBase与关系数据库比较

1)行式数据库

优点:1.数据存储在一起。2.INSERT/UPDATE数据较容易。
缺点:1.选择操作(select)时,即使是几行所有数据也要被读取

2)列式数据库(hbase)

优点:1.查询时只有涉及的列才会被读取。2.投影很高效。3.任何列都会可以作为索引。
缺点:INSERT/UPDATE比较麻烦。

2.HBase数据模型

这里写图片描述

1)ROW_KEY

决定一行数据,注意:它的存储是按照字典顺序进行排序的。ROW_KEY只能存储64k的字节数据。

2)Column Family列族与qualify列

  • HBase表中每个列都必须属于某个列族,列族必须作为表模式定义的一部分预先给出(有点像关系型数据库中的列名,定义完一般情况下就不会再去修改)eg:create ‘tablename’,’family column列族’;
  • 列名以列族作为前缀,每个列族都可以有多个列成员,eg:cource:math,cource:english。新的列族成员(也就是列)可以随后按需,动态加入。
  • 权限控制,存储以及调优都是在列族层进行。
  • Hbase把同一列族里面的数据存储在同一目录下,由几个文件保存。

3)Timestamp时间戳

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

4)Cell单元格

  • 由行和列的坐标交叉决定;
  • 单元格是有版本额;
  • 单元格的内容:由{rowkey,column(由family列族 +qualify列),version}唯一确定的单元。cell中的数据是没有类型的,全部是字节码形式存储。

5)HLog

  • HLog文件就是一个普通的Hadoop Sequence File,Sequence File的Key是HLogKey对象,HLogKey中记录了写入信息的归属信息,除了table和region名字之外,同时还包括sequence number和timestamp,timestamp是写入时间,sequence number的初始值为0,或者是最近一次存入文件系统中的sequence number。
  • HLog Sequence File的value是HBase的Key Value对象,即对应HFile中的KeyValue。

3.HBase体系架构

Hbase体系架构

1)Client

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

2)Zookeeper

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

3)HMaster

  • 为Region Server分配region。
  • 负责RegionServer的负载均衡(当一个 RegionServer有太多的Region,HMaster将RegionServer中的一部分HRegion移到其他的RegionServer上达到负载均衡)。
  • 发现失效的RegionServer并重新分配其上的Region。
  • 管理用户对table的增删改操作。

4)ReginServer

  • RegionServer维护Region,处理对这些Region的IO请求。(对数据的读写,首先是Client通过Zookeeper和HMaster获取RegionServer中Region的 信息,然后Client直接找到RegionServer,RegionServer对Region进行操作)
  • RegionServer负责切分在运行过程中变得过大的region(切分Region)。

5)Region(表的一部分)

  • HBase自动把表水平划分为多个Region,每个Region会保存一个表里面某段连续的数据;每个表一开始只有一个Region,随着数据不断插入表region不断增大,当达到一个阀值 的时候,region就会等分产生两个新的region(这个操作会由RegionServer完成)。
  • 当table中的行不断增多,就会有越来越多的region。这样一张完整的表被保存在多个RegionServer上。

6)Store,MemStore和StoreFile

  • 一个Region由多个Store组成,一个Store对应一个列族。
  • Store包括位于内存中的MemStore和位于磁盘的StoreFile。当进行写操作时,首先要写入内存中的MemStore,当MemStore中的数据达到某个阀值,RegionServer会启动FlashCache进程写入StoreFile,每次写入形成单独的一个StoreFile。(MemStore有点像缓存,一次写入一次写入磁盘太过频繁,将写入缓存,当量达到一定程度,一起写入)
  • 当StoreFile文件的数量增长到一定阀值后,RegionServer会进行合并,在合并过程中会进行版本合并和删除,形成更大的StoreFile。
  • 当一个region所有StoreFile的大小和超过一定阀值后,会把当前的Region分割为两个(分割是RegionServer完成),并由HMaster分配到相应的RegionServer上,实现负载均衡。
  • 当Client检索数据时,先在MemStore找,找不到再找StoreFile。

7)总结

  • Region是HBase中分布式存储和负载均衡的最小单元。最小单元就表示不同的Region可以分布在不同的RegionServer上。
  • Region由一个或者多个Store组成,每个Store保存一个colums family(列族)。
  • 每个Store又由一个MemStore和多个StoreFile组成。
    这里写图片描述
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Hbase数据结构和体系架构 的相关文章

  • 怎么阅读论文,写心得体会

    收集资料 xff1a 阅读学术论文的心得体会 xff01 如何阅读学术论文 和上一篇类似大牛写论文的心得几年的写论文和审稿心得 文献阅读心得体会格式 xff1a 1 看论文题目 xff0c 做出论文类别判别 新理论 新方法 解决新问题 最高
  • 了解什么是枚举(enumeration)

    1 枚举是一组常量的集合 还可以看成包含有限特定的对象 2 自定义枚举的步骤 xff1a 将构造器私有化private将get方法拿掉在类的内部直接创建固定的对象 xff0c 比如 xff1a public static Season SP
  • python学习三十八-九天(python程序中进程的操作)

    主要内容 python的multiprocess模块和用法 在python程序中的进程操作 之前我们已经了解了很多进程相关的理论知识 xff0c 了解进程是什么应该不再困难了 xff0c 刚刚我们已经了解了 xff0c 运行中的程序就是一个
  • 电脑开机安装流氓软件、弹广告处理办法

    今天处理了一台开机自动安装流氓软件的电脑 xff0c 而且还弹广告 现在写下处理过程 文章目录 一 卸载软件 xff08 1 xff09 控制面板卸载 xff08 2 xff09 安装路径卸载 二 禁用任务计划程序三 删除软件安装包四 修改
  • VScode中使用git进行版本控制

    VScode中使用git进行版本控制 一 安装与配置二 初始化和提交本地仓库三 提交到远程仓库四 克隆和拉取1 克隆2 拉取 五 修改后的提交六 免密提交七 其他命令1 撤销2 Git 分支命令3 暂时保存更改4 同时提交多个仓库 一 安装
  • SLAM的前世今生 终于有人说清楚了

    SLAM的前世今生 终于有人说清楚了 硬创公开课 from xff1a http www leiphone com news 201605 5etiwlnkWnx7x0zb html 2016 05 16 19 40 宗仁 0 条评论 今年
  • 使用catkin进行工程管理

    catkin是什么 这是一个管理ros代码的工程管理工具 xff0c 基于cmake xff0c 但是比cmake多更多功能 xff0c 是cmake上层的代码管理规则 ros之前采用的是ros build xff0c 现在用catkin
  • ROS-melodic 安装 及:rosdep init 和 rosdep update 失败问题解决总结

    正常安装ros流程 ros 安装 melodic sudo sh c 39 etc lsb release amp amp echo 34 deb http mirrors tuna tsinghua edu cn ros ubuntu D
  • ubuntu 安装Opencv4版本后安装Opencv3,并在项目中区分使用

    安装 xff1a ubuntu 安装OpenCV3版本后安装OpenCV4 xff0c 且多版本共存 wyyang2的博客 CSDN博客 https blog csdn net wyyang2 article details 1039894
  • Ubuntu 16.04录屏软件

    Ubuntu 16 04安装录屏软件Simple Screen Recorder https www maartenbaert be simplescreenrecorder https jingyan baidu com article
  • debug时一个非常坑爹的问题——单步调试正常但是运行没结果

    单步调试能得到正确答案 xff0c 运行不出来 本人用的是codeblocks xff0c 20 03版本 话说有一天晚上 xff0c 那个不平凡的夜 xff0c 还有不到十个小时数据结构的实验课就要上交报告了 xff0c 而自己的程序却出
  • DataX使用、同步MySQL数据到HDFS案例

    文章目录 4 DataX使用4 1 DataX使用概述4 1 1 DataX任务提交命令4 1 2 DataX配置文件格式 4 2 同步MySQL数据到HDFS案例4 2 1 MySQLReader之TableMode4 2 1 1 编写配
  • 支持期限提至10年,Ubuntu 18.04 LTS

    给技术最前线加星标 xff0c 每天看技术热点 综合自 xff1a cnBeta COM Solidot Mark Shuttleworth宣布将支持Ubuntu 18 04 LTS长达十年时间 xff0c 让LTS版本的含金量更足 xff
  • 实训第五天:我的页面布局,API接口(一言,天气预报)

    1 不用不用脚本和弹窗获取手机信息 xff0c 用微信公众平台的组件开发能力 open data用于展示微信开放的数据 部分代码 xff1a lt view class 61 34 container 34 gt lt view class
  • 这是一个失败的程序员

    写程序至今 xff0c 未入门 xff0c 什么都不懂 xff01
  • adb dumpsys命令用法

    dumpsys命令功能很强大 xff0c 能dump系统服务的各种状态 xff0c 非常有必要熟悉该命令的用法以及含义 一 概述 1 1 dumpsys命令用法 可通过dumpsys命令查询系统服务的运行状态 对象的成员变量属性值 xff0
  • matlab subs函数

    在matlab命令行查看subs函数的帮助 subs函数一共有三种使用方法 xff1a subs s old new subs s new subs s 点击 subs 的参考页可以看到下面的详细说明 第一种使用方法 说明 xff1a su
  • Docker----如何更改docker镜像的存储路径

    原文链接 Docker 如何更改docker镜像的存储路径 背景 随着docker容器已经镜像的使用 xff0c docker镜像占用大量磁盘空间 xff0c 当然可以通过不断的删除镜像或者设置定时任务删除镜像 xff0c 但是有时候还是挺
  • ROS的geometry_msgs/PoseWithCovarianceStamped Message 消息格式

    溪西创客小屋 geometry msgs PoseWithCovarianceStamped Message Raw Message Definition This expresses an estimated pose with a re
  • 线程和进程的理解

    一 介绍线程和进程 什么是线程 是程序执行的最小单位 xff0c 一个进程在执行过程中产生建多个线程 xff0c 同一进程中的 多个 线程共享同一块内存空间及系统资源 xff0c 线程数进程的一部分 xff0c 因此线程数也被称为轻量级进程

随机推荐

  • Windows安装tensorflow-gpu

    0 想在Windows环境安装tensorflow gpu xff0c 显卡必须是N卡 xff08 本文以3070显卡为例进行说明 xff09 1 安装好Anaconda以及Pycharm xff08 安装教程 xff1a https ww
  • 16.进程-进程间通信概述

    进程间通信 xff0c 也就是大家常说的 IPC Inter Process Communication xff0c 指的是不同的进程间进行交流 xff0c 本质上就是进程之间发送和接收数据 xff1b 本质上 xff0c 信号也是属于进程
  • PNP问题-位姿估计方法梳理(pose estimation)

    tags 单目视觉 位姿测量 目标3D精确模型已知 xff08 建立2D 3D对应关系 xff09 xff1a 点特征 P3P问题 基于针孔成像模型 Gao的方法 xff08 opencv emgucv xff09 Kneip 的 P3P
  • 室内无人机定位导航

    个人观点 xff1a 可研究的方向 1 静态规划方面 xff1a 将控制与定位结合起来 xff1b 修正回环检测误差 xff0c 提高算法的计算精度和执行效率 xff1b 2 动态规划方面 xff1a 用神经网络识别运动物体的行进方向 xf
  • 树莓派3b程序控制无人机 (一)——电脑连树莓派

    设备 xff1a 树莓派3b xff08 备有键盘 xff0c 鼠标 xff09 xff1b win10 x64笔记本 xff1b UAV pixhawk飞控板 etc network interfaces 的设置可参考以下链接 xff1a
  • 三星6410裸机程序开发

    网上关于S3C6410裸机程序开发都是基于RealView RVDS 也有一些是基于eclipse的 xff0c 但都没有详细介绍在eclipse中如何建立S3C6410裸机程序工程 尽管友善之臂提供的6410裸机程序示例使用了eclips
  • linux socket can程序cantool

    最近写了个自认为不错的基于linux socket can程序 xff0c 主要功能 xff1a 程序具备全部CAN功能 xff0c 包括CAN标准帧 扩展帧接收与发送 CAN总线错误判断 环回等功能适用基于LINUX SOCKET机制实现
  • Linux CAN编程详解

    Linux CAN编程详解 是一篇百度文库上的文档 xff0c 主要描述了以下内容 xff1a can总线介绍及其帧类型 xff1b Linux 系统中CAN 接口配置 xff1b Linux 系统中CAN 接口应用程序开发 xff1b L
  • c++中冒号(:)和双冒号(::)的用法和c/c++ 位域结构体

    1 冒号 xff08 xff09 用法 xff08 1 xff09 表示结构体内 位域的定义 xff08 即该变量占几个bit空间 xff09 typedef struct XXX unsigned char a 4 unsigned ch
  • CAN总线与RS485的比较

    最近一个项目总体方案设计为分布式系统 xff0c 于是在通讯上纠结于CAN总线还是RS485 因此在网上搜索一些了一些关于RS485和CAN总线的资料 xff0c 除进一步认识RS485通讯特点外 xff0c 认识了CAN总线的特点及其与R
  • Linux内核中常见内存分配函数

    1 原理说明 Linux 内核中采 用了一种同时适用于32 位和64 位系统的内 存分页模型 xff0c 对于32 位系统来说 xff0c 两级页表足够用了 xff0c 而在x86 64 系 统中 xff0c 用到了四级页表 xff0c 如
  • MII、RMII、GMII接口的详细介绍

    概述 xff1a MII Media Independent Interface 介质无关接口 或称为媒体独立接口 xff0c 它是IEEE 802 3定义的以太网行业标准 它包括一个数据接口和一个MAC和PHY之间的管理接口 数据接口包括
  • Visual Studio .NET 2003中出现“无法启动调试 没有正确安装调试器”错误的解决方法

    最近 xff0c 装了Visual Studio NET 2010后 xff0c 在Visual Studio NET 2003中进行运行调试 xff0c 突然出现 无法启动调试 没有正确安装调试器 提示 xff0c 不能向往常一样进入控制
  • ftime()函数

    ftime 函数取得目前的时间和日期 相关函数 xff1a time ctime gettimeofday 表头文件 xff1a include lt sys timeb h gt 函数定义 xff1a int ftime struct t
  • 几道经典的嵌入式C语言笔试题

    C语言测试是招聘嵌入式系统程序员过程中必须而且有效的方法 这些年 xff0c 我既参加也组织了许多这种测试 xff0c 在这过程中我意识到这些测试能为带面试者和被面试者提供许多有用信息 xff0c 此外 xff0c 撇开面试的压力不谈 xf
  • 解决eclipse中出现Resource is out of sync with the file system问题

    作者 xff1a reille 本博客网址 xff1a http blog csdn net reille xff0c 转载本博客原创文章请注明出处 本文内容概要 xff1a 解决eclipse中出现Resource is out of s
  • 代码中特殊的注释技术——TODO、FIXME和XXX的用处

    作者 xff1a reille 本博客网址 xff1a http blog csdn net reille xff0c 转载本博客原创文章请注明出处 本文内容概要 xff1a 代码中特殊的注释技术 TODO FIXME和XXX的用处 更多请
  • 个人网站梦想终实现即reille blog | velep.com成长之路

    最近用wordpress开放平台软件建立了一个属于自己的个人博客网站velep com即reille blog xff0c 中文名 xff1a reille博客 xff0c 圆了自己多年来的梦想 xff0c 感觉像是在这大千互联网里找到了属
  • PaddleX树莓派部署--神经计算棒2代

    PaddleX树莓派部署 神经计算棒2代 PaddleX支持在树莓派上插入NCS2 神经计算棒2代 通过OpenVINO部署PadlleX训练出来的分类模型 注意 xff1a 目前仅支持分类模型 仅支持Armv7hf的树莓派 前置条件 OS
  • Hbase数据结构和体系架构

    1 HBase与关系数据库比较 1 xff09 行式数据库 优点 1 数据存储在一起 2 INSERT UPDATE数据较容易 缺点 1 选择操作 xff08 select xff09 时 xff0c 即使是几行所有数据也要被读取 2 xf