HBase 优化_2 | 学习笔记

简介: 快速学习 HBase 优化_2

开发者学堂课程【HBase 入门教程HBase 优化_2】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/397/detail/5094


HBase 优化_2


内容介绍

一、表的设计

二、写表操作


一、表的设计

1. Column Family

不要在一张表里定义太多的 column family。目前 Hbase 并不能很好的处理超过2~3column family 的表。因为某个 column family flush 的时候,它邻近的 column family 也会因关联效应被触发 flush ,最终导致系统产生更多的 I/O。感兴趣的同学可以对自己的 HBase 集群进行实际测试,从得到的测试结果数据验证一下。

2. In Memory

创建表的时候,可以通过 HColumnDescriptor.setInMemory(true)将表放到 RegionServer 的缓存中,保证在读取的时候被 cache 命中。

3. Max Version

创建的时候,可以通过 HColumnDescriptor.setMaxVersions(int maxVersions)设置表中数据的最大版本,如果只需要保存最新版本的数据,那么可以设置 setMaxVersions(1)

4.Time To Live

创建表的时候,可以通过 HColumnDescriptor.setTimeToLive(int timeToLive) 设置表中数据的存储生命期,过期数据将自动被删除,例如如果只需要存储最近两天的数据,那么可以设置 setTimeToLive(2 * 24 * 60 * 60)

5. Compact & Split

HBase 中,数据在更新时首先写入 WAL 日志(HLog)和内存(MemStore)中,MemStore 中的数据是排序的,当 MemStore 累计到一定阈值时,就会创建一个新的 MemStore,并且将老的 MemStore 添加到 flush 队列,由单独的线程 flush 到磁盘上,成为一个 StoreFile 。于此同时, 系统会在 zookeeper 中记录一个 redo point ,表示这个时刻之前的变更已经持久化了(minor compact)

StoreFile 是只读的,一旦创建后就不可以再修改。因此 Hbase 的更新其实是不断追加的操作。当一个 Store 中的 StoreFile 达到一定的阈值后,就会进行一次合并(major compact),将对同一个key的修改合并到一起,形成一个大的 StoreFile ,当 StoreFile 的大小达到一定阈值后,又会对 StoreFile 进行分割(split),等分为两个 StoreFile

由于对表的更新是不断追加的,处理读请求时,需要访问 Store 中全部的 StoreFile MemStore ,将它们按照 row key 进行合并,由于 StoreFile MemStore 都是经过排序的,并且 StoreFile 带有内存中索引,通常合并过程还是比较快的。

实际应用中,可以考虑必要时手动进行 major compact ,将同一个 row key 的修改进行合并形成一个大的 StoreFile 。同时,可以将 StoreFile 设置大些,减少 split 的发生。

hbase 为了防止小文件(被刷到磁盘的 menstore)过多,以保证保证查询效率,hbase 需要在必要的时候将这些小的store file 合并成相对较大的 store file,这个过程就称之为 compaction。在 hbase 中,主要存在两种类型的compaction ; minor compaction major compaction

minor compaction:的是较小、很少文件的合并。

major compaction 的功能是将所有的 store file 合并成-一个, 触发 major compaction 的可能条件有: major compact 命令、majorCompact() APIregion server 自动运行(相关参数心 hbase.hreaion.majoucompaction 默认为24小时、hbase.hregion.majorcompaction.ietter 默认值为0.2防止 region server 在同一时间进行 major compaction)

hbase.hregion.majorcompaction.ietter 参数的作用是:对参数 hbase.hregion.majou.compaction 规定的值起到浮动的作用,假如两个参数都为默认值240,2,那么 major compact 最络使用的数值为: 19.2~28.8 这个范围。

关闭自动 major compactione

手动编程 major compactione

Timer 类,contabe

minor compaction 的运行机制要复杂-些,它由一下几个参数共同决定:

hbase.bstore.compaction.min :默认值为3,表示至少需要三个满足条件的 store file , minor compaction才会启动。

hbase.hstore.compaction.max 默认值为10,表示-minor compaction 中最多选取10store filev

hbase.hstore.compaction.min.size 表示文件大小小于该值的 store file - -定会加入到 minor compaction store file 中。

hbase.hstore.compaction.max.size 表示文件大小大于该值的 store file-定会被 minor compaction 排除+

hbase.hstore.compaction.ratio 将 store file 按照文件年龄排序(older to younger)minor compaction 总是从older store file 开始选择。


