数据块大小的配置:
数据块越小,索引越大,占用内存也越大,加载进内存的数据小,查找性能更好
数据块缓存的配置:
如果经常顺序访问或很少被访问,可以关闭列族的缓存,列族缓存默认打开
激进缓存的配置:
可以选择一个列族赋予更高的优先级缓存
布隆过滤器的配置:
减少硬盘读取数据带来的开销,对储存的数据块做反向测试,占用额外的空间
生存时间配置:(TTL)
超过这个时间设置的就会在下一次大合并中被删除
压缩:
压缩可以节省空间,读写数据会增加CPU的使用率 LZO,SNAPPY,GZIP
备注:如果发现regionserver的内存使用过大,造成该机的regionserver很多线程block,可以执行一下flush操作,这个操作会造成hbase的storefile数量剧增,应尽量避免这个操
作,还有一种情况,在hbase进行迁移的时候,如果选择拷贝文件方式,可以先停写入,然后flush所有表,拷贝文件。
关闭自动合并:手动合并
调整区域合并:分割过多的区域也会影响性能
区域合并
指定表主合并
对表的指定区域进行分割
查看集群负载均衡
手动分割日志
数据块越小,索引越大,占用内存也越大,加载进内存的数据小,查找性能更好
更好的顺序扫描,需要更大的数据块
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}
将区域的数据写入磁盘
flush ' waln_log'
flush'waln_log,1429239562047.14d5384d50968c26ec54d7d6e3ac10fc. '
查看Hlog:
hbase hlog /hbase/WALs/crxy188,60020,1429957577908/crxy188%2C60020%2C1429957577908.1429957583305
查看HFile:
hbase hfile -s -f /hbase/data/default/student/a080a634060242b87f263d1ead83172f/cf/a88b726e0cb04bc695c9d306e7827d59
关闭自动合并:手动合并
hbase-site.xml
<property>
<name>hbase.hregion.majorcompaction</name>
<value>0</value>
</property>
调整区域合并:分割过多的区域也会影响性能
<property>
<name>hbase.hregion.max.filesize</name>
<value>10734182400</value>
</property>
区域合并
compact ' waln_log'
操作是对Region下的HStore下的所有StoreFile执行合并操作,最终的结果是整理合并出一个文件。major_compact 'waln_log',1429239562047.14d5384d50968c26ec54d7d6e3ac10fc.
注意:选择一个晚上用户少的时间窗口手工major_compact,如果hbase更新不是太频繁,可以一个星期对所有表做一次major_compact,这个可以在做完一次major_compact后,观看所有的storefile数量,如果storefile数量增加到major_compact后的storefile的近二倍时,可以对所有表做一次major_compact,时间比较长,操作尽量避免高锋期
操作只用来做部分文件的合并操作以及包括minVersion=0并且设置ttl的过期版本清理,不做任何删除数据、多版本数据的清理工作。
TMP_FILE=tmp_tables
TABLES_FILE=tables.txt
echo "list" | hbase shell > tmp_tables
sleep 2
sed '1,6d' $TMP_FILE | tac | sed '1,2d' | tac > $TABLES_FILE
sleep 2
for table in $(cat $TABLES_FILE); do
echo "major_compact '$table'" | hbase shell
sleep 10
done
对表的指定区域进行分割
split 'waln_log,,1429239562047.14d5384d50968c26ec54d7d6e3ac10fc. '
启用负载均衡
balance_switch true
查看集群负载均衡
balancer
备注:region在regionserver上的分布不均,这个时候需要手工的开启balance
create 'tb_splits', {NAME => 'cf', VERSIONS=> 3},{SPLITS => ['a','b','c']}
hBaseAdmin.createTable(tableDescriptor, Bytes.toBytes(0L), Bytes.toBytes(100L), 10);
手动分割日志
hbase org.apache.hadoop.hbase.regionserver.wal.HLog --split hdfs:crxy188:8020/hbase/.log/