HBase 不适合大文件应用场景
**都可以存储---------->按0和1存储(字节byte)
非关系型数据库管理发展流程
人工纸质----文件系统----关系型数据库----非关系型数据库
互补状态
非关系型数据库分类:
列示:HBase
文档:mongodb
键值对:redis
图形:no4j
HBase采用列存储
HBase 高可靠(数据最终存储HDFS) 高性能(对海量数据访问----实时级别)
面向列(数据按照列族colum family进行存储) 可伸缩(列不够随时添加)
zookeeper (主备选举
主备倒换
微型数据库 用于存储meta表
读取快的原因 1.缩小读取范围 只读取与自己相关的数据
2.每个数据存储产生元数据 (记录数据存储的位置)
查询数据可以借助元数据快速定位数据位置 元数据存储Zookeeper(meta)
表 ---region(存储的最小单元)----行键----列族----列----时间戳
(计算机当前时间------每个存储的数据都有)
region是由region Server服务进程来管理
核心(Store)
region进行Split操作时 将一个HFile文件真正分开到两个Region的过程发生在Compaction阶段
列族(物理存储单元) 列族
region1 行键1 列colum name region1由一行或者多行来组成
region1 行键2 age region1达到10g自动分裂(按行划分)
region2 行键3 中空的不占用资源 region1
region2 行键4 region1
HBase中的版本----->不同时间写入到HBase中的数据 默认查询最新的一个版本
分裂过程 1.region划分 2.列族
HBase架构中的进程
client : 入口 接受用户的读写请求
HMaster: 负责管理 HR(包括负责均衡,HR故障后的任务迁移)
采用主备部署,单实例 不会接受过多的请求 不会出现单点瓶颈
client --------> Zookeeper <--------- HMaster
Hlog:负责记录HR日志----------当电脑死机保存数据===所以在HR前面 先写日志再写数据
HRegion Server(核心模块):负责维护分给自己的Region
相应用户读写请求
读取方式
Scan:通表扫描
get:按条件进行查询
HBase过滤器
布隆过滤器BloomFilter---精确判断数据不存在 如果判断数据存在 可能有误差
用来优化一些随机读取的场景
向HBase 写入数据就会计算这个数据的<hash>值
用哈希值对区间长度去余 %4 如果余数1
在对应位把0改成1 如果是1不改变 0100
HBase 的Region只记录起始键 没有结束键 下一个Region(行键值)起始键就是上一个的结束键
create '表名','列族1','列族2','列族3'.......
删除表之前要使表下线 disable '表名'
drop '表名'
Hindex二级索引
多个表索引
多个列索引
基于部分列值的索引