Hbase 理论知识

HBase的应用场景:

需对数据进行随机读操作或者随机写操作; 
大数据上高并发操作,比如每秒对PB级数据进行上千次操作; 
读写访问均是非常简单的操作。

HBase概述:

HBase是一个基于HDFS的面向列的分布式数据库,源于Google的BigTable论文;
HBase是Apache Hadoop生态系统中的重要组成部分,主要用于海量结构化数据存储;
HBase内部管理的文件全部存储在HDFS中;

NoSQL简介:

NoSQL=No SQL(也就是说不仅仅是SQL,比如HBase就拥有Phoenix工具);
常见的NoSQL与RDBMS:
NoSQL:HBase, Redis, MongoDB;
RDBMS:MySQL,Oracle,SQL Server,DB2;

HBase数据库的特点:

它介于NoSQL与RDBMS之间,仅能通过主键和主键的range来检索数据;
HBase的查询功能简单,不支持JOIN操作;
不支持复杂的事务,只支持行级事务(可以通过hive实现多表JOIN的操作);
HBase中支持的数据类型,byte[],底层存储数据的结构都是byte[];
主要用来存储结构化和半结构化的松散数据;

结构化、半结构化和非结构化区别:

结构化:数据结构字段含义确定,清晰,典型的如数据库中的表结构。
半结构化:具有一定结构,但语义不够确定,典型的如 HTML 网页,有些字段是确定的(title), 有些不确定(table);
非结构化:杂乱无章的数据,很难按照一个概念去进行抽取,无规律性;
与Hadoop一样,HBase目标主要依靠横向扩展,通过不断增加廉价的商用服务器,来增加计算和存储能力;

HBase中表的特点:

大:一个表可以有几十亿行,上百万列;
面向列:面向列族的存储和权限控制,列簇的独立检索;
稀疏:对于为空的列,并不占据存储空间,因此表可以设计的非常稀疏;
无模式:每行都有一个可排序的主键和任意多的列;

HBase中常见名词:

Row Key			类似于myql的主键,唯一,标识一行数据,可以是任意字符串最大(64kb);
ColumnFamily	列族,一个列族下边可以有很多列;
TimesTamp		时间戳,一般自动赋值,也可以手动赋值,非常重要,避免数据版本冲突,最新的数据排在最前面;

HBase 存储特点:

每个Column Family存储在HDFS上的一个单独的文件中;
Row Key和Version Number在每个Column Family中均有一份;
空值不会被保存;
HBase为每个值维护了多级索引,即Row Key、Column Family、Column 	Name、TimeStamp等;

HBase 物理存储:

Table中的所有行都按照Row Key的字典序排列;
Table在行的方向上分割为多个Region;
Region按大小分割的,每个表开始只有一个Region,随着数据的增多,region会不断的增大;
当增大到一个阈值时,Region就会等分成两个新的Region,之后会有越来越多的Region;
Region是HBase中分布式存储和负载均衡的最小单元;
不同的Region分布到不同的RegionServer上;
Region虽然是分布式存储的最小单元,但并不是存储的最小单元;
(Region由一个或者多个Store组成,每个Store保存一个Column Family;
每个Store又由一个memStore和0至多个StoreFile组成,
memStore存储在内存中,StoreFile存储在HDFS上。)

HBase的基本架构:

Client:包含访问HBase接口,并维护Cache来加快对HBase的访问;
Zookeeper:	保证在任何时候,集群中只有一个Master;
			存储所有Region的寻址入口;
			实时监控Region Server的上线下线活动信息,并实时通知给Master;
			存储HBase的Schema和table元数据;
Master:	为Region Server分配Region;
			负责Region Server的负载均衡;
			发现失效的Region Server并重新分配其他的Region;
			管理用户对table的增删改查操作;
Region Server:	管理master为其分配的region;
				Region Server维护Region,处理对这些Region的IO请求;
				Region Server负责和底层HDFS的交互,存储数据到HDFS;
				负责region变大以后的拆分,负责storefile的合并,master给的指令;
HDFS:	HDFS为Hbase提供最终的底层数据存储服务;
		同时为HBase提供高可用(Hlog存储在HDFS)的支持;
		提供元数据和表数据的底层分布式存储服务,数据多副本,保证的高可靠和高可用。

1Zookeeper的作用:

HBase依赖Zookeeper;
默认情况下,HBase管理Zookeeper实例,比如启动或者停止Zookeeper;
Master与Region Servers启动时会向Zookeeper中注册;
Zookeeper的引入使得Master不再是单点故障;

容错性

HBase容错:
	Zookeeper重新选择一个新的Master;
	无Master的过程中,数据读取仍照常运行;
	无Master的过程中,Region切分、负载均衡等无法进行;
RegionServer容错:
	定时向Zookeeper汇报心跳,如果一旦一段时间内未出现心跳,
	Master将该RegionServer上的Region重新分配到其他RegionServer上;
	失效服务器上“预写”日志(HLOG)由主服务器进行分割并派送给新的RegionServer;
Zookeeper容错:
	Zookeeper是一个可靠的服务,一般配置三到五个实例。

Region寻址

Client请求ZooKeeper获取.META.所在的RegionServer的地址。
Client请求.META.所在的RegionServer获取访问数据所在的RegionServer地址,client会将.META.的相关信息cache下来,以便下一次快速访问。
Client请求数据所在的RegionServer,获取所需要的数据。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值