二、写表操作

1. HTable 并发写

创建多个 HTable 客户端用于写操作,提高写数据的吞吐量,一个例子:

static final Configuration conf =HBaseConfiguration.create();

static final String table_log_name = “user_log”;

wTableLog = new HTable[tableN];

for (int i = 0; i < tableN; i++) {

wTableLog[i] = new HTable(conf, table_log_name);

wTableLog[i].setWriteBufferSize(5 * 1024 * 1024); //5MB

wTableLog[i].setAutoFlush(false);

}

相关实践学习
lindorm多模间数据无缝流转
展现了Lindorm多模融合能力——用kafka API写入,无缝流转在各引擎内进行数据存储和计算的实验。
云数据库HBase版使用教程
&nbsp; 相关的阿里云产品:云数据库 HBase 版 面向大数据领域的一站式NoSQL服务,100%兼容开源HBase并深度扩展,支持海量数据下的实时存储、高并发吞吐、轻SQL分析、全文检索、时序时空查询等能力,是风控、推荐、广告、物联网、车联网、Feeds流、数据大屏等场景首选数据库,是为淘宝、支付宝、菜鸟等众多阿里核心业务提供关键支撑的数据库。 了解产品详情:&nbsp;https://cn.aliyun.com/product/hbase &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
6月前
|
机器学习/深度学习 分布式计算 Hadoop
一种HBase表数据迁移方法的优化
一种HBase表数据迁移方法的优化
91 0
|
3月前
|
缓存 监控 Java
"Java垃圾回收太耗时?阿里HBase GC优化秘籍大公开,让你的应用性能飙升90%!"
【8月更文挑战第17天】阿里巴巴在HBase实践中成功将Java垃圾回收(GC)时间降低90%。通过选用G1垃圾回收器、精细调整JVM参数(如设置堆大小、目标停顿时间等)、优化代码减少内存分配(如使用对象池和缓存),并利用监控工具分析GC行为,有效缓解了高并发大数据场景下的性能瓶颈,极大提升了系统运行效率。
73 4
|
6月前
|
SQL 分布式计算 Hadoop
Hadoop学习笔记(HDP)-Part.16 安装HBase
01 关于HDP 02 核心组件原理 03 资源规划 04 基础环境配置 05 Yum源配置 06 安装OracleJDK 07 安装MySQL 08 部署Ambari集群 09 安装OpenLDAP 10 创建集群 11 安装Kerberos 12 安装HDFS 13 安装Ranger 14 安装YARN+MR 15 安装HIVE 16 安装HBase 17 安装Spark2 18 安装Flink 19 安装Kafka 20 安装Flume
137 1
Hadoop学习笔记(HDP)-Part.16 安装HBase
|
存储 前端开发 Cloud Native
基于 HBase 快速构架海量订单存储系统|学习笔记
快速学习基于 HBase 快速构架海量订单存储系统
基于 HBase 快速构架海量订单存储系统|学习笔记
|
存储 SQL 消息中间件
Kylin 在贝壳的性能挑战和 HBase 优化实践(2)
Kylin 在贝壳的性能挑战和 HBase 优化实践
133 0
Kylin 在贝壳的性能挑战和 HBase 优化实践(2)
|
SQL 分布式计算 监控
Kylin 在贝壳的性能挑战和 HBase 优化实践(1)
Kylin 在贝壳的性能挑战和 HBase 优化实践
127 0
Kylin 在贝壳的性能挑战和 HBase 优化实践(1)
|
存储 搜索推荐 Java
如何基于 HBase 构建图片、视频数据的统一存储检索方案|学习笔记
快速学习如何基于 HBase 构建图片、视频数据的统一存储检索方案
如何基于 HBase 构建图片、视频数据的统一存储检索方案|学习笔记
|
SQL 存储 边缘计算
HBase&Hive 2(三)|学习笔记
快速学习 HBase&Hive 2(三)
131 0
HBase&Hive 2(三)|学习笔记
|
SQL 存储 分布式计算
HBase&Hive 2(二)|学习笔记
快速学习 HBase&Hive 2(二)
HBase&Hive 2(二)|学习笔记
|
存储 SQL 分布式计算
HBase&Hive 2(一)|学习笔记
快速学习 HBase&Hive 2(一)
116 0
HBase&Hive 2(一)|学习笔记