Hbase调优,
数据块大小的配置
随机查询:数据块越小,索引越大,占用内存也越大,加载进内存的数据小,查找性能更好
顺序查询:更好的顺序扫描,需要更大的数据块
> create "stu",{NAME => "cf",BLOCKSIZE =>"65536"}
数据块缓存的配置
如果经常顺序访问或很少被访问,可以关闭列族的缓存,列族缓存默认打开
> create "stu",{NAME => "cf",BLOCKCACHE =>"false"}
激进缓存的配置
可以选择一个列族赋予更高的优先级缓存
> create "stu",{NAME => "cf",IN_MEMORY =>"true"}
布隆过滤器的配置
减少硬盘读取数据带来的开销,对储存的数据块做反向测试,占用额外的空间
> create "stu",{NAME => "cf",BLOOMFILTER =>"ROWCOL"}
生存时间配置(TTL)
超过这个时间设置的就会在下一次大合并中被删除
> create "stu",{NAME => "cf",TTL =>"18000"}
压缩
压缩可以节省空间,读写数据会增加CPU的使用率 LZO,SNAPPY,GZIP
> create "stu",{NAME => "cf",COMPRESSION =>"GZIP"}
单元时间版本
默认维护一个时间版本
> create "stu",{NAME =>"cf",VERSIONS =>5}
设置hdfs中data的存储路径为多路径
修改hdfs-site.xml中的dfs.data.dir
设置java垃圾回收时的heap
修改hbase-env.sh中的HBASE_HEAPSIZE=8000
修改RegionServer与Zookeeper间的连接超时时间
zookeeper.session.timeout=180000
Hbase客户端优化
AutoFlush
将HTable的setAutoFlush设为false(默认是true),可以支持客户端批量更新。即当Put填满客户端flush缓存时,才发送到服务端。
Scan Caching
scanner一次缓存多少数据来scan(从服务端一次抓多少数据回来scan)。默认值是 1,一次只取一条。
Scan Attribute Selection
scan时建议指定需要的Column Family,减少通信量,否则scan操作默认会返回整个row的所有数据(所有Coulmn Family)。
机架感知配置
修改对应的topology.data的路径
增加执行权限
配置core-site.xml
toploygy.script.file.name=/usr/local/…/toploygy.sh
同步到集群其它节点
增加区域服务器的处理线程数
本质增大RPC数量hbase-site.xml
<property>
<name>hbase.regionserver.handler.count</name>
<value>40</value>
</property>更多精彩原创文章,详见红象云腾社区