zoukankan      html  css  js  c++  java
  • 【HBase】学习笔记

    HBASE
    1 简介
    1.1 官网
    1.1.1 http://hbase.apache.org/
    1.1.2 Apache HBase™ is the Hadoop database, a distributed, scalable, big data store. Use Apache HBase™ when you need random, realtime read/write access to your Big Data
    1.2 应用场景
    1.2.1 https://www.zhihu.com/question/21677041
    1.2.2 http://www.cnblogs.com/ggjucheng/p/3379459.html
    1.2.3 http://blog.csdn.net/lifuxiangcaohui/article/details/39894265
    1.2.4 http://www.aboutyun.com/thread-8701-1-1.html
    1.2.5 http://blog.csdn.net/defonds/article/details/48471087
    1.3 基于HDFS的分布式数据库,提供对大数据实时、随机、读写操作
    1.3.1 MySQL关系型、偏事务
    1.3.2 HBASE没有关联的操作,适合简单的处理
    1.4 特点
    1.4.1 传统SQL数据库字段添加比较麻烦,表设计比较固定死板
    1.4.2 HBASE字段可以随意扩充
    1.4.2.1 建表不需要指定特定字段,只需要指定列族CF
    1.4.2.2 插入数据时,列族中可以存储任意多个列CK
    1.4.3 不需要SQL数据库范式,不需要拆表,全部放在一张大表中,当然也就不需要JOIN了
    1.4.4 HBASE数据更新保留原始数据,历史版本一直存在,KV中的Value带有版本号,通常是时间戳
    1.4.5 通过表名--行健--列族--列名--版本 定位一个字段
    1.5 存储
    1.5.1 分布式存储,需要把大表切开存储,HBASE是按照region切分存储管理的
    1.5.2 按照列族进行切分,某一列组的若干行切分为一个region,数据量达到一定大小就切分
    1.5.3 region的基本信息存储在regionServer上面存储,regionServer的数据存放在HDFS上面,叫HFile
    1.5.4 HFile肯定不是纯文本的格式,纯文本检索可能会比较慢,HFile按照HBase自定义的格式存储
    1.5.5 所以regionServe最好也和DataNode、NodeManager一样在物理上面部署在一起,直接访问本地数据,加快HBase速度
    1.5.6 HMaster不存储具体的Region数据,Hamster负责管理RegionServer的状态,负责RegionServer的负载均衡,可以理解为相当于HBase定制的一个NameServer
    1.5.7 HMaster可以通过ZK实现HA
    1.6 查询机制
    1.6.1 HBase的Meta表存储了TBLName_RKStart_RKEnd;HostNameList
    1.6.2 该表为Habse的系统表,由Hbase自己维护
    1.6.3 每个region都在Meta表有一条记录
    1.6.4 Meta表也可能是一个大表,所以Meta也和Region的信息一样存储在HDFS上面
    1.6.5 同理,上面的信息可能也很大,也会产生同样的问题,Meta的Meta的数据仍然需要分布式存储,所以HBase建立了二级索引,有两个Meta的索引表
    1.6.6 理论上二级Meta索引已经可以容纳十亿级别的数据量了
    1.6.7 二级索引的表存储在一台机器即可,这个表叫ROOT表,root表的节点信息存储在zookeeper上面
    1.6.8 寻址过程:ZK中获取ROOT节点--ROOT节点获取Meta信息表的region对应的节点--Meta表中获取数据具体存储在哪个节点上面--再去获取数据
    1.6.9 regionServer的内存缓存着最近查询的热数据,所以regionServer最好内存稍微大一点
    2 HBase Shell
    2.1 略,参考笔记
    3 HBase API
    3.1 略,参考笔记
    4 最佳实践
    4.1 HBASE可以与ES结合起来,将需要查询的字段存到ES中,ES搜索得到相关的RowKey之后再从HBase中快速查询出来, 即将计算放到ES中进行,这是一个比较好的思路
    4.2 行健的设计可以帮助更好的使用HBase,更快更方便的进行过滤查询,比如时序数据库的设计就是这个思路
     
     
     
     
  • 相关阅读:
    group_concat的长度限制
    mb_strlen默认字符集问题
    &符号导致的一个bug
    python面向对象编程系列
    python基础之面向过程编程系列
    RPA流程自动化
    什么是DevOps?
    ansible详解
    saas和paas的区别
    CPT/cpt接口
  • 原文地址:https://www.cnblogs.com/junneyang/p/7717614.html
Copyright © 2011-2022 走看看