HBase纪要(中)

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: HBase纪要(中)

客户端API:最佳实践


1.      禁止自动刷写   setAutoFlush(false)


   这时,添加的put实例会被添加到一个相同的写入缓存中,在禁用自动刷写时,这些操作直到写缓冲区被填满时才会被送出。


  或者用户调用flushCommits()方法


  或调用HTable实例的close方法隐式调用flushCommits()方法



2.      使用扫描缓存setCaching()


   如果使用默认值1,则map任务会在处理每条记录时都请求region服务器。


   而如果设置为500,则一次可以传送500行数据到客户端进行处理。


这里要权衡传输数据的开销和内存的开销。



 表级别的扫描缓存    setScannerCaching()



3.      限定扫描范围


Scan扫描的范围尽可能的小



4.      关闭ResultScanner


HTabel.getScanner()返回的ResultScanner实例会消耗大量资源。


一定要在try/catch的finally块中关闭ResultScanner


5.      块缓存用法


    对Scan实例能够通过setCacheBlocks()方法来设置使用region服务器的块缓存。


    如果在MapReduce作业中使用扫描,这个方法应当被设置成false。


    对于那些频繁访问的行,建议使用块缓存。



6.      优化获取行健的方式


    适当的选用过滤器,最快捷的返回数据


7.      关闭Put上的WAL(关闭日志)


   服务器端不会把这个Put写到WAL中,而只把它写到memstore里。


    使用put的wrireToWAL(false)来关闭WAL



配置上的一些优化措施:



1.      减少ZooKeeper超时的发生


Zookeeper.session.timeout   属性来设置


2.      增加处理线程


Hbase.regionserver.handler.count属性定义了响应外部用户访问数据表请求的线程数。


默认值10有点小。


3.      增加堆大小


在hbase-env.sh文件中调整HBASE_HEAPSIZE的设置


4.      启用数据压缩


推荐使用Snappy或者LZO


配置启动region服务器时检查压缩是否正确安装:


<property>
   <name>hbase.regionserver.codecs</name>
   <value>snappy,lzo</value>
</property>


启用压缩:


hbase支持列族级别上的数据压缩。


create  ‘testtable’,{name=>’colfam1’,compression=>’GZ’}   //创建表,并对’colfam1’列族上的数据启用GZ压缩
describe ‘testtable’
//修改表,并启用压缩
create  ‘testtable2’,’colfam1’
disable   ‘testtable2’           --修改表的属性时,一定要先禁用表
alter  ‘testtable2’.{name=>’colfam1’,compression=>’GZ’}
enable  ‘testtable2’


5.      增加region大小


更大的region可以减少集群总的region数目。


管理较少的region可以让集群的运行更平稳。


默认情况下,region的大小事256MB。可以配置1GB或者更大的region。


     Hbase.hregion.max.filesize属性的值  

         


6.      调整块缓存大小


控制堆中块缓存大小的属性是一个用浮点数类型的百分比,默认值是20%。


  perf.hfile.block.cache.size


增大块缓存的情况:


Ø  如果块缓存的使用中,发现有很多的块被换出


Ø  用户负载大多数为读请求时,hbase将更加需要块缓存



7.       调整memstore限制


  memstore占用内存中堆大小的比例:


  上限:hbase.regionserver.global.memstore.upperLimit  (默认值为40%,设置为0.4)


 


下限:hbase.regionserver.global.memstore.lowerLimit(设置为0.35),用来控制服务器清空memstore之后剩余的大小。将上限和下限设置的接近一些可以避免过度刷写。



 处理读请求时,可以考虑同时减少memstore的上下限来增加块缓存的空间。


8.      增加阻塞时存储文件数目


Hbase.hstore.blockingStoreFiles


  决定了当存储文件的数目达到阀值时,更新操作(put,delete)将会被阻塞,并以此来给合并操作留出来时间减少存储文件的数目。


大负载的突发写入请求时,可以增加这个值。(默认值是7)


9.      增加阻塞倍率


Hbase.hregion.memstore.block.multiplier的默认值是2


