当前位置: 首页 > news >正文

Hbase相关总结

Hbase

1、Hbase的数据写入流程

  • 由客户端发起写入数据的请求, 首先会先连接zookeeper

  • 从zookeeper中获取到当前HMaster的信息,并与HMaster建立连接从HMaster中获取RegionServer列表信息

  • 连接meta表对应的RegionServer地址, 从meta表获取当前要写入的表对应region被那个RegionServer所管理(一般只会返回一个RegionServer地址, 除非一次性写入多条数据)

  • 连接对应要写入RegionServer的地址, 开始写入数据, 将数据首先会写入到HLog中,然后将数据写入到对应Region的对应Store模块的MemStore中(有可能会写入到MemStore), 当这两个地方都写入完成后, 客户端认为数据写入完成了服务端写入过程: 异步操作(可能客户端执行N多次写入后, 服务端才开始对之前的数据进行操作)

  • 随着客户端不断的写入操作, memstore中数据会越来越多, 当内存中数据达到阈值(128M / 1h)后, 就会触发flush刷新机制, 将数据<最终>刷新到HDFS上形成StoreFile(小Hfile)文件.

  • 随着不断的刷新, 在HDFS上StoreFile文件会越来越多, 当StoreFlie文件数量达到阈值(3个及以上)后, 就会触发compact合并压缩机制, 将多个StoreFlie文件<最终>合并为一个大的HFile文件

  • 随着不断的合并, 大的HFile也会越来越大, 当大HFile达到一定的阈值(<最终>10GB)后, 就会触发Split分裂机制, 将大HFile进行一分为二,形成两个新的大HFile, 同时管理这个大HFile的Region也会形成两个新的Region, 形成的两个新的Region和两个新的大HFile 进行一对一的管理即可, 原来的Region和原来的大的HFile就会下线删除掉。

2、Hbase的数据读取流程

  • 客户端从zookeeper中获取Hmaster信息并且建立连接获取到regionserver列表信息

  • 客户端访问meta表所在的regionserver节点,获取到region所在的regionserver信息

  • 客户端访问具体的region所在的regionserver,找到对应的regionstore

  • 首先从memstore中读取数据,如果读取到了那么直接将数据返回,如果没有,则去blockcache读取数据

  • 如果blockcache中读取到数据,则直接返回数据给客户端,如果读取不到,则遍历storefile文件,查找数据

  • 如果从storefile中读取不到数据,则返回客户端为空,如果读取到数据,那么需要将数据先缓存到blockcache中(方便下一次读取),然后再将数据返回给客户端

http://www.lryc.cn/news/156442.html

相关文章:

  • C++ Primer Plus第二章编程练习答案
  • Web后端开发(请求响应)上
  • LeetCode 338. Counting Bits【动态规划,位运算】简单
  • 解释 Git 的基本概念和使用方式。
  • 计算机网络初识
  • python 笔记(2)——文件、异常、面向对象、装饰器、json
  • Meta AI的Nougat能够将数学表达式从PDF文件转换为机器可读文本
  • 【Python爬虫笔记】爬虫代理IP与访问控制
  • 50、Spring WebFlux 的 自动配置 的一些介绍,与 Spring MVC 的一些对比
  • 【算法专题突破】双指针 - 和为s的两个数字(6)
  • Redis7入门概述
  • SQL sever命名规范
  • BCSP-玄子Share-Java框基础_工厂模式/代理模式
  • 【数据结构】2015统考真题 6
  • HTML <track> 标签
  • php中识别url被篡改并阻止访问的实现方式是什么
  • c++ 学习 之 const,constexpr,volatile
  • 【Flink】关于jvm元空间溢出,mysql binlog冲突的问题解决
  • C#常用多线程(线程同步,事件触发,信号量,互斥锁,共享内存,消息队列)
  • OpenWrt系统开发笔记
  • 实战 - Restful APi 格式规范
  • 《Linux从练气到飞升》No.21 Linux简单实现一个shell
  • 【iVX】iVX的低代码未来发展趋势:加速应用开发的创新之路
  • zookee 安装
  • OpenWrt编译自己的应用程序
  • MySQL 50 题。
  • 强化学习算法总结 (1)
  • Qt应用开发(基础篇)——向导对话框 QWizard
  • Python类的方法
  • 变电站自动化监控系统