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'
操作是对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/




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值