hbase 列族优化 ,shell 管理集群

数据块大小的配置:
数据块越小,索引越大,占用内存也越大,加载进内存的数据小,查找性能更好

更好的顺序扫描,需要更大的数据块

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. '
备注:如果发现 regionserver 的内存使用过大,造成该机的 regionserver 很多线程 block ,可以执行一下 flush 操作,这个操作会造成 hbase storefile 数量剧增,应尽量避免这个操 作,还有一种情况,在 hbase 进行迁移的时候,如果选择拷贝文件方式,可以先停写入,然后 flush 所有表,拷贝文件。


查看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'

*

指定表主合并

major_compact  'waln_log',1429239562047.14d5384d50968c26ec54d7d6e3ac10fc.

注意:选择一个晚上用户少的时间窗口手工 major_compact ,如果 hbase 更新不是太频繁,可以一个星期对所有表做一次 major_compact ,这个可以在做完一次 major_compact 后,观看所有的 storefile 数量,如果 storefile 数量增加到 major_compact 后的 storefile 的近二倍时,可以对所有表做一次 major_compact ,时间比较长,操作尽量避免高锋期


对表的指定区域进行分割

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/




你可能感兴趣的:(优化,hbase)