From:

https://blog.csdn.net/wuxintdrh/article/details/69056188

写操作:

Client写入,存入Memstore,Memstore满则Flush成一个Storefile,Storefile文件数量增长到一定的阈值,触发Compact合并操作,多个Storefile合并成一个Storefile,同时进行版本合并和数据删除,当Storefile compact后,逐步形成越来越大的store file,单个store file大小超过一定的阈值后触发split操作,把当前region分裂为两个region,原来的region下线,新的2个region会被hmaster分配到hregionserver上(负载均衡),使得原先1个Region的压力分流到两个上,Hbase只是增加数据,所有的更新和删除操作都是在COMPACT阶段做的。所以用户操作只需要写入到内存即返回,保证IO性能

写入先memstore, storefile,compact,split

读操作:

Client->zookeeper->.ROOT->.META->用户数据表zookeeper记录了.ROOT的路径信息(root只有一个region),.ROOT理记录了.META的region信息(.META信息可能有多个region)

Hbase中,所有的存储文件都被划分成若干小块存储,这些小存储块在get或scan操作时会加载到内存中

Hbase顺序的读取一个数据块到内存缓存中,其读取相邻的数据时就可以在内存中读取而不是从磁盘中再次读取,减少IO次数

HLog

每个HRegionServer中都会有一个HLog(Write Ahead Log),每次用户操作写入Memstore的同时,也写入一份到HLog文件,该文件定期滚动出新,并删除旧的文件(已经持久化到Storefile中的数据)。当HRegionServer意外终止后,HMaster会通过zookeeper感知,HMaster首先处理遗留的HLog文件,将不同的region的log数据拆分,分别放到相应的region目录下,然后再将失效的region重新分配,领取到这些region的HRegionServer在load region的过程中,会发现有历史的HLog需要处理,因此会replay HLog中的数据到memstore中,然后flush到storefile,完成数据恢复

Hbase数据读写流程的更多相关文章

  1. HBase 数据读写流程

    HBase 数据读写流程 2016-10-18 杜亦舒 读数据 HBase的表是按行拆分为一个个 region 块儿,这些块儿被放置在各个 regionserver 中 假设现在想在用户表中获取 ro ...

  2. HBase数据读写流程(1.3.1)

    ===数据写入流程=== 源码:https://github.com/apache/hbase/blob/master/hbase-server/src/main/java/org/apache/ha ...

  3. HBase - 数据写入流程解析

    本文由  网易云发布. 作者:范欣欣 本篇文章仅限内部分享,如需转载,请联系网易获取授权. 众所周知,HBase默认适用于写多读少的应用,正是依赖于它相当出色的写入性能:一个100台RS的集群可以轻松 ...

  4. Hbase的读写流程

    HBase读写流程 1.HBase读数据流程 HRegionServer保存着meta表以及表数据,要访问表数据,首先Client先去访问zookeeper,从zookeeper里面获取meta表所在 ...

  5. HBase数据存取流程

    一.HBase的特点是什么 1.HBase一个分布式的基于列式存储或者行式存储的数据库,基于hadoop的hdfs存储,zookeeper进行管理. 2.HBase适合存储半结构化或非结构化数据,对于 ...

  6. JuiceFS 数据读写流程详解

    对于文件系统而言,其读写的效率对整体的系统性能有决定性的影响,本文我们将通过介绍 JuiceFS 的读写请求处理流程,让大家对 JuiceFS 的特性有更进一步的了解. 写入流程 JuiceFS 对大 ...

  7. 2.1-2.2 HBase数据存储

    一.HBase数据检索流程 一篇介绍HBase数据读写流程的解析的博文:http://hbasefly.com/2016/12/21/hbase-getorscan/?wsfatm=uqvhl3 1. ...

  8. HBase 文件读写过程描述

    HBase 数据读写过程描述 我们熟悉的在 Hadoop 使用的文件格式有许多种,例如: Avro:用于 HDFS 数据序序列化与 Parquet:常见于 Hive 数据文件保存在 HDFS中 HFi ...

  9. 【HBase】知识小结+HMaster选举、故障恢复、读写流程

    1:什么是HBase HBase是一个高可靠性,高性能,面向列,可伸缩的分布式数据库,提供海量数据存储功能,一个结构化的分布式存储系统,不同于一般的关系型数据库,它适合半结构化和非结构化数据存储. 2 ...

随机推荐

  1. Zabbix系统中的历史数据和趋势数据

    原文:http://blog.chinaunix.net/uid-9411004-id-4139807.html 或许读者还记得,我们在介绍如何创建一个监控项目时,我们介绍过在“配置项目”表单页面上有 ...

  2. 初始Golang

    Golang初识 字节跳动也就是我们常说的今日头条 1.今日头条基于Go语言构建千亿级微服务的实践 今日头条当前后端服务超过80%的流量是跑在Go构建的服务上 微服务数量超过100个 高峰QPS超过7 ...

  3. JIT和AOT编译详解

    JIT和AOT编译介绍 JIT - Just-In-Time             实时编译,即时编译 通常所说的JIT的优势是Profile-Based Optimization,也就是边跑边优化 ...

  4. ELK新手教程——pomelo + log4js + ELK(一)

    随着项目越来越庞大,日志的数量也随之增多,游戏上线后的日志量肯定更多了,所以对日志的收集.存储.查询就非常重要了,开源界第一日志分析系统ELK必不可少. ELK系统由Elasticsearch(分布式 ...

  5. python-ddt 数据驱动测试

    # @File : learn_ddt.py #-*- coding:utf-8 -*- #本次学习:ddt ---data drive test--数据驱动测试 #1.安装 pip install ...

  6. TCP/IP_网络基础知识

    今天看到k8s的网络,顿感网络知识不是特别扎实,立马回头补一下Tcp-ip知识,顺便记录下学习的过程: 计算机与网络发展的7个阶段: 批处理时代(计算机按照顺序处理,50年代)->分时系统时代( ...

  7. uiautomator2.0的配置的两种方法

    方法一(使用在线下载的方式导入依赖): 1.首先创建项目工程,创建的项目的android_api版本要与测试的android_api版本一致(24就是24 ,不能26或者17去兼容) 2.然后就是将本 ...

  8. Python-1 试玩OpenCV

    昨天同事说微信更新有跳一跳小游戏,便更新了玩一玩.至于抄袭不抄袭我不讨论,看玩法和色彩都很简洁.想用Python试试摄像头捕捉图像,然后分析距离每次都能跳到中心,有生物机械手指之类的再弄到树莓派上岂不 ...

  9. Java课程作业之动手动脑(二)

    纯随机数发生器 编写一个方法,使用以下算法生成指定数目(比如1000个)的随机整数. import java.util.Scanner; public class test { public stat ...

  10. 【Servlet】监听器入门