Hbase架构和读写流程

目录

1.概述

2.简介

3.Hbase架构

4.数据模型    

5.Hbase写流程 

6.Hbase读数据


1.概述

        本篇文章将简单的讲述Hbase的架构和读写流程,多为理论部分,不涉及API代码

2.简介

        从官方介绍可以知道,Hbase是一种分布式、可扩展、支持海量数据存储的 NoSQL 数据库。

 3.Hbase架构

        

  • 从图中不难看出Hbase是依赖Zookeeper进行分布式服务管理,负责存储Hbase集群的元数据,以及Master节点选举等功能。
  • 可以看出我们每台服务器就相当于一个RegionServer,每个RegionServer服务器中可以有多个Region,一个Rgion就是按照表的RowKey横向切开的一部分,当然是有一写切分策略的
  • 每个RegionServer中有一个或多个Hlog作为预写日志文件,一个或多个blockcache 用来做块缓存用于保存常用的数据块,Region中是由一个或多个Store组成,每个Store中都含有memStore缓存,和数据存储的物理格式HFile,数据是在hdfs上以二进制的形式存储的。
  • 可以看到数据被切分成一个个的Block方便读取

4.数据模型    

        /hbase/data/events_db/events/3a3af598b819c155277394de342ebc5f/location

  • /hbase/data/ 存储目录
  • events_db 命名空间
  • events 表名
  • 3a3af598b819c155277394de342ebc5f 这个一个region
  • location 列簇名
  • 947f7065c39248b88b122b0b15f344e4 就是具体的数据信息        
  • 数据是一个个的Cell也就是唯一的单元,cell是没有数据类型的,全是字节码形式存储
  • { RowKey, ColumnFamily: ColumnQualifier, TimeStamp}

5.Hbase写流程 

     

  • 客户端首先去zookeeper中获取元数据表在哪个RegionServer中,并将元数据做缓存方便后续使用
  • 访问元数据表对应的RegionServer服务器,根据请求(namespace:table/rowkey)查询要写入的哪个RegionServer中
  • 客户端与数据位于的RegionServer进行通讯,客户端首先将数据写入到WAL(预写日志文件)
  • 然后将数据写入到memstore中,按照RowKey进行排序,向客户端发送写入成功的信息
  • 等到达memstore的刷写时机后,将数据写入到Hfile中 

6.Hbase读数据

        

  • 和写数据类似,客户端也会向zookeeper获取meta表所处的regionServer找到具体数据所在的RegionServer
  • Block Cache 是Hbase的块缓存机制,里面存储了最近访问的数据是为了加快查询效率,Block Cache有淘汰机制,太远太久没使用的Block块将会被去掉
  • 客户端首先在Region中的Block Cache 、MemStore、Hfile中查找需要的数据,然后将找到的数据合并后加载到Block Cache中方便后续使用,最后将数据返回客户端

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/402383.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Element-UI动态生成的表单元素验证示例

