HBase简介,基本组成,基础架构

hbase

  • hbase 是什么? 由哪些模块构成

  • hbase的优缺点以及应用场景

  • hbase和关系型数据库的区别

Hbase 简介

Hbase是一个分布式的,面向列的开源数据库
Hbase在Hadoop之上提供类似于BigTable的能力
Hbase不同于一般的关系型数据库,它适合存储非结构化的数据

BigTable是什么?
bigtable 是基于google 的GFS的面向列的可扩展的性能很好数据库

什么是面向列的数据库 (把每一列数据放一起存储)?

行数据库

ID UserName Password
1 Tom 123456
2 Jerry 123456

列数据库

RowKey Column Family
rk_id cf:col1=1 cf:col2=2
rk_username cf:name1=tom cf:name2=jerry
rk_password cf:pwd1=123456 cd:pwd2=123456

为什么Hbase适合非结构化数据存储?
结构化数据:可以用二维表格存储
非结构化数据:表格,图片,文档
可以将二进制数据存储到Hbase中。

Hbase 和Hive 用什么区别?

hive 是基于hadoop的数据仓库工具,它适合于对一段时间内数据分析查询。
hbase适合大数据的实时查询。

hbase和hdfs有什么不同?
hbase建立在hdfs之上,利用了hadoop文件系统的容错能力;
hbase提供对数据的随机实时读写/访问能力;
hbase内部使用哈希表,并存储索引,可以对hdfs文件中的数据进行快速查询;

Hbase使用场景

瞬间写入量很大,常用数据库不好支撑或需要很高支撑成本的场景
数据需要长久保存,且会持久增长到较大的场景
hbase不适用join,多级索引,表关系复杂的数据模型

HBase 概念

  • NameSpace : 可以把NameSpace理解为RDBMS的“数据库”
  • Table:表名必须是能用文件路径里的合法名字(Hbase表映射为HDFS上文件)
  • Row : 在表里面,每一行代表一个数据对象,每一行都是以一个行键来进行唯一标识的,行键没有特定的数据类型,以二进制字节来存储
  • Column :Hbase的列由Column family 和Column qualifier 组成,由冒号(:)进行间隔,比如family :qualifier
  • RowKey : 可以唯一标识一行记录,不可被改变,改变的唯一方式,就是删除,然后再插入
  • Column Family:在定义HBase表的时候需要提前设置好列族,表中所有的列都需要组织在列祖里面,在文件系统中,一个Column Family中的Column是存储在一起的。列簇一旦确定好,就不允许更改了,因为更改会影响到真实的物理存储。
  • Column Qualifier:列族中的数据通过列标识来进行映射,Column Qualifer就是key,存储的值就是对应的value。
  • Cell:每一个行建,列簇,列标识共同组成的单元
  • TimeStamp:每一个值都有一个timestamp,作为该值特定版本的标识符。

HBase和传统关系型数据的区别

HBase RDBMS
数据库大小 PB GB,TB
数据类型 Bytes 丰富的数据类型
事务支持 ACID只支持单个ROW级别 全面的ACID支持,对Row和表的支持
索引 只支持RowKey 支持
吞吐量 百万/秒 数千/秒

HBase数据模型

可以把HBase理解为一个大map ,rowkey,column family,column qualifer,timestamp ,value 层层深入。

{
	"0001":{                        //rowkey
		"FileInfo":{				//column family
			"name":{                //column qualifer
				"timestamp1":"file1.txt" // timestamp1 为 timestamp file1.txt 为value
			},
			"tepe":{
				"timestamp1":"txt"
			}
		},
		"SaveInfo":{
			"create":{
				"timestamp1":"jack"
			},
			"path":{
				"timestamp1":"/home",
				"timestamp2":"/homne/jack"
			}
		}
	}
}

Hbase基础架构

2993 NameNode
3410 ResourceManager
4265 HRegionServer
3098 DataNode
3515 NodeManager
4108 HMaster
4908 Jps
3903 QuorumPeerMain
搭建伪分布式开发环境之后,启动hadoop相关服务进程,启动hbase以来的zk,启动hbase相关的服务进程之后的进程如上。会发现
HBase简介,基本组成,基础架构_第1张图片

可以看到hbase依赖于hdfs,除了hdfs之外,客户端通过java api 操作hbase ,中间则为hbase的基础架构,它分为,Hmaster,Region Server ,Zookeeper

HMaster

  • HMaster 是HBase主从集群架构中的中央节点
  • HMaster将Region分配给RegionServer,协调RegionServer的负载均衡并维护集群的状态
  • 维护表和Region的元数据,不参与数据的输入和输出过程

Region Server

  • 维护HMaster分配给他的region,处理对这些region的io请求
  • 负责切分运行过程中变得过大的region

zookeeper

  • zookeeper是集群的协调器,HA解决方案
  • HMaster启动将系统表加载到zookeeper(如果使用hbase api会发现,当相连接hbase读写数据的时候,不需要知道hmaster地址,也不需要知道hregionserver地址,只需要知道zookeeper集群的地址就可以了,zookeeper中存储了meta信息,region信息等等)。
  • 提供HBase Region Server状态信息

——————————————————————————————-

总结

一句话描述hbase
apache顶级项目,来自google bigtable开源实现,高性能高可扩展的列式数据库,相比于传统的关系型的行式数据库,可以用更低廉的成本,达到更大数据量的存取,而且它本身基于hdfs,天生具有hbase高容错能力。
支持数据的随机读取,达到每秒数百万的吞吐量。
比如存储海量非结构化或者半结构化的数据,需要很高的吞吐量,而且常见查询也不涉及join,多级索引,那么hbase是非常适用的一款列式数据库。

你可能感兴趣的:(hbase存储系统)