大数据之Hbase介绍

Hbase的安装部署

点这里

Hbase 基本介绍

​ hbase 建立在HDFS之上的bigtable java版本。

​ hbase是一个数据库。

​ 不支持join等复杂sql操作,

​ 不支持复杂的事务(行级的事务)

​ Hbase中支持的数据类型:byte[]

​ 一个表可以有上十亿行,上百万列

​ 面向列(族)的存储

​ 使用key-value操作数据

​ 对于为空(null)的列,并不占用存储空间, 表可以设计的非常稀疏。
在这里插入图片描述
在这里插入图片描述

Hbase使用场景

海量数据、精确查询、快速返回。

​ 海量数据:是背景(数据量)

​ 精确查询:是业务场景。

​ 快速返回: 是业务对性能要求。

Hbase的特性

​ 高可靠

​ 性能高

​ 列式存储

​ 可伸缩

​ 实施读取

​ noSQL(不支持SQL)

hbase用途

​ 主要用来存储结构化半结构化的松散数据。

hdfs:什么都能存储

MR:不能做快速返回

最初的大数据,只有hdfs+ MR ,此时众多的企业有的数据依然是结构化数据(存储数据库内)。大数据内没有提供快速查询的技术。

​ 需求:就是在大数据内添加一个能够处理(快速查询)结构化数据的组件。hbase在最初设计的时候就考虑了扩展性。hbase具有很好的扩展性。

HBase与Hadoop的关系

​ HDFS

	适合一次读取大量数据,例如:10G   1t

​ 不适合读取少量(几条)数据。

​ 适合一次写入多次读取

​ HBASE

​ 不适合一次读取大量数据,例如:10G 1t

​ 适合读取少量(几条)数据。

​ 多次写入多次读取

RDBMS与HBase的对比

​ RDBMS

​ 支持sql

​ 支持事务

​ 支持Join

​ HBASE

​ 不支持sql

​ 不支持事务

​ 不支持Join

HBase特征简要

1 海量存储

​ Hbase适合存储PB级别的海量数据,在几十到百毫秒内返回数据。

2 列式存储

​ 这里的列式存储其实说的是列族存储

3 极易扩展

​ 处理能力(RegionServer)的扩展,一个是基于存储的扩展(HDFS)。

4 高并发

​ 这里说的高并发,主要是在并发的情况下,Hbase的单个IO延迟下降并不多

5 稀疏

​ 在列数据为空的情况下,是不会占用存储空间的。

hbase 基础架构

​ Client

​ Zookeeper

​ Master

​ Redgionserver
在这里插入图片描述

hbase shell 命令

​ 创建表 表明+ N 个列族

​ create ‘user’, ‘info’, ‘data’

​ 向表添加数据 : 表名 + rowkey +列族:列 + 列的值

​ put ‘user’, ‘rk0001’, ‘info:name’, ‘zhangsan’

​ 根据数据查询

​ get ‘user’, ‘rk0001’, {FILTER => “ValueFilter(=, ‘binary:zhangsan’)”}

​ 包含某个字符

​ get , ‘rk0001’, {FILTER => “(QualifierFilter(=,‘substring:a’))”}

HABSE底层原理

​ 底层架构
在这里插入图片描述
这里一个regionserver就是一个hbase的服务器

Client:

​ 访问hbase底层数据的入口,含访问hbase的API接口,维护着一些cache来加快对hbase的访问

Zookeeper:

1、zk的选举机制 保证任何时候,集群中只有一个master

2、 实时监控Region Server的状态,将Region server的上线和下线信息实时通知给Master

​ 3、 存贮所有Region的寻址入口

​ 4 、存储Hbase的schema,包括有哪些table,每个table有哪些column family

Master职责

​ 1 为Region server分配region

​ 2 负责region server的负载均衡

​ 3 发现失效的region server并重新分配其上的region

​ 4 处理schema更新请求

​ 说明:client访问hbase上数据的过程并不需要master参与,master仅仅维护者table和region的元数据信息

Region Server职责

​ 1 Region server维护Master分配给它的region,处理对这些region的IO请求

​ 2 Region server负责切分在运行过程中变得过大的region

HBase的表数据模型

在这里插入图片描述

Row Key(hbase最重要的设计)

​ 访问hbase数据的方式(作用在rowkey)

​ 1 通过单个row key访问、

​ 2 通过row key的start key, endkey

​ 3 全表扫描

​ rowkey 的要求:

​ 最大长度是 64KB

Hbase会对表中的数据按照rowkey排序(字典顺序)

列族Column Family

​ 列族是表的schema(表名称-列族)的一部分,而列不是。

​ 每个列,都归属与某个列族

列Column

​ 列族下面的具体列,属于某一个ColumnFamily

时间戳

​ 时间戳可以由hbase(在数据写入时自动 )赋值,工程师也可以自己设置时间戳。

​ 不同版本的数据按照时间倒序排序。

hbase提供了两种数据版本回收方式:

​ 1 保存数据的最后n个版本

​ 2 保存最近一段时间内的版本

hbase确定一个数据

​ {row key, column( = +

hbase物理存储结构

整体结构

在这里插入图片描述
一个regionserver内可以存储多个表的region

一个表内的region,只属于这个表。但是这个表的region,可能分配到不同的节点(regionserver)上。

region 的拆分

​ region按大小分割的(默认10G),每个表一开始只有一个region,当数据量达到阈值(10G)时,会将一个region 等分成两个region.

​ region是Hbase中分布式存储和负载均衡的最小单元,

​ regionserver与region是一对多的关系。一个region是能属于一个regionserver.一个regioserver可以存储多个region

rgion内部细分

​ HRegion由一个或者多个Store组成,每个store保存一个column family。每个Strore又由一个memStore和0

至多个StoreFile组成

​ 数据查询时,客户端检索数据时,先在memstore找,找不到再找storefile。
在这里插入图片描述

Hlog(WAL)

​ 每个Region Server维护一个Hlog,而不是每个Region一个.

​ 作用:数据在写入内存之前优先写入Hlog, 防止数据丢失。防止数据写入内存后,没有flush之前,断电导致内存内的数据丢失。

​ 弊端:数据的写入速度相对较慢,慢的原因是数据写操作执行两次。

​ Hlog日志可以关闭,关闭后写入速度能够加快,但是存在数据丢失的风险。

Hlog日志的拆分

​ 1、放数据写入日之后,如果发生异常,那么就会关闭当前日志文件,
​ 2、日志人间大小维度:当日志文件大小达到一定的量时,就会关当前日志,生成新的日志。

​ 日志的大小是HDFS数据块大小的0.95倍。

​ 3、时间维度:默认的时间为1小时,即一个小时生成一个日志文件

hbase读写过程

hbase读的过程

​ 前置条件:

​ 1、什么是meta表

​ meta表是hbase自带的一个表。这里存储的数据是每个region的startkey 和endkey等信息
在这里插入图片描述
​ 2、meta表存在哪里

​ 存储在某个regionserver.

​ 读取流程

​ 1、首先Client先去访问zookeeper,从zookeeper里面获取meta表所在的位置信息

​ 2、Client通过刚才获取到的IP来访问Meta,读取Meta内的数据,

​ 3、Client通过元数据(meta表内的数据)中存储的信息,找到region在哪个HRegionServer ,访问对应的HRegionServer读取数据
在这里插入图片描述
三步找到原始数据

​ 1、到zookeeper找到meta

​ 2 通过meta找到数据所属的region

​ 3 通过region和regionserver的对应关系,找到regionserver,

​ 最后读取数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值