如何对hbase用的好,怎么定义把hbase用的好?
在保证系统稳定性、可用性的基础上能够用最少的系统资源(CPU,IO等)获得最好的性能(吞吐量,读写延迟)就是’用的好’。
优化方向为:
(1)HDFS相关配置优化,(2)HBase服务器端优化(GC优化、Compaction优化、硬件配置优化),(3)列族设计优化,(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
原文地址:https://blog.51cto.com/12445535/2374060