Hadoop学习之优化策略

我爱海鲸 2022-05-02 11:43:39 暂无标签

简介Hbase服务端的优化策略

1、什么导致HBase性能下降

Jvm内存分配与GC回收策略

与HBase运行机制相关的部分配置不合理

表结构设计及用户使用方式不合理

2、HBase数据存储过程

HBase写入时当memstore达到一定的大小会flush到磁盘保存成HFile,当HFile小文件太多会执行compact操作进行合并

当Region的大小达到某一阈值之后,会执行split操作

minor compaction:选取一些小的、相邻的StoreFile将他们合并成一个更大的StoreFile

major compaction:将所有的StoreFile合并成一个StoreFile,清理无意义数据:被删除的数据、TTL过期数据、版本号超过设定版本号的数据

split: 当一个region达到一定的大小就会自动split成两个region

3、HBase Compact检查

MemStore被flush到磁盘

用户执行shell命令compact、major_compact或者调用了相应的API

HBase后台线程周期性触发检查

4、HBase优化

常见服务端配置优化

常用优化策略(以实际需求为主)

HBasei读/写性能优化

5、HBase服务端优化

Jvm设置与GC设置

hbase-site.xml部分属性配置

HBase properties 简介
hbase.regionserver.handler.count rpc请求的线程数量,默认值是10
hbase.hregion.max.filesize 当region的大小大于设定值后hbase就会开始split
hbase.hregion.majorcompaction major compaction的执行周期
hbase.hstore.compaction.min 一个store里的storefile总数超过该值,会触发默认的合并操作
hbase.hstore.compaction.max 一次最多合并多少个storefile
hbase.hstore.blockingStoreFiles 一个region中的Store(CoulmnFamily)内有超过xx个storefile时,则block所有的写请求进行compaction
hfile.block.cache.size regionserver的block cache的内存大小限制
hbase.hregion.memstore.flush.size memstore超过该值将被flush
hbase.hregion.memstore.block.multiplier 如果memstore的内存大小超过flush.size * multiplier,会阻塞该memstore的写操作

6、HBase优化策略

1)、预先分区

创建HBase表的时候会自动创建一个Region 分区

创建HBase表的时候预先创建一些空的Regions

2)、RowKey优化

利用HBase默认排序特点,将一起访问的数据放到一起

防止热点问题,避免使用时序或者单调的递增递减等

3)、Column优化

列族的名称和列的描述命名尽量简短

同一张表中ColumnFamily的数量不要超过3个

4)、Schema优化

宽表:一种"列多行少"的设计

高表:一种"列少行多"的设计

7、HBase写优化策略

同步批量提交or异步批量提交

WAL优化,是否必须,持久化等级

8、HBase 读优化策略

客户端:Scan缓存设置,批量获取

服务端:BlockCache配置是否合理,HFile是否过多

表结构设计问题

 

你好:我的2025