HBase是列族数据库,主要由,表,行键,列族,列标识,值,时间戳 组成,

 

      表       其中HBase 主要底层存储依赖与hdfs,可以在HDFS中看到每个表名都作为一个独立的目录结构

      行       每一行都已行键作为唯一表示,是不可分割的字节数组,在HBase内部主要以行键由低到高存储在表中

      列族       一些列的集合,用户在插入数据的时候必须确定列族,在内部以字符串格式进行存储

      列标识     用以表示指定的列, 存储方式二进制

      值       在HBase 中 以指定的  列族 列表示,行键 来确定唯一的 单元格, 值以二进制方式存储,里面可保存多个版本,最新的数据排在最前面

      时间戳     默认情况下 每一个单元格插入数据时,都会用时间戳进行标识,若时间戳未指定,则插入最新数据,查询时也是如此,其中默认保存3个版本数据

 

      寻址过程

      在上面说了,每一行 都以行键(RowKey)排序, 如果数据量较大,这些数据就会在 行的方向上进行划分

      划分为多个Region,当表中的Region 越来越多时,多到无法存储在一台机器上时, Master主服务器就会把不同的Region分配到不同的Region 的服务器上

      但RowKey相同的Region不会被拆分到 不同Region 服务器上,通常每个Region 服务器会放置10~1000个Region, 当查询数据时,将开始Region定位

      每个Region 都这三个要素组成,Region 所属的表,第一行,最后一行 每个Region 都有个RegionID来标识其唯一性

      Region 标识符表示为 表名+开始行键+RegionID

      Meta表 中存了 Region 与 Region标识符之间的对应关系,可以用scan命令查看Mate表的结构,当数据表特别大时,mate也需要分区,记录Region

         

      Region 定位,

    客户端,通过Zookeeper 获取Meta表分区存储的地址,所需的行键Region信息,然后从Region 服务器上找到所需的数据。一般获取信息后会缓存,使用户不必从ZooKeeper 开始寻址。

 

      读写过程

        Region服务器主要 有  HLog 和Region 块组成,HLog 主要,记录Region 的操作日志,

    Region 对象主要由多个Store 组成 每个store对应当前分区的 一个列族,并且管理一块内存,即MemStroe

    当MemStore 中的数据达到一定条件,会写入StoreFile文件中,每个Store 包含若干StoreFile 文件 StoreFile 对应HDFS中,Hfile文件

   

MemStore    HBase 将数据缓存在其中,持久化到HDFS中完成排序,在顺序写入HDFS中

Store 随着数据量增加 storefile文件数量也在增加,当数量达到一定程度的时候,会合并成一个大的StoreFile文件,随着文件不断合并,Region也会不断变大这样会促使Region进行分裂

      Region 一个父Region 会分裂成两个子 Region  会被Master 分配到相应的Region 服务器上

      Hlog 如果MemStore 上数据丢失 可以从HLog上恢复

     

      写入过程,

1.客户端访问ZookKeeper 从Mate表中得到写入数据对应的Region信息,和相应的Region 服务器

2客户端访问 Region服务器,将数据写入HLog和MemStore中,当MemStore 达到阈值后 将数据写入 StoreFile中,再在HLog中打上一个标记,表示已经写入
3.当多个StoreFile文件达到阈值后 触发Store.compact()将文件进行合并.

 

读取过程

1.客户端访问Zookeeper 从Mate表中读取Region信息对应的服务器

      2.客户端向对应的Region服务器发送读数据的请求,Region接受请求后 从MemStore中查找数据,若没有,再从StoreFile读取,然后再将数据返回给客户端。

本内容总结于 上课老师所讲内容,以及摘录自NoSql数据库原理及应用  有错误之处,大家指正批评。

     

