zoukankan      html  css  js  c++  java
  • Hadoop-No.9之表和Region

    影响性能与数据分布的一个因素是HBase中表的数量以及每个表的Region的数量.如果分配的不合理,集群一个节点活多个节点的负载会出现显著的不均衡.

    其中比较注意的几点:
    - 每个节点包含一个Region服务器
    - 每个Region服务器包含多个Region
    - 任何时候,一个给定的Region存在一个特定的Region服务器上
    - 表被分成多个Region,而且散步在Region服务器中.一个表至少要包含一个Region

    对于一个给定的表,Region的数目可以参考一下两条经验法则进行选择.这两条法则权衡了put请求的性能与Region合并时间

    Put操作性能

    Region服务器中所有接收到的put请求的Region都会共享Region服务器的memstore.memstore是每个HBase Region服务器都有的一种缓存结构.memstore能缓存发送到Region服务器的写入.并对他们进行排序,知道打到特定的内存值,冲刷写入磁盘.因此,Region服务器中的Region越多,每个Region可用的memstore空间就越少.这可能会导致冲刷变小,较小的冲刷又可能带来更小.更多的HFile和更多较小的合并.由此导致性能降低.默认的配置将理想的冲刷大小设置为100MB,如果确定了memstore的大小并分区,使得每个去为100MB,那么Region服务器就会合理的得到最多数量的Region.

    合并时间

    Region越大,合并花费的时间就越多.从经验上来说,Region的大小最多为20GB,但是也有一些非常成功的集群,Region的大小可以打到120GB

    HBase表分配Region的方式有以下两种

    • 默认情况下,一个表只有一个Region,并随着数据的增加自动分片
    • 创建表是,指定一个Region数量,而且将Region的大小设置为一个足够大的值(比如每个Region 100GB)以避免自动分片

    在选择Region分配方式之前.应该确定选择了正确的分片策略.大多数情况下,应当选择ConstantSizeRegionSplitPolicy 或者DisabledRegionSplitPolicy.

    建议局限分配Region的数量(即采用第二种方式),这种可以避免分片随机进行,避免自动分片导致范围不理想,影响性能.

    还有一些情况应该采用自动分片.比如,一个不断增长的数据集只更新最新的数据,那么它就更适合采用自动分片.如果该表的行键有{Salt}{SeqId}组成,那么些操作可能受到控制,分发到一系列固定的Region上.既然Region自动分片,那么久的Region也就不需要合并了(除非是基于TTL的周期性合并)

  • 相关阅读:
    《京东峰值系统设计》读后感
    《王者荣耀游戏服务器架构演进(完整版)》读后感
    《秒杀系统架构分析与实战》读后感
    《阿里如何实现秒级百万TPS?搜索离线大数据平台架构解读》读后感
    《阿里游戏高可用架构设计实践》读后感
    Spark SQL 编程初级实践
    系统质量属性之——性能
    《信息技术手册查重错误比对分析》开发记录7
    《信息技术手册查重错误比对分析》开发记录6
    【Codeforces Round #589 (Div. 2) D】Complete Tripartite
  • 原文地址:https://www.cnblogs.com/bilaisheng/p/10210996.html
Copyright © 2011-2022 走看看