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的周期性合并)
Hadoop-No.9之表和Region的更多相关文章
- HBase -ROOT-和.META.表结构(region定位原理)
在HBase中,大部分的操作都是在RegionServer完成的,Client端想要插入,删除,查询数据都需要先找到相应的RegionServer.什么叫相应的RegionServer?就是管理你要操 ...
- HBase -ROOT-和.META.表结构(region定位原理) 分类: B7_HBASE 2015-03-13 20:52 90人阅读 评论(0) 收藏
在HBase中,大部分的操作都是在RegionServer完成的,Client端想要插入,删除,查询数据都需要先找到相应的RegionServer.什么叫相应的RegionServer?就是管理你要操 ...
- hadoop大数据处理之表与表的连接
hadoop大数据处理之表与表的连接 前言: hadoop中表连接其实类似于我们用sqlserver对数据进行跨表查询时运用的inner join一样,两个连接的数据要有关系连接起来,中间必须有一个 ...
- 从零自学Hadoop(15):Hive表操作
阅读目录 序 创建表 查看表 修改表 删除表 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceL ...
- hadoop执行hbase插入表操作,出错:Stack trace: ExitCodeException exitCode=1:(xjl456852原创)
在执行hbase和mapreduce融合时,将hdfs上的文本文件插入到hbase中,我没有使用"胖包"(胖包就是将项目依赖的jar包放入项目打包后的lib目录中),而是直接将hb ...
- 一起学Hadoop——实现两张表之间的连接操作
---恢复内容开始--- 之前我们都是学习使用MapReduce处理一张表的数据(一个文件可视为一张表,hive和关系型数据库Mysql.Oracle等都是将数据存储在文件中).但是我们经常会遇到处理 ...
- 【Hadoop】HIVE 数据表 使用
3 使用 3.1 数据导入 3.1.1 可以使用命令行导入,也可以直接上传到HDFS的特定目录 3.1.2 格式问题 3.1.2.1 缺失/不合法字段默认值为NULL 3.1.2.2 最好数据是格式化 ...
- hadoop Hive 的建表 和导入导出及索引视图
1.hive 的导入导出 1.1 hive的常见数据导入方法 1.1.1 从本地系统中导入数据到hive表 1.创建student表 [ROW FORMAT DELIMITED]关键字,是用来设 ...
- 利用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 ...
随机推荐
- [转帖]查看Linux用的桌面是GNOME、KDE或者其他
http://superuser.com/questions/96151/how-do-i-check-whether-i-am-using-kde-or-gnome KDE 基于QT做的 已经越来越 ...
- 【环境搭建】Angular (含Hello World)
一.环境安装 1.安装node.js 下载路径:https://nodejs.org/en/download/ 命令行验证: 2.安装ts.cli ts: npm install -g typescr ...
- A/B HDU-1576(简单的数论题)
Problem Description 要求(A/B)%9973,但由于A很大,我们只给出n(n=A%9973)(我们给定的A必能被B整除,且gcd(B,9973) = 1). Input 数据的第一 ...
- 剑指offer6:旋转数组的最小数字
1. 题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转.输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素.例如数组{3,4,5,1,2}为{1,2,3,4,5}的一 ...
- python安装OpenCV后import cv2报错解决办法
现在python安装完成后,运行pip install opencv-python安装成功后,import cv2时会失败 看到有人给出下载https://www.lfd.uci.edu/~gohlk ...
- unity 打包Error:WebException: The remote server returned an error: (403) Forbidden.
記一下在ios上打包出錯: UnityEditor.BuildPlayerWindow+BuildMethodException: 2 errors at UnityEditor.BuildPlaye ...
- C# 文件过滤器
首先说明一个示例,分析一下Filter属性的构成:“ Excel文件|*.xls ”,前面的“Excel文件”成为标签,是一个可读的字符串,可以自定定义,“|*.xls”是筛选器,表示筛选文件夹中后缀 ...
- js判断一个 object 对象是否为空
方法一:使用for...in for...in... 遍历属性,为真则为“非空数组”:否则为“空数组” for (var i in obj) { return true // 如果不为空,则会执行到 ...
- Spring中常用的设计模式之:代理模式
看了tom老师讲的深入分析spring源码,讲的挺好,做个小总结 代理模式的定义: 为其他对象提供一种代理以控制对这个对象的访问.在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以 ...
- SpringMVC——正常访问静态文件,不要找不到静态文件报404的方法
方案一:激活Tomcat的defaultServlet来处理静态文件 <span style="font-size:12px;"> <servlet-mappin ...