模拟数据 tableData: [{name: "系统1",score: 0,children:[{name: "一号子系统",score: 0,}]},{name: "系统2",score: 0,children:[{name: "3号子系统",score: 0,}]},{name: "系统3",score: 0,children:[{name: "5号子…

python-docx在word文件表格中指定行下插入新一行并填充值

from docx import Document from copy import deepcopydef insert_row_after_specific_value(doc, table_index, column_header, target_value, new_row_data):# 加载文档# doc doc_path# 检查表格索引是否有效if table_index > len(doc.tables):print("文档中没有足够…

matlab 音频音量处理(音量大小按照dB调节)

1 音量(声压级)以分贝(dB)表示的计算公式为: 2 % 已知的 x 值 x = 0:-1:-127; % 在这里填入 x 的具体值% 计算 y %y = 10

江理工文档管理系统的设计与实现

TOC springboot148江理工文档管理系统的设计与实现 绪论** 1.1 研究背景 在这个推荐个性化的时代,采用新技术开发一个文档系统来分享和展示内容是一个永恒不变的需求。本次设计的文档管理系统有管理员和用户两个角色。管理员功能有论坛管理,公告管理…

Spark-环境启动

一、概览 从start-all.sh开始捋,一直捋到Master、Worker的启动并建立通信 二、宏观描述 Master端 1、start-all.sh调用start-master.sh启动Master 2、执行org.apache.spark.deploy.master.Master中main方法 3、通过工厂模式创建RpcEnv子类NettyRpcEnv a、创建…

【Vue3】路由Params传参

【Vue3】路由Params传参 背景简介开发环境开发步骤及源码总结 背景 随着年龄的增长,很多曾经烂熟于心的技术原理已被岁月摩擦得愈发模糊起来,技术出身的人总是很难放下一些执念,遂将这些知识整理成文,以纪念曾经努力学习奋斗的日…

【Redis】Linux CentOS Redis 的安装—(一)

Redis 一、获取源二、解压编译 一、获取源 //redis-stable是最新稳定版 wget https://download.redis.io/redis-stable.tar.gz二、解压编译 //我指定目录/app tar -xzvf redis-stable.tar.gz -C /appcd /app/redis-stablemake && make install##三 、修改配置启动 …

PyTorch 基础学习(5)- 神经网络

系列文章: PyTorch 基础学习(1) - 快速入门 PyTorch 基础学习(2)- 张量 Tensors PyTorch 基础学习(3) - 张量的数学操作 PyTorch 基础学习(4)- 张量的类型 PyTorch 基础学…

【阿卡迈防护分析】Vueling航空Akamai破盾实战

文章目录 1. 写在前面2. 风控分析3. 破盾实战 【🏠作者主页】:吴秋霖 【💼作者介绍】:擅长爬虫与JS加密逆向分析!Python领域优质创作者、CSDN博客专家、阿里云博客专家、华为云享专家。一路走来长期坚守并致力于Python…

计算机毕业设计 美妆神域网站 美妆商城系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点…

springboot生成、响应图片验证码

我们平时经常会碰见图片验证码,那么在springboot中我们该怎么实现呢 我们可以使用一款开源的验证码生成工具EasyCaptcha,其支持多种类型的验证码,例如gif、中文、算术等,并且简单易用,具体内容可参考其官方文档。 效果…

【三维重建】SpotlessSplats:去除瞬态干扰物的三维高斯喷溅(3DGS)

代码:https://spotlesssplats.github.io 论文:https://arxiv.org/pdf/2406.20055 来源:DeepMind,多伦多大学,斯坦福大学,西蒙弗雷泽大学 提示:关注B站【方矩实验室】,查看视频讲解…

11.怎么做好一个动态标签页

效果 步骤 1.在Elementui找一个标签页组件 复制粘贴到代码 2.将他写活 将很多页面需要用的方法和变量写入store editableTabsValue: 2,editableTabs: [{title: 首页,name: index,},],addTab(state, tab) {if (state.editableTabs.findIndex(item > item.title tab.titl…

LVGL系列2--linux + lvglv8 + vscode 移植

LVGL系列 一、LVGL移植 LVGL系列1–AT32移植LVGL_V8具体步骤 LVGL系列2–linux lvglv8 vscode 移植 二、输入设备 LVGL系列3–纯物理(外部)按键,数字键盘控制控件 文章目录 LVGL系列一、LVGL移植二、输入设备 一、新建文件夹并克隆源码官方仓库 7.11.0官方仓库…

【AI/算法类】OPPO 2025届秋招笔试题(B卷)

目录 1. 第一题2. 第二题3. 第三题 ⏰ 时间:2024/08/10 🔄 输入输出:ACM格式 ⏳ 时长:2h 本试卷还有选择题部分,但这部分比较简单就不再展示。 1. 第一题 小O有一个正整数 x x x,他想知道,第…

抽卡机小程序,开启全新拆卡乐趣

近段时间,盲盒卡牌市场异常火爆,最近爆火的“小马宝莉”系列卡牌就深受消费者的喜爱,受到了广泛关注,同时也推动了卡牌市场的快速发展!盲盒卡牌拥有隐藏款卡牌和限量款卡牌,具有非常大的收藏价值&#xff0…

使用Java调用Apache commons-text求解字符串相似性实战

目录 前言 一、字符串距离的几种计算方法 1、Levenshtein 距离 2、Overlap Coefficient计算 3、Q-gram Matching 4、余弦相似性计算 二、基于余弦相似性的基地名称对比 1、加载百科中的基地信息列表 2、设置忽略词列表 3、将数据库地名和Excel进行对比 三、总结 前言…

从力扣中等+困难题+表白HTML测试 -- 文心快码(Baidu Comate)

0 写在前面 官网地址:Baidu Comate Step1 打开文心快码(Baidu Comate)官网,点击「免费使用」/「下载安装」 Step2 可以根据官网步骤快速唤起VS Code; 也可以直接在VS Code、Visual Studio扩展管理搜索“文心快码”/…

如何用OceanBase实现HBase架构升级

随着数据量的爆炸性增长,特别是半结构化和非结构化数据的涌现,传统关系型数据库如 MySQL 遭遇了前所未有的挑战。这一背景下,为非结构化数据管理而生的 NoSQL 数据库,以及旨在解决海量数据存储难题的分布式技术应运而生&#xff0…

导出word格式的Javadoc(可用于快速生成项目详细设计文档)

导出word格式的Javadoc ​ 最近要编写项目详细设计文档,作为程序员当然想看看有没有能够自动生成的办法,生成详细设计文档,然后再在生成的基础上略做修改就好了(偷懒大法~),还真有,特此分享&am…