HBase的简单介绍,寻址过程,读写过程
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的简单介绍,寻址过程,读写过程的更多相关文章
- 提权篇之简单介绍和exp利用过程
正文开始.... 提权的方法有很多种,因为一开始我入门的时候是看的小迪的网络教程,当然也推荐大家去看小迪的教程,或者直接小迪的实地培训班.这个可没什么利益关系,我认识他,他可不认识我,,但是我是在网上 ...
- f2fs源码分析之文件读写过程
本篇包括三个部分:1)f2fs 文件表示方法: 2)NAT详细介绍:3)f2fs文件读写过程:4) 下面详细阐述f2fs读写的过程. 管理数据位置关键的数据结构是node,node包括三种:inode ...
- Hbase结构简单、作法
Hbase架构简单介绍.实践 版权声明:本文博主原创文章,博客,未经同意不得转载.
- hbase架构和读写过程
转载自:https://www.cnblogs.com/itboys/p/7603634.html 在HBase读写时,相同Cell(RowKey/ColumnFamily/Column相同)并不保证 ...
- ARM过程调用标准---APCS简单介绍
介绍 APCS,ARM 过程调用标准(ARM Procedure Call Standard),提供了紧凑的编写例程的一种机制,定义的例程能够与其它例程交织在一起.最显著的一点是对这些例程来自哪里没有 ...
- HBase 文件读写过程描述
HBase 数据读写过程描述 我们熟悉的在 Hadoop 使用的文件格式有许多种,例如: Avro:用于 HDFS 数据序序列化与 Parquet:常见于 Hive 数据文件保存在 HDFS中 HFi ...
- 计算机启动过程的简单介绍 计算机启动流程 计算机BIOS作用 POST 开机自检 计算机启动顺序 分区表 操作系统启动
原文地址:4.计算机启动过程的简单介绍 计算机启动流程 计算机BIOS作用 POST 开机自检 计算机启动顺序 分区表 操作系统启动 计算机的启动
- hbase的读写过程
hbase的读写过程: hbase的架构: Hbase真实数据hbase真实数据存储在hdfs上,通过配置文件的hbase.rootdir属性可知,文件在/user/hbase/下hdfs dfs - ...
- Phoenix(sql on hbase)简单介绍
Phoenix(sql on hbase)简单介绍 介绍: Phoenix is a SQL skin over HBase delivered as a client-embedded JDBC d ...
随机推荐
- 组件化网页开发 / 步骤一 · 4-4 匹配HTML标签
组件化网页开发 / 步骤一 · 4-4 匹配HTML标签
- 011_Linux驱动之_s3c2410_gpio_getpin
1. 功能:获取引脚状态 2. 函数原型: unsigned int s3c2410_gpio_getpin(unsigned int pin) { void __iomem *base = S3C2 ...
- Mac工具库
1.文件传输工具 CyberDuck 2.解压缩工具 The Unarchiver 3. 录屏工具 LICEcap 4. 命令框工具 Go2Shell / iTerm 5. 提醒事项 OmniFocu ...
- MySQL Index 索引提示:force or use
一.使用索引提示(Index Hint)的条件 1.Mysql优化器错误的选择了某个索引.这种情况很少发生,需要做数据库的表.索引的统计分析. 2.某个SQL语句可选择的索引非常多,这个时候优化器执行 ...
- kill函数
kill函数/命令产生信号 kill命令产生信号:kill -SIGKILL pid kill函数:给指定进程发送指定信号(不一定杀死) int kill(pid_t pid, int sig); ...
- SpringMVC配置数据验证(JSR-303)
这篇文章已经过时了. 请参考比较合适的前后端交互方式. 1.pom.xml中追加hibernate-validator 2.在dto类的域上追加JSR-303的注解 public class Data ...
- openpyxl模块(excel操作)
openpyxl模块介绍 openpyxl模块是一个读写Excel 2010文档的Python库,如果要处理更早格式的Excel文档,需要用到额外的库,openpyxl是一个比较综合的工具,能够同时读 ...
- Shell基础之四 变量与运算
shell变量与运算 变量存在于内存中.假设变量str,设置或修改变量属性时,不带$号,只有引用变量的值时才使用$号.也就是说在内存中,标记变量的变量名称是str,而不是$str. 变量数据的存储方式 ...
- Linux下R环境安装
R环境的两种安装方式,源码编译安装和yum在线安装 第一种:源码编译安装 1.首先,从官网上下载3.5.0版本 2.下载完后记得解压,我的习惯是解压在/usr/local下面 tar -zxvf R- ...
- C#中正则表达式解析字符串信息
正则表达式提取0~9数字 private static string RegexPickupNumber(string str) { string pattern = @"[^0-9]+&q ...