-
HBase学习总结
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需要使用内存缓存数据
-
相关阅读:
MySQL高性能优化规范建议,速度收藏
基于 debian 操作系统的 docker 镜像,安装 vim
Vue 开发经验总结
DNS 负载均衡
图解:从单个服务器扩展到百万用户的系统
defer、return、返回值,这三者的执行逻辑
goroutine 知识点
一条SQL语句在MySQL中如何执行的
架构设计的常用方法
vue中直接修改props中的值并未给出警告,为啥?
-
原文地址:https://www.cnblogs.com/wangzhen3798/p/15338795.html
Copyright © 2020-2023
润新知