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
      • GET/正则/范围SCAN
    • 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集成
    • 生产环境用CDH版本,解决版本和集成问题
  • HBase优化
    • HMaster 做高可用:监控HReginServer整个生命周期,负责负载均衡。
    • 预先分区:HBase默认的分区算法,分区阀值:Math.min(R^2*128M,10G),该算法会导致数据倾斜。生产实践一般由自己的分区规则。一台服务器放同一张表的2~3Regin
    • 分区键设计优化:
      • 长度原则/唯一原则/散列原则
      • 随机分区键|时间戳|业务1|业务2,连接符号用竖杠,asc码比较大
      • 方便存取,能根据业务计算出前面的随机键
      • 既要散裂,又要集中,解决按照范围取的问题
    • 内存优化:机器内给70%给堆内存,一般在16G~48G中间,ReginServer需要使用内存缓存数据
原文地址:https://www.cnblogs.com/wangzhen3798/p/15338795.html