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 ...
随机推荐
- beautifulsoap爬虫
从html文件读 from bs4 import BeautifulSoup html_doc="文件地址" html_file=open(html_doc,"r&quo ...
- Redis服务端相关
全局命令: 查看所有键: keys * 键总数: dbsize 检查键是否存在: exists key 删除键: del key [key...] 键过期: expire key seconds 键的 ...
- oracle建表详细信息
一张用户表 -- Create table create table OA_DM.DM_GY_USER ( ), username ) not null, loginname ) not null, ...
- API接口利用ActionFilterAttribute实现接口耗时检测
1.主要代码 using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; ...
- oracle数据库锁的问题
查询当前数据库被锁的对象 select b.owner,b.object_name,a.SESSION_ID,a.LOCKED_MODE from v$locked_object a dba_obje ...
- Centos7:solr伪集群(SolrCloud)搭建
JDK,tocmat环境搭建 zookeeper集群安装 解压缩zookeeper的压缩包 创建data目录 复制zoo_sample.cfg为zoo.cfg 修改confg/zoo.cfg中 dat ...
- js相关的时间获取方法
1.获取时间 var time=new Date();//返回的是GMT,格林尼治标准时间. console.log(time)://Thu Jul 27 2017 16:55:21 GMT+0800 ...
- mui APP 微信登录授权
一.在微信平台上申请appid.appsecret. 二.app --> manifest.json-->SDK配置(填写申请好的appid和appsecret) 三.在登录页,点击微信登 ...
- 一种移动端position:absolute布局:
一种移动端position:absolute布局: 1.他父级不需要加上 position:relative; 如果父级不是不是body,则加position:absolute; 2.红色加量部分 ...
- Java必考题目之JVM面试题目和答案
JVM内存模型 首先我们来了解一下JVM的内存模型的怎么样的: 1.堆:存放对象实例,几乎所有的对象实例都在这里分配内存 堆得内存由-Xms指定,默认是物理内存的1/64:最大的内存由-Xmx指定,默 ...