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二级索引 多个表索引 多个列索引 基于部分列值的索引
|