HBase学习总结
- 是一个基于HDFS支持结构化数据存取的分布式存储系统。实现了HDFS上的随机读写功能。通过标记删除、多版本管理、HFile合并等手段实现高性能。可以直接连接在线业务系统。
- 架构:
- ZK 管理 HMaster
- HMaster管理HRegionServer:监控HReginServer整个生命周期,负责表数据负载均衡和Regin切分
- HRegionServer管理HRegion(表)和HLog
- 一张表对应一到多个HRegion,一个HRegion 管理多个Store
- 每个Store对应一个列簇,一个列簇对应一个或多个Store
- Store包含MemStore和StoreFile(以HFile格式存储)
- 数据结构
- Column Family:可以包含多列,没有类型,存储都为字节码
- 版本:可以指定数据库中保留最近的几份数据
- 时间戳:插入时可以指定时间戳,不指定就是当前时间戳。删除是对当前时间戳打标记。
- RowKey的设计问题,是面试时常问的。最大64KB。实际应用中10100bytes,最常用70100bytes
- Cell:由ROWKEY和CF、VERSION 唯一确定的一个存储单元。无类型、字节码存储
- Namespace:相当于数据库的database或者schema
- 技术原理
- 读比写慢,读流程和HMaster没关系
- 访问ZK-->获取META表所在RS-->访问RS读取META表-->根据META找到数据所在的RS-->访问数据RS-->访问MEMSTORE-->访问HFILE-->返回MEMSOTE-->返回客户端
- 写比读快,如果不涉及Region切分也和HMaster没关系
- 访问ZK-->获取META表所在RS-->访问RS读取META表-->根据META找到数据所在的RS-->写入数据RS->写HLOG再写MEMSTORE-->客户端返回
- Hive和Hbase的区别
- Hive是一个分析框架,本身任何数据都不存储
- HBase是一个存储框架,可以直接对接业务系统(展示详情?)
- HBase和MR/Hive集成
- HBase优化
- HMaster 做高可用:监控HReginServer整个生命周期,负责负载均衡。
- 预先分区:HBase默认的分区算法,分区阀值:Math.min(R^2*128M,10G),该算法会导致数据倾斜。生产实践一般由自己的分区规则。一台服务器放同一张表的2~3Regin
- 分区键设计优化:
- 长度原则/唯一原则/散列原则
- 随机分区键|时间戳|业务1|业务2,连接符号用竖杠,asc码比较大
- 方便存取,能根据业务计算出前面的随机键
- 既要散裂,又要集中,解决按照范围取的问题
- 内存优化:机器内给70%给堆内存,一般在16G~48G中间,ReginServer需要使用内存缓存数据
posted @
2021-09-26 16:33
wangzhen3798
阅读(
182)
评论()
编辑
收藏
举报