HBase的简单介绍,寻址过程,读写过程的更多相关文章

  1. 提权篇之简单介绍和exp利用过程

    正文开始.... 提权的方法有很多种,因为一开始我入门的时候是看的小迪的网络教程,当然也推荐大家去看小迪的教程,或者直接小迪的实地培训班.这个可没什么利益关系,我认识他,他可不认识我,,但是我是在网上 ...

  2. f2fs源码分析之文件读写过程

    本篇包括三个部分:1)f2fs 文件表示方法: 2)NAT详细介绍:3)f2fs文件读写过程:4) 下面详细阐述f2fs读写的过程. 管理数据位置关键的数据结构是node,node包括三种:inode ...

  3. Hbase结构简单、作法

    Hbase架构简单介绍.实践 版权声明:本文博主原创文章,博客,未经同意不得转载.

  4. hbase架构和读写过程

    转载自:https://www.cnblogs.com/itboys/p/7603634.html 在HBase读写时,相同Cell(RowKey/ColumnFamily/Column相同)并不保证 ...

  5. ARM过程调用标准---APCS简单介绍

    介绍 APCS,ARM 过程调用标准(ARM Procedure Call Standard),提供了紧凑的编写例程的一种机制,定义的例程能够与其它例程交织在一起.最显著的一点是对这些例程来自哪里没有 ...

  6. HBase 文件读写过程描述

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

  7. 计算机启动过程的简单介绍 计算机启动流程 计算机BIOS作用 POST 开机自检 计算机启动顺序 分区表 操作系统启动

    原文地址:4.计算机启动过程的简单介绍 计算机启动流程 计算机BIOS作用 POST 开机自检 计算机启动顺序 分区表 操作系统启动 计算机的启动

  8. hbase的读写过程

    hbase的读写过程: hbase的架构: Hbase真实数据hbase真实数据存储在hdfs上,通过配置文件的hbase.rootdir属性可知,文件在/user/hbase/下hdfs dfs - ...

  9. Phoenix(sql on hbase)简单介绍

    Phoenix(sql on hbase)简单介绍 介绍: Phoenix is a SQL skin over HBase delivered as a client-embedded JDBC d ...

随机推荐

  1. git 之 .gitignore文件

    所有空行或者以注释符号 # 开头的行都会被 Git 忽略 匹配模式最后跟反斜杠(/)说明要忽略的是目录 要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反 *.a # 忽略所有 .a 结 ...

  2. java线程安全与不安全的理解

    存在成员变量(全局变量)的类用于多线程时是不安全的,不安全体现在这个成员变量可能发生非原子性的操作,而变量定义在方法内也就是局部变量是线程安全的. 想想在使用struts1时,不推荐创建成员变量,因为 ...

  3. mkswap/swapon/swapoff/free

    free mkswap 创建Linux交换分区 swapon 启用交换分区 swapoff 关闭交换分区 注意: 在创建完交换区之后.是需要激活才能使用的 swapon/swapoff

  4. fmt

    fmt.Println("hello world") fmt.Printf("%T",a)打印a 的类型 fmt.Printf("%v",a ...

  5. Gym - 101955K Let the Flames Begin 约瑟夫环

    Gym - 101955KLet the Flames Begin  说实话,没怎么搞懂,直接挂两博客. 小飞_Xiaofei的约瑟夫问题(Josephus Problem)3:谁最后一个出列 小飞_ ...

  6. php win/linux/mac 安装redis扩展或者扩展报错 zend_smart_str.h file not found

    1 windows 安装reids 扩展 根据phpinfo 查看php信息.在pecl.php.net 下载对应的redis扩展版本,放如扩展目录,在php.ini 配置扩展信息,重启服务 2 li ...

  7. Spring Cloud Eureka(七):DiscoveryClient 源码分析

    1.本节概要 上一节文章主要介绍了Eureka Client 的服务注册的流程,没有对服务治理进行介绍,本文目的就是从源码角度来学习服务实例的治理机制,主要包括以下内容: 服务注册(register) ...

  8. JavaWeb_(Spring框架)认识Spring中的aop

    1.aop思想介绍(面向切面编程):将纵向重复代码,横向抽取解决,简称:横切 2.Spring中的aop:无需我们自己写动态代理的代码,spring可以将容器中管理对象生成动态代理对象,前提是我们对他 ...

  9. redhat7.4安装git(按照官网从源码安装)

    按照官方文档建议使用源码安装 1.为什么不用yum安装 yum安装确实简单,只用一行命令就可以了,但是yum安装的版本太低. //安装前使用info查看git版本信息等 yum info git yu ...

  10. JDK1.6历史版本的下载(關於TLSv1.2)Oracle的官方文檔

    [资源描述]:对于部分老项目 仍然采用的是JDK1.6 版本 但是打开官方 JDK 都是最新的 版本 想找 历史版本 不容易找到 [资源详情]:提供下载链接: http://www.oracle.co ...