• Hbase(笔记三)


    一、Hbase简介

    1. Hbase具有高可靠,高性能,面向列,可伸缩的特点。
    2. Hbase作为分布式数据库,可以用来存储非结构化和半结构化的松散数据。
    3. Hbase是一个稀疏的多维度的排序的映射表。
    4. Hbase通过行键,列族,列限定符,列时间戳来定义一个数据。
    5. Hbase每一个值都是未经解释的字符串也就是Bytes数组。
    6. Hbase一个行有一个行键和任意多个列。
    7. Hbase属于列式存储。

    二、Hbase功能组件

    1.  库函数:一般用于键接每个客户端。
    2. Master服务器:分区信息进行维护和管理;维护了一个Region服务器列表;整个集群中有哪些Region服务器在工作;负责对Region进行分配;负载均衡。
    3. Region服务器:负责存储不同的Region。

    三、Hbase设计了三层结构实现Region的寻址和定位

    1. 首先要构建一个元数据表,假设这个元数据表只有两列,第一列是Region的id,第二列是Region服务器的id。
    2. Hbase最开始构建时有一个映射表,这个映射表被称为.META表,.META表是用于存储元数据的。
    3. 为了加速寻址,客户端会缓存位置信息,同时,需要解决缓存失效问题,如何解决呢?先去寻找缓存,如果找不到,则判定失效→三层寻址。

    四、用户读写数据

    1. 用户写入数据

       2.用户读取数据

    五、缓存的刷新

    1. 系统会周期性的把MemStore缓存里的内容刷写到磁盘的StoreFile文件中,清空缓存,并在HLog里面写入一个标记。
    2. 每次刷新都生成一个新的StoreFile文件,因此,每个Store包含多个StoreFile文件。
    3. 每个Region服务器都有一个自己的HLog文件,每次启动都检查该文件,确认最近一次执行缓存刷新操作之后是否发生新的写入操作,如果发现更新,则先写入到MemStore,再刷写到StoreFile,最后删除旧的HLog文件,开始为用户提供服务。

    六、Hbase性能优化方法

    1. 时间靠近的数据都存在一起→时间戳:a.按升序排序;b.越到后时间戳会越来越大;c.长整型变量64位。Long.MAX_VALUE_timestamp作为行键,用系统最大的整数值减去时间戳→排序就反过来了从而改变了排序的顺序。
    2. 提升读写性能:设置HColumnDescriptor.setInMemory选项为true→放入缓存中去。
    3. 设置HColumnDescriptor.setMaxVersionsMaxVersions,设置最大版本数。
    4. 设置TimeToLive参数,生命周期。

    七、Hbase性能检测

    1. Master-status
    2. Ganglia
    3. OpenTSDB
    4. Ambari

    八、Hbase使用SQL

    1. Hive
    2. Phoenix

    九、Hbase利用Coprocessor特性去构建二级索引,Coprocessor提供了两个实现:

    1. endpoint:相当于存储过程。
    2. observer:相当于触发器。
  • 相关阅读:
    struts2在result中使用el表达式碰到的问题
    JSP学习笔记—— jsp中include文件指令乱码的三种解决方案
    SSH整合,applicationContext.xml中配置hibernate映射文件问题
    struts上传文件失败 ContentType not allowed错误解决方法【转】
    mysql5 乱码问题解决方案
    java.lang.NoClassDefFoundError: org/apache/juli/logging/LogFactory的解决
    JQuery使用on绑定动态生成元素时碰到的问题
    Oracle异常处理
    C#窗口拦截键盘事件
    Oracle中动态SQL详解
  • 原文地址:https://www.cnblogs.com/libinhyq/p/15252773.html
Copyright © 2020-2023  润新知