
HBase
法海你懂不
梦想每个人都有,但不是每个人都有勇气去坚信...
展开
-
HBase过滤器,计数器和协处理器
过滤器HBase过滤器(filter)提供了非常强大的特性来帮助用户提高其处理表中数据的效率。用户不仅可以使用HBase中预定义好的过滤器,而且可以实现自定义的过滤器。HBase中两种主要的数据读取函数是get()和scan(),它们都支持直接访问数据和通过指定的起始行健访问数据的功能。也可以添加额外的限制条件(比如列族、列、时间戳和版本号)来过滤数据。同时用户还可以通过继承Filter类...原创 2018-03-06 21:24:56 · 1040 阅读 · 0 评论 -
列式数据库
行式数据库是按照行存储的,行式数据库擅长随机读操作不适合用于大数据。像SQL server, Oracle, MySQL等传统的是属于行式数据库范畴。列式存储数据库以列为单位聚合数据,然后将列值顺序地存入磁盘。列式数据库从一开始就是面向大数据环境下数据仓库的数据分析而产生。简单来说: 行式数据库把一行中的数据值串在一起存储起来,然后再存储下一行的数据,以此类推。 列式数据库把一列...原创 2018-02-27 21:15:51 · 2112 阅读 · 0 评论 -
列族
HBase列式存储格式允许用户存储大量的信息到相同的表中,而在RDBMS模型中,大量信息则需要切分成多张表存储。通常的数据库范式化规则不适合HBase,因此HBase中表的数量相对较少。虽然理论上HBase表是由行和列组成的,但是从物理结构上看,表存储在不同分区,即不同的region。下图展示了数据存储逻辑与物理上的不同。每个region只在一个region服务器中提供服务,而region直接...原创 2018-03-07 21:41:27 · 5731 阅读 · 0 评论 -
HBase客户端
用户可以直接使用HBase客户端API,或者使用一些能够将请求转换成API调用的代理,这些代理将原生Java API包装成其他协议,这样客户端可以使用API提供的任意外部语言来编写程序。通常来说,外部API实现了专门基于Java的服务,而这种服务能够在内部使用HTable客户端提供的API。客户端与网关之间的协议是由当前可用选择以及远程客户端的需求决定的。HBase提供了REST、Thrift...原创 2018-03-07 22:41:25 · 5815 阅读 · 0 评论 -
HBase的基本结构
HBase 的表、列和单元格基本单位是列(column),一列或多个列成行(row),一个行有唯一行健(rowkey)确定存储,每个列可能有多个版本,多个版本存储在单元格(cell)中,行序是按照字典顺序进行排序的,意思是从左到右一次对比每一个键。排列顺序可能跟预期的不一样,可以添加补键来获取正确的顺序,比如 row-1 永远小于 row-2,无论后面是什么,将始终按照这个顺序排列。...原创 2018-02-28 22:18:05 · 2310 阅读 · 0 评论 -
HBase 数据倾斜和事务
行健设计HBase有两种基本键结构:行健(row key)和列键(column key)。两者都可以存储有意义的信息,这些信息可以分为两类,一种是键本身存储的内容,另一种是键的排列顺序。时间序列当处理流式事件时,最常见的数据就是按照时间序列组织的数据。由于HBase的数据组织方式,数据可能会被存储到一定的范围内,比如一个有特定起始键和停止键的region中。由于region只能由一...原创 2018-03-17 20:47:35 · 1269 阅读 · 0 评论 -
HBase 架构 | 存储
目前主流的RDBMS和其他非关系型数据库底层数据库结构大都会使用B树或B+树,有时还会使用LSM树(Log-Structured Tree)。HBase与BitTable一样,是基于LSM树的系统。基本结构为了了解HBase存储层,下图给出了一个顶层结构图。从上图中可以看到HBase主要处理两种文件,预写日志(WAL),实际文件。这两种文件主要由HRegionServer管理。...原创 2018-03-11 20:53:38 · 1453 阅读 · 0 评论 -
HBase行锁和扫描
HBase的主要客户端接口是由org.apache.hadoop.hbase.client包中的HTable类提供的,通过这个类,用户可以完成向HBase存储和检索数据,以及删除无效数据之类的错做。所有修改数据的操作都保证了行级别的原子性,这会影响到这一行数据所有的并发读写操作,换句话说,其他客户端或线程对统一行读写操作都不会影响到改行数据的原子性:要么读到最新的修改,要么等待系统允许写入该行...原创 2018-03-05 22:55:35 · 714 阅读 · 0 评论 -
WAL (Write-Ahead Logging )
类似于MySQL的binary log,WAL存储了对数据的所有更改,这使得服务器崩溃的时候,可以有效地回放日志,是数据得以恢复到崩溃以前。这也就意味着如果将记录写入到WAL失败时,整个操作也可以认为是失败的。WAL就像日志中心一样,它被同一个region server中的所有region共享。当客户端启动一个操作来修改数据,该操作便会被封装成一个KeyValue对象实例中,并通过RP...原创 2018-03-13 22:15:23 · 4918 阅读 · 1 评论