HBase数据存取流程

一、HBase的特点是什么

1.HBase一个分布式的基于列式存储或者行式存储的数据库,基于hadoop的hdfs存储,zookeeper进行管理。

2.HBase适合存储半结构化或非结构化数据,对于数据结构字段不够确定或者杂乱无章很难按一个概念去抽取的数据。

3.HBase为null的记录不会被存储.

4.数据存储模式为key,value模式:(Table,Rowkey,Column,Timestamp)-> value

5.HBase是主从架构。Hmaster作为主节点,Hregionserver作为从节点。

二、HBase存数据流程

流程:Client请求Zookeeper确定meta表所在的RegionServer所在的地址,接着根据Rowkey找到数据所归属的RegionServer;用户提交put或delete请求时HbaseClient会将put或delete请求添加到本地buffer中,符合一定条件

会通过异步批量提交服务器处理。

接着数据到达Region后,服务端处理流程如下:

流程:RegionServer去获取RowLock,region更新共享锁;接着Hbase会先写写日志WAL(数据可靠性)再写缓存MemStore(阈值默认64M,每个列族对应一个Store下的MemStore);然后释放锁后将日志落到HDFS;若MemStore达到阈值则将缓存数据落磁盘StoreFile,最后多个StoreFile发生合并;若StoreFile很大会触发split操作,将当前region分割成2个Region,并同步到Hmaster。

三、HBase取数据流程

HbaseClient的操作和存数据类似

服务器操作流程:

RegionServer收到get请求后,对当前Region进行Scan,接着会根据列族对Store进行Scan,同时会对对应的MemStore进行Scan;最后找到我们要的数据返回给Client。注意:一个StoreScanner会对应多个StoreFileScanner,整个过程是一个层级关系。

四、HBase存取优化

检索优化(BloomFilter):应用BloomFilter来提高随机读的性能,BloomFilter是列族级别的配置

五、HBase API使用

原文地址:https://www.cnblogs.com/nicoleljc/p/9976555.html

时间: 2024-11-10 11:21:20

HBase数据存取流程的相关文章

HBase 数据读写流程

HBase 数据读写流程 2016-10-18 杜亦舒 读数据 HBase的表是按行拆分为一个个 region 块儿,这些块儿被放置在各个 regionserver 中 假设现在想在用户表中获取 row key 为 row0001 的用户信息 要想取得这条数据,就需要先找到含有此条记录的 region HBase 是如何定位到具体 regionserver 中的具体 region 的呢? HBase 中有一个内置的 hbase:meta 表,其中记录了所有表的所有 region 的详细信息 例如

hbase数据写入流程深度解析

2019/3/28 星期四hbase数据写入流程深度解析在看此链接之前,可以写查看 hbase读写请求详细解释 中的写请求流程 https://blog.51cto.com/12445535/2356085 简介:hbase设置之初就是为了应对大量的写多读少的应用,他出色的写性能,在一个100台RS的集群可以轻松地支撑每天10T的写入量.hbase的写数据流程大体分为3部分1.客户端的写入流程2.服务端的写入流程3.wal的工作原理 我们先回顾一下hbase写数据流程写请求处理过程小结1 cli

hbase数据存取策略

复制策略是hadoop文件系统最核心的部分,对读写性能影响很大,hadoop和其它分布式文件系统的最大区别就是可以调整冗余数据的位置,这个特性需要很多时间去优化和调整. 一.数据存放 目前hadoop采用以机柜为基础的数据存放策略,这样做的目的是提高数据可靠性和充分利用网络带宽.当前具体实现了的策略只是这个方向的尝试,hadoop短期的研究目标之一就是在实际产品环境中观察系统读写的行为,测试性能和研究更深入的规则. 一个大的hadoop集群经常横跨多个机柜,而不同机柜之间的数据通讯同经过交换机或

Hbase数据存储原理与读写详解

1.HBase的数据存储原理 一个HRegionServer会负责管理很多个region 一个*region包含很多个store 一个列族就划分成一个store** 如果一个表中只有1个列族,那么每一个region中只有一个store 如果一个表中有N个列族,那么每一个region中有N个store 一个store里面只有一个memstore memstore是一块内存区域,写入的数据会先写入memstore进行缓冲,然后再把数据刷到磁盘 一个store里面有很多个StoreFile, 最后数据

记一次测试环境Hbase数据备份恢复以及恢复后部分表无法删除的问题处理

一.Hbase数据备份恢复 说明: 因为测试环境要修改hadoop配置文件hdfs-site.xml的参数hdfs.rootdir 修改前的配置 <property> <name>hbase.rootdir</name> <value>hdfs://masters/hbase1</value> </property> 修改后的配置 <property> <name>hbase.rootdir</name&

【转】大数据存取的选择:行存储还是列存储?

上个月参加了一个云存储的技术讨论会.这一个月里,陆续收到几位同学讨论大数据保存和处理的邮件.今天是周末,索性把这个月的交流内容整理写下来,供各位参考. 目前大数据存储有两种方案可供选择:行存储和列存储.业界对两种存储方案有很多争持,集中焦点是: 谁能够更有效地处理海量数据,且兼顾安全.可靠.完整性.从目前发展情况看,关系数据库已经不适应这种巨大的存储量和计算要求,基本是淘汰出局.在已知的几种大数据处理软件中,Hadoop 的 HBase 采用列存储,MongoDB 是文档型的行存储,Lexst

iOS本地数据存取,这里就够了

iOS本地数据存取,看这里就够了 应用沙盒 每个iOS应用都有自己的应用沙盒(应用沙盒就是文件系统目录),与其他文件系统隔离.应用必须待在自己的沙盒里,其他应用不能访问该沙盒 应用沙盒的文件系统目录,如下图所示(假设应用的名称叫Layer) 应用沙盒的文件系统目录 应用沙盒结构分析 应用程序包:(上图中的Layer)包含了所有的资源文件和可执行文件 Documents:保存应用运行时生成的需要持久化的数据,iTunes同步设备时会备份该目录.例如,游戏应用可将游戏存档保存在该目录 tmp:保存应

spark读取hbase数据,如果表存在则不做任何操作,如果表不存在则新建表。

import java.text.SimpleDateFormat import java.util.Date import org.apache.hadoop.hbase.{HColumnDescriptor, HTableDescriptor, HBaseConfiguration} import org.apache.hadoop.hbase.client.{HBaseAdmin, Put, Result, Scan} import org.apache.hadoop.hbase.io.I

如何将关系型数据表转换至hbase数据表

首先需要把关系型数据库的数据表的数据增加由 "纵向延伸",转变为HBase数据表的"横向延伸" 一.Hbase的存储结构 a)      HBase以表(HTable)的形式存储数据 b)     HTable包括很多行,每行通过RowKey唯一标记,行按照RowKey的字典序排列,表在行的方向上分割为多个HRegion c)      每行包括一个RowKey和多个Column Family,数据按照Column Family进行物理切割,即不同Column Fa