`
kirayuan
  • 浏览: 38545 次
文章分类
社区版块
存档分类
最新评论

hbase集群表在线调整(TTL/compression)

 
阅读更多


今天发现hbase集群的hdfs使用量已经接近80%,检查发现一个表数据量特别巨大,该表会记录用户每天的一次活动属性,按照4亿用户*197天,有800亿条的数据存放在表中——4TB,对于一个表来说过于大了。有两个问题:1、未开启压缩;2、没设置TTL

经过和业务方讨论,只保留最近93天(3个月)的数据,然后开启LZO压缩。

理论上所有的表都应该开启压缩,但是早期使用时没对业务方进行限制,导致现在有些表没开启压缩,而数据量又特别大,所以考虑在线开启压缩和TTL。

那么就需要考虑几点问题:

1、在线修改表属性是否稳定,0.92版本引入后作者也不保证100%成功,慎用

2、修改后是否生效,在哪一步生效

3、能否手动使其生效

考虑hbase写模型,压缩发生在HFile文件需要写HDFS的过程,这个过程有3种,第一:flush、第二:split、第三:compact。而对于已经存在的数据,应该只能在compact阶段进行。compact的原理是读region中已有的HFile,然后写新HFile,理论上应该能保证新HFile写的时候是压缩的。

查看代码:compact过程分为普通compact和majorcompact,普通compact就是N个文件合一个,N可以设置;majorcompact就是region下所有的文件合1个。先读取原有文件,然后写新HFile:

对旧文件的scan:

scanner = new StoreScanner(this, scan, scanners,majorCompaction ? ScanType.MAJOR_COMPACT : ScanType.MINOR_COMPACT,smallestReadPoint, earliestPutTs);
这个scanner会把表的ttl参数传递进去,所以会根据TTL来过滤不要的数据

writer = createWriterInTmp(maxKeyCount, this.compactionCompression,true),写入的时候传入了压缩参数,ok。就是说在compact的时候TTL和Compression都能生效。

稳定性需要实际测试,在测试集群进行测试。

第三个问题,手动生效。compact有几个触发方式,1、代码HBasdAdmin.compact,2、hbase页面中点击compact,3、hbase shell中调用compact命令。经测试1不生效,报connection reset by peer错误;2方法集群无反应;3方法中compact集群无反应,major_compact后开始compact过程。

由于表中region开启了每天的compact,所以一个region最多2个文件,无法达到min_compact的最小size,系统就忽略了compact请求。这点和split不太一样,一旦发出split命令会强制split一个region而不做检查。而major_compact是无视该限制,将region中所有文件合成一个。

最后,再评估一下操作对线上集群的影响:

1、修改表参数,只是对表的2个参数进行了修改,不对实际数据产生影响

2、compact过程是hbase自身的过程,将压缩和TTL放到compact过程中进行,不影响hbase使用,对读写都不影响。

分享到:
评论

相关推荐

    HBASE集群搭建

    注意:要把hadoop的hdfs-site.xml和core-site.xml 放到hbase/conf下 3.1修改hbase-env.sh export JAVA_HOME=/usr/local/jdk1.6.0_45 //告诉hbase使用外部的zk export HBASE_MANAGES_ZK=false vim hbase-...

    HBase的图形化管理工具/Hbase的GUI工具

    由于网上下的不支持最新的hadoop,hbase 版本自己稍微修改了下,支持最新版本HBase的图形化管理工具,目前修改改为hadoop-2.7.1版本,hbase-1.1.2版本,依赖可以自己切换,源代码已经包括再里边了,如想修改直接修改...

    HBase集群搭建

    HBase集群搭建

    安装HBase,并启动运行

    传HBase安装包 将准备好的HBase安装包上传到hadoop0结点的/opt/modules/softwares路径下 二.解压HBase安装包 tar -zxvf hbase-1.2.6-bin.tar.gz 三.配置HBase环境变量 vi /etc/profile文件末追加HBase环境变量信息...

    搭建hbase集群

    搭建hbase集群的详细操作;搭建hbase集群的详细操作;

    监控HBase集群

    关于HBase集群监控在java代码中的实现操作,供大家参考

    hbase集群的安装

    hbase需要搭建集群,这里详细的介绍了集群的安装方式以及配置文件的一些修改

    zookeeper+hbase集群搭建

    zookeeper+hbase集群搭建+搭建过程报错解决+原理,通俗易懂,详细配置注解!!!

    hbase-0.98.1源码包

    hbase-0.98.1-src.tar.gz hbase 0.98源码包

    mongodb集群-hbase集群安装

    2. JDK安装部署 3. Zookeeper安装部署 4. Nginx安装部署 5. Hadoop安装部署 6. HBase安装部署 7. MongoDB数据库安装部署; 8. ElasticSearch集群安装部署; 9. 应用服务器的安装及部署

    Java SpringBoot 连接 Hbase Demo

    Java SpringBoot 连接 Hbase Demo 创建表 插入数据 列族 列 查询:全表、数据过滤 删除数据 删除表 Hbase 集群搭建:https://blog.csdn.net/weixin_42176639/article/details/131796472

    支持最新版本HBase的图形化管理工具/Hbase的GUI工具

    支持最新版本HBase的图形化管理工具,如果再有新版本不支持了的话,请给我留言,我会进行更新。本次版本更新时间为2017-04-06

    CYGWIN下搭建HBASE集群

    一步一步教你在WINDOW CYGWIN下完成HBASE集群环境搭建。

    hbase集群部署

    hbase集群部署文档,附带简单基本命令、!!!!!!!

    HBase2集群配置.pdf

    HBase2集群配置.pdf HBase2集群配置.pdf HBase2集群配置.pdf HBase2集群配置.pdf

    HBase集群环境搭建

    HBase集群环境搭建

    centos7 安装 hbase单机版

    wget http://mirror.bit.edu.cn/apache/hbase/stable/hbase-2.2.3-bin.tar.gz 解压压缩包 tar -zxvf hbase-2.2.3-bin.tar.gz 修改/opt/hbase-2.2.3/conf/hbse-env.sh文件 第一步 设置javahome export JAVA_HOME=/...

    hbase安装,节点添加,移除,常见问题解决

    hadoop-2.52-hbase-0.14-hadoop2 ha高可用安装,hbase动态添加删除节点,hbase集群正常状态及启动,hbase 问题汇总

    Hadoop_hbase集群搭建.docx

    新手Hadoop_hbase集群搭建,3台服务器节点Centos7,Hadoop2.7.4,HBase1.3.1,jdk8,zookpeer3.4.10 安装包也将上传,亲手搭建编写文档

Global site tag (gtag.js) - Google Analytics