简述HBase概念,简述hbase的特点

http://www.itjxue.com  2023-01-22 20:23  来源:未知  点击次数: 

hbase框架中使用了哪些概念

HBase提供了对HBase进行一系列的管理涉及到对表的管理、数据的操作java api。 常用的API操作有: 1、 对表的创建、删除、显示以及修改等,可以用HBaseAdmin,一旦创建了表,那么可以通过HTable的实例来访问表,每次可以往表里增加数据。

hbase列式数据库四维坐标是什么

实际上,HBase是一个列族数据库,而不是真正的列式数据库。

因为允许存放非结构化数据,所以HBase的数据类型只有简单的字符串类型,如果需要细分类型,需要用户自己处理。

HBase的四维模型中每个元素:

(1)行键(Row Key):最大长度为64KB的任意字符串。与关系型数据库一样,行键是行的唯一标志。

(2)列族(Column Family):这是理解列族数据库的关键概念。将数据行中的字段按照某种要求分成数个小组,每个小组包含若干个字段,每个小组就是列族。列族需要预先定义,并且不能随意修改。每行具有相同的列族,但不要求每个列族都存储数据。

(3)列限定符(Qualifier):每个列族包含多个字段,限定符用于区分不同的字段。列限定符不需要预先定义,因此每行可以有不同数量的列限定符,也可以认为列限定符就是字段。

(4)单元(Cell):存储数据的最小单元。单元中存储的是未经解释的字符串,需要通过行键、列族、列限定符、时间戳进行定位。

(5)版本(Version):这是HBase与其他数据库的不同之处。版本是一个64位整型数,可以由系统自动生成,也可以由用户自定义。引入版本后,存储在单元中的值不再只有一个,可以通过不同的时间戳(Timestamp)在同一单元中存入多个版本。

为什么说hbase是一个面向列的数据库

Hbase是一个面向列存储的分布式存储系统,它的优点在于可以实现高性能的并发读写操作,同时Hbase还会对数据进行透明的切分,这样就使得存储本身具有了水平伸缩性;

Hbase数据模型:HBase,Cassandra的数据模型非常类似,他们的思想都是来源于Google的Bigtable,因此这三者的数据模型非常类似,唯一不同的就是Cassandra具有Super cloumn family的概念,而Hbase目前没发现;

在Hbase里面有以下两个主要的概念,Row key,Column Family,我们首先来看看Column family,Column family中文又名“列族”,Column family是在系统启动之前预先定义好的,每一个Column Family都可以根据“限定符”有多个column.下面我们来举个例子就会非常的清晰了;

假如系统中有一个User表,如果按照传统的RDBMS的话,User表中的列是固定的,比如schema 定义了name,age,sex等属性,User的属性是不能动态增加的;

但是如果采用列存储系统,比如Hbase,那么我们可以定义User表,然后定义info 列族,User的数据可以分为:info:name = zhangsan,info:age=30,info:sex=male等,如果后来你又想增加另外的属性,这样很方便只需要info:newProperty就可以了。

HBASE 1.0

前身:BigTable

网页搜索:

google分布式存储系统BigTable依赖GFS

Hbase(bigtable的开源实现): 高可靠、高性能、面向列、可伸缩

存储结构化和半结构化的数据

优点:

水平可扩展性特别好:

依赖:

文件存储系统:HDFS

海量数据处理:MapReduce

协同管理服务:Zookeeper

满足了:大数据量的实时计算

数据类型:

? ? RDBMS:关系数据模型、多种数据类型

? ? Hbase:

数据操作:

存储模式:

索引:

数据维护:

可伸缩性:

? ? ? ? 纵向扩展:

? ? ? ? 水平扩展:

Hbase的访问接口:

? ? ? ? ? ? JAVA API

? ? ? ? ? ? shell

? ? ? ? ? ? thrift Gateway

? ? ? ? ? ? restful Gateway

? ? ? ? ? ? SQL接口:pig编写类sql? hive用hivesql访问Hbase

Hbase的数据类型:

? ? ? ? 列限定符