阻塞客户端更新数据的请求的安全阀值。



增加这个值,可以更加平滑地处理写入突发流量:可以临时接受更多的数据


10.  减少最大日志文件限制


Hbase.regionserver.maxlogs=32    (默认值32)


控制基于磁盘的WAL文件数目,进而控制刷写频率。


对于写压力比较大的服务器,降低这个值会强迫服务器更频繁地将数据刷写到磁盘。这样刷写到磁盘上的数据所对应的日志就可以被丢弃了。


第11章     集群管理


减少节点


 Shell命令:


Balance_switch   false              --关闭负载均衡
  Hbase-daemon.sh   stop  regionserver    --停止集群中的一个region服务器
  Balance_switch   true            --启用负载均衡


过程分析:


  关闭节点的负载均衡,避免负载均衡和master回复刚才下线的region服务器之间可能产生的竞争。


 Region服务器会先将它所有的region关闭,然后再把自己的进程停止。Region服务器在ZooKeeper中对应的临时节点将会过期。Master会注意到region服务器停止服务并将其按崩溃的服务器处理:master会将这台服务器上的region重新分配到其他机器上。


坏处:region会下线一段时间,时间的长度由ZooKeeper的超时时间决定。


第一个被关闭的region要等所有region都关闭,且master注意到region服务器的znode被删除之后才能上线。



Hbase0.90.2之后,下线方式:

Graceful_stop.sh   hostname


--hostname是用户要卸载的region服务器。


会把region从对应的服务器上一个个移出来以减少扰动。它会在移动到下一个region前先检查新位置上的region是否已经部署好。直到对应的要关闭的服务器上没有region了。


此时,脚本会让对应的服务器关闭。


Master会察觉到服务器停止了服务。


由于服务器关闭时没有region,所以不会有WAL切分的相关操作。


相关实践学习
云数据库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
目录
相关文章
|
存储 SQL 分布式计算
|
存储 缓存 NoSQL
风炉煮茶系列(1)-聊聊HBase
这一切的一切,还要从谷歌的那篇论文说起。。。。 06年google对外发布了三大论文之一Bigtable: A Distributed Storage System for Structured Data(原文地址:链接)。从此以后,浩如烟海的各种所谓大数据存储类的产品或完全复用,或者部分借鉴,或者在此基础上微创新,基本上都能看到BigTable里面的设计影子。 这里面有开源的HBase,公司内部使用的Lindorm,商业化的OTS,包括最近大火的ClickHorse基本上都或多或少的有类似的设计。 而Hbase完全是基于BigTable开源的实现。
195 0
|
负载均衡 监控 Shell
HBase纪要(下)
HBase纪要(下)
76 0
|
负载均衡 Java Shell
HBase纪要(上)
HBase纪要(上)
103 0
|
SQL 存储 缓存
hive纪要(上)
hive纪要(上)
115 0
|
SQL 存储 缓存
hive纪要(下)
hive纪要(下)
87 0
|
存储 缓存 分布式数据库
|
分布式计算 NoSQL 分布式数据库
HBase+Spark技术双周刊 第八期
【点击订阅HBase+Spark技术双周刊】 近期线上直播 【直播资料下载】HBase多语言访问 线下沙龙最全资料下载往期回顾 阿里云栖开发者沙龙 - BigData NoSQL Meetup(上海站)【精彩直播+最全资料下载】阿里云栖开发者沙龙 - BigData NoSQL Meetup(上海站)业内大咖齐聚,各大技术社区支持,与你畅聊 BigData NoSQL中国HBase技术社区第十届meetup——HBase生态实践(杭州站)
中国HBase技术社区第十届meetup——HBase生态实践(杭州站)回顾,4位数据库技术大咖共话HBase技术实践。
7572 0
|
Java 分布式数据库 数据库
HBase+Spark技术双周刊 第七期
近期线上直播&线下沙龙最全资料下载往期回顾&问答专栏
2764 0
|
大数据 分布式数据库 数据库
HBase+Spark技术双周刊 第六期
近期直播回看 技术沙龙 问答专栏
2859 0