影响性能与数据分布的一个因素是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的周期性合并)

Hadoop-No.9之表和Region的更多相关文章

  1. HBase -ROOT-和.META.表结构(region定位原理)

    在HBase中,大部分的操作都是在RegionServer完成的,Client端想要插入,删除,查询数据都需要先找到相应的RegionServer.什么叫相应的RegionServer?就是管理你要操 ...

  2. HBase -ROOT-和.META.表结构(region定位原理) 分类: B7_HBASE 2015-03-13 20:52 90人阅读 评论(0) 收藏

    在HBase中,大部分的操作都是在RegionServer完成的,Client端想要插入,删除,查询数据都需要先找到相应的RegionServer.什么叫相应的RegionServer?就是管理你要操 ...

  3. hadoop大数据处理之表与表的连接

    hadoop大数据处理之表与表的连接 前言:  hadoop中表连接其实类似于我们用sqlserver对数据进行跨表查询时运用的inner join一样,两个连接的数据要有关系连接起来,中间必须有一个 ...

  4. 从零自学Hadoop(15):Hive表操作

    阅读目录 序 创建表 查看表 修改表 删除表 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceL ...

  5. hadoop执行hbase插入表操作,出错:Stack trace: ExitCodeException exitCode=1:(xjl456852原创)

    在执行hbase和mapreduce融合时,将hdfs上的文本文件插入到hbase中,我没有使用"胖包"(胖包就是将项目依赖的jar包放入项目打包后的lib目录中),而是直接将hb ...

  6. 一起学Hadoop——实现两张表之间的连接操作

    ---恢复内容开始--- 之前我们都是学习使用MapReduce处理一张表的数据(一个文件可视为一张表,hive和关系型数据库Mysql.Oracle等都是将数据存储在文件中).但是我们经常会遇到处理 ...

  7. 【Hadoop】HIVE 数据表 使用

    3 使用 3.1 数据导入 3.1.1 可以使用命令行导入,也可以直接上传到HDFS的特定目录 3.1.2 格式问题 3.1.2.1 缺失/不合法字段默认值为NULL 3.1.2.2 最好数据是格式化 ...

  8. hadoop Hive 的建表 和导入导出及索引视图

       1.hive 的导入导出 1.1 hive的常见数据导入方法 1.1.1 从本地系统中导入数据到hive表 1.创建student表 [ROW FORMAT DELIMITED]关键字,是用来设 ...

  9. 利用hadoop来解决“单表关联”的问题

    已知 child parent a b a c d b d c b e b f c g c h x g x h m x m n o x o n 则 c 2+c+g 2+c+h 1+a+c 1+d+c ...

随机推荐

  1. Node原生demo

    1.=>创建配置模块,作用是先判断是开发环境还是生产环境,并将开发或生产环境的数据库信息和http信息分别筛开,便于选择 2.=>创建数据库模块,作用是连接数据库 3.=>创建路由模 ...

  2. new与malloc有什么区别

    转自http://www.cnblogs.com/QG-whz/p/5140930.html 前言 几个星期前去面试C++研发的实习岗位,面试官问了个问题: new与malloc有什么区别? 这是个老 ...

  3. 小菜鸟之HTML第三课

    jquery的引入 <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...

  4. 【转载】启动redis出现Creating Server TCP listening socket *:6379: bind: No such file or directory

    redis启动报错: [6644] 02 Apr 23:11:58.976 # Creating Server TCP listening socket *:6379: bind: No such f ...

  5. go语言开启go module

    export GO111MODULE=on //linux .MAC set GO111MODULE=on //Windows

  6. A.Who is better?(The Preliminary Contest for ICPC Asia Xuzhou 2019)

    https://nanti.jisuanke.com/t/41383 解: 斐波那契博弈+中国剩余定理. #include <bits/stdc++.h> using namespace ...

  7. 小白必看的Python爬虫流程

    定义: 网络爬虫(Web Spider),又被称为网页蜘蛛,是一种按照一定的规则,自动地抓取网站信息的程序或者脚本. 简介: 网络蜘蛛是一个很形象的名字.如果把互联网比喻成一个蜘蛛网,那么Spider ...

  8. Java Serializable Objects(序列化)

    https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html 序列化一个对象,意味着把这个对象的状态转化为字节流,而且个字节流 ...

  9. imx8移植opencv(3.0以上版本)笔记

    基本步骤参考我同事的博客:https://blog.csdn.net/hunzhangzui9837/article/details/89846928 以下是在移植到imx8平台时的笔记和遇到的问题及 ...

  10. 序列化和反序列化在浏览器和 Web 服务器之间传递的数据、加密解密

    js中数组不能传递到后台,需进行json序列化: var data = new Array(); data.push({para1:name,para2:answer}); string data = ...