zoukankan      html  css  js  c++  java
  • hbase原理

    Hbase:
    基于hdfs的数据库,来源于google的一篇论文bigtable.基于HDFS实现高可用、分布式、列式存储、核心包括:
    -Rowkey: 可以简单理解成mysql中的主键
    -列簇,列
    -时间戳
    按照Rowkey字典顺序存储,基于rowkey的高效检索,同时继承hdfs的高吞吐能力。
    Hbase用rowkey快速访问数据,所以rowkey的设计是hbase性能提升的关键
    Hbase数据访问方式:
    -通过get方式,指定rowkey获得唯一一条记录
    -通过scan方式,设置startRow和stopROW参数进行范围匹配。
    -全表扫描。

    hbase rowkey设计原则:
    -rowkey长度
    rowkey快速定位过程中,rowkey数据是在内存中的,所以rowkey过长时,如果数据量又很大,会导致内存占用过多,检索变慢。
    hbase本身对rowkey限制64Kb,但建议越短越好,最好16字节以内;另外colname(列簇名)对设计也尽量简单。
    -rowkey唯一性
    rowkey需要能够唯一标识一条记录,类似RDBMS中的主键
    -rowkey散列
    由于数据是按rowkey的字典顺序存储的,若rokey顺序性较强,会减弱hbase分布
    式存储的特点,在大数据量时会导致
    部分region过载,严重时会造成节点失
    联,影响其它数据的访问。
    散列的方案:
    1/ hash:可以让数据均衡分布,可重构,可以使用get等方式快速访问数据。 比如你设置的rowkey组合完了做hash
    2/ 加随机数:数据均衡分布,不可重构,失去get快速定位数据等能力
    3/ 反转:普遍使用的三列方法,尤其是对于时间序列,手机号类似的rowkey

    二级索引(待看)

    设计时hbase的存储空间是需要考虑的:
    比如2个G的mysql数据,由于hdfs本身机制,就成6个G。
    而hbase还有副本,6个副本的话,就36G。

    如遇到写入慢的问题:
    1/ 检查hdfs,检查rowkey的长度等。

    优势:
    上亿条数据的查询很快的

    使用场景:
    用户画像的场景:可以用hbase也可以用ES
    ES除了做ELK,日常业务状态监控,业务日志的采集分析外。
    也可以做为olap的引擎。

  • 相关阅读:
    为什么学编程?如何学编程?
    数据结构2019/05/14
    Python2与Python3的区别(2)
    数据库(第一范式,第二范式,第三范式)
    Atom常用功能插件
    Atom编辑器的安装
    PL/SQL Developer安装教程(贴图)
    安装Oracle提示:[INS-35206] 目录已在使用
    安装Oracle出现环境不满足最低要求
    Oracle 11g服务器安装详细步骤(贴图)
  • 原文地址:https://www.cnblogs.com/hongfeng2019/p/12233063.html
Copyright © 2011-2022 走看看