? ? ? ? 每个值都是未解释的bytes

? ? ? ? 一个行可以有一个行键和多列

? ? ? ? 表由列族组成

Hbase数据模型:

? ? 列族支持动态扩展、保留旧版本(HDFS只能追加数据)

基础元素:

? ? 行键 : rowkey

? ? 列族

? ? 列限定符

? ? 单元格 (时间戳概念、对应数据版本)

坐标概念:

? ? 四维定位:行键、列族、列限定符、时间戳

稀疏表

HBASE:面向列的存储:高数据压缩率、分析便捷

RDBMS :面向行存储,事务性操作(记录完整)、不便于分析(需要全表扫描)

4.3 HBASE 的实现原理

4.3.1 库函数 、master服务器、region服务器

Master服务器:

分区信息进行维护和管理

维护region服务器列表

确认当前工作的region服务器

负责对region进行分配和负载平衡

对表的增删改查

region服务器:

客户端不依赖于Master获取位置信息

用户数据的存储和管理

Region服务器--10-1000个region -----Store是一个列族----每个列族就是一个Hfile----所有region公用1个Hlog

写数据流程:Region服务器---写缓存Memstore---写日志(Hlog)

读数据流程:Region服务器-读缓存Memstore(最新数据)----StoreFile

缓存刷新:周期性将缓存内容刷写到Storefile 清空缓存---Hlog写入标记

每次刷写会生成新的StoreFile 每个Store包含多个StoreFile

每个Region服务器都有一个自己的Hlog,将启动检查确认缓存刷新是否有新的内容需要刷写,发现则刷写新的storefile,完成后删除Hlog,开始对外提供服务

Storefile的合并,storefile 的数量达到阈值后,会进行合并。当Storefile超过大小阈值则会触发Region的分裂

4.4 Hlog的工作原理

Zookeeper负责监听region服务器,由master处理故障,通过故障服务器的Hlog恢复,按region切分Hlog,将region和对应的Hlog分配到新的region服务器上

一个HBASE表会被划分成多个Region(1G-2G 取决于服务器性能)

同一个region不会被拆分到不同服务器上

Region的寻找:

Meta表:regionID 服务器ID 存储元数据

Root表:只有一个region

三级寻址:

zookeeper文件---root表-多个meta表--多个用户数据表

客户端会有Hbase三层寻址的缓存,调用访问Hbase的接口,缓存失效后,再次寻址

zookeeper决定master服务器,确保只有一个master

4.5 Hbase的应用方案

性能优化:

1)时间靠近存放----将时间戳引入行键,使用Long.max-时间戳进行排序

2)提升读写性能,创建表时设置HcloumnDescriptor.setMemory=true,会将表放入内存的缓存中

3)节省存储·空间----设置最大版本数、保存最新版的数据,将最大版本参数设置为1

4)timetolive参数,会将过期数据自动清空

检测Hbase性能:

Maste-status(web浏览器查询)

ganglia

OpenTSDB

Armbari

sql 查询HBASE

1)hive整合hbase

2)Phoenix

Hbase 二级索引 (辅助索引)

默认只支持对rowkey进行索引

Hbase行访问:

1)单行键访问

2)确定起点和终点访问区间数据

3)全表扫描

二级索引样例:

? ? Hindex? ? Hbase+redis? Solr+ Hbase

二级索引的机制:

? ? ? ? Hbase Coprocessor?

? ? ? ? endpoint? ---存储过程

? ? ? ? observer----触发器

? ? ? ? 通过Observer监测数据插入动作,同步写入索引表,完成对表和列的索引

? ? ? Hbase 主表 索引表

4.6 HBASE的shell命令

三种部署模式:单机 伪分布式? 分布式

HDFS

创建表

create table, F1, F2, F3

list table

每次只能为1行的1列添加数据

put? table R1,R1:C1 ,“1,2,3”

scan? table? R1,{column='R1:C1'}

get? table

删除表:

disable table +drop table

4.7 JAVA API +HBASE

(责任编辑:IT教学网)

更多

推荐网站经济文章