您好,登录后才能下订单哦!
如何对hbase用的好,怎么定义把hbase用的好?
在保证系统稳定性、可用性的基础上能够用最少的系统资源(CPU,IO等)获得最好的性能(吞吐量,读写延迟)就是’用的好’。
优化方向为:
(1)HDFS相关配置优化,(2)HBase服务器端优化(GC优化、Compaction优化、硬件配置优化),(3)列族设计优化,(4)客户端优化等,
hbase规划方向:分为A.hbase内存规划、B.hbase集群规划
A.hbase内存规划 参考链接为:hbase内存规划(读多写少型和写多读少型) https://blog.51cto.com/12445535/2373788
B.hbase集群规划 参考链接为:hbase 集群规划(集群业务规划,集群容量规划,Region规划)
https://blog.51cto.com/12445535/2375540
(4)其中第四点(4)客户端优化在前面已经通过超时机制、重试机制讲过,参考链接为:
HBase客户端Rpc的重试机制以及客户端参数优化。:https://blog.51cto.com/12445535/2373709
hbase 客户端超时机制参数优化实践:https://blog.51cto.com/12445535/2373731
(3)列族设计优化 总结
hbase列族设计 (在很大程度上决定了读写的性能) // 参考链接 HBase最佳实践-列族设计优化 http://hbasefly.com/2016/07/02/hbase-pracise-cfsetting/
hbase 创建表语句
create 'NewsClickFeedback',{NAME=>'Toutiao',VERSIONS=>1,BLOCKCACHE=>true,BLOOMFILTER=>'ROW',COMPRESSION=>'SNAPPY',TTL => '259200', DATA_BLOCK_ENCODING => 'PREFIX_TREE', BLOCKSIZE => '65536'},{SPLITS => ['1','2','3','4','5','6','7','8','9','a','b','c','d','e','f']}
小结:
1、对于以随机读为主的业务,可以适当调低BlockSize的大小,以获得更好的读性能。默认为64K
2、对于以scan为主的业务,可以适当增大BlockSize的大小,以获得更好的读性能。
【提示:
1.可见,如果业务请求以Get请求为主,可以考虑将块大小设置较小;
2.如果以Scan请求为主,可以将块大小调大;默认的64K块大小是在Scan和Get之间取得的一个平衡。
】
3、数据编码/压缩Compress/DeCompress (压缩/解压缩)
Snappy:综合来看,Snappy的压缩率最低,但是编解码速率最高,对CPU的消耗也最小,目前一般建议使用Snappy。
4、Encode/Decode(数据编码功能)
推荐:DATA_BLOCK_ENCODING => 'PREFIX_TREE' //这个配置鉴于安全考虑,prefix_tree功能建议不要设置上生产。
(2)hbase服务器端优化之gc优化 见:hbase gc系列博客
https://blog.51cto.com/12445535/category16.html
(2)hbase服务器端优化之compaction优化
https://blog.51cto.com/12445535/2375292
https://blog.51cto.com/12445535/2375361
(2)hbase服务器端优化之hbase使用硬件优化(用好操作系统)
https://blog.51cto.com/12445535/2375515
(1)hdfs相关的优化
当hbase读比较多的时候 优化方向 见深入探讨hbase读性能优化探讨(20190308)https://blog.51cto.com/12445535/2360206 中的hdfs优化(启用 HDFS 快速读取,数据本地率是否太低?)
hbase RIT 机制
(其中很重要的2个案例 永久RIT状态案例分析(案例一:Compaction永久阻塞 案例二:HDFS文件异常))
Region-In-Trasition机制
//什么叫RIT Region-In-Transition
是Region变迁机制,实际上是指在一次特定操作行为中Region状态的变迁,
Region存在15中状态
四种会触发Region状态变迁的操作 分别是:assign、unassign、split以及merge【分配 取消分配 分裂 合并】等而很多其他操作都可以拆成unassign和assign,比如move操作实际上是先unassign再assign;
http://hbasefly.com/2016/09/08/hbase-rit/
hbase多租户
(1)资源限制,主要针对用户、namespace以及表的QPS和请求大小进行限制,详见HBase-11598
(2)资源调度,主要针对任务进行优先级调度,通常会优先调度实时交互而且小的任务,而批量操作任务或者长时间操作任务(大scan)优先级相对较低,详见HBase-10993
(3)资源隔离,将不同表通过物理隔离的方式分布到不同的RegionServer上,详见HBase-6721
资源限制-Quotas命令
http://hbasefly.com/2016/09/26/hbase-mutiltenant-1/
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。