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