Hbase相关
一、Hbase概念及特点
Hbase以表的方式组织数据,表由行(Row)以及列(Column)组成,行由row key和一个或多个列及其值组成,列必须属于某一列族(Column family),一个列族可以有一个或多个列(一列由列簇和列修饰符组成,他们通常由冒号(:) 分隔),其在存储架构中就是一个Hfile。Hbase中的列可以达到百万级,数据按主键排序,同时表按主键划分为多个Region。底层是LSM树(Long-Structed Merge Tree)。Hbase是无数据类型,所有数据都采用字符串存储。
(1) Hbase一个分布式的基于列式存储的数据库,基于Hadoop的hdfs存储,zookeeper进行管理。
(2) Hbase适合存储半结构化或非结构化数据,对于数据结构字段不够确定或者杂乱无章很难按一个概念去抽取的数据。
(3) Hbase为null的记录不会被存储,列中的数据可以是稀疏的,空值并不占用存储空间。
(4)基于的表包含rowkey,时间戳,和列族。新写入数据时,时间戳更新,同时可以查询到以前的版本.
(5) hbase是主从架构。hmaster作为主节点,hregionserver作为从节点。
缺点:
1、单一RowKey固有的局限性决定了它不可能有效地支持多条件查询
2、不适合于大范围扫描查询
3、不直接支持 SQL 的语句查询
二、Hbase应用场景
1、半结构化或非结构化数据。HBase支持动态添加列。
2、记录很稀疏。HBase为null的Column不会被存储,这样既节省了空间又提高了读性能。
3、多版本号数据。依据Row key和Column key定位到的Value能够有随意数量的版本号值,因此对于须要存储变动历史记录的数据,用HBase是很方便的。
4、仅要求最终一致性。
5、高可用和海量数据以及很大的瞬间写入量。WAL解决高可用,支持PB级数据,put性能高
6、索引插入比查询操作更频繁的情况。比如,对于历史记录表和日志文件。(HBase的写操作更加高效)
三、如何解决Hbase中region太小和太大带来的冲突
Region过大会发生多次compaction,将数据读一遍并重写一遍到hdfs 上,占用io,region过小会造成多次split,region 会下线,影响访问服务,调整hbase.hregion.max.filesize 为256m。
四、HBASE中compact作用
在hbase中每当有memstore数据flush到磁盘之后,就形成一个storefile,当storeFile的数量达到一定程度后,就需要将 storefile 文件来进行 compaction 操作。
Compact 的作用:
1、合并文件
2、清除过期,多余版本的数据
3、提高读写数据的效率
HBase 中实现了两种 compaction 的方式:Minor and Major:
1、Minor 操作只用来做部分文件的合并操作以及包括 minVersion=0 并且设置 ttl 的过期版本清理,不做任何删除数据、多版本数据的清理工作。
2、Major 操作是对 Region 下的HStore下的所有StoreFile执行合并操作,最终的结果是整理合并出一个文件。