今天发现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使用,对读写都不影响。
分享到:
相关推荐
注意:要把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-...
由于网上下的不支持最新的hadoop,hbase 版本自己稍微修改了下,支持最新版本HBase的图形化管理工具,目前修改改为hadoop-2.7.1版本,hbase-1.1.2版本,依赖可以自己切换,源代码已经包括再里边了,如想修改直接修改...
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集群监控在java代码中的实现操作,供大家参考
hbase需要搭建集群,这里详细的介绍了集群的安装方式以及配置文件的一些修改
zookeeper+hbase集群搭建+搭建过程报错解决+原理,通俗易懂,详细配置注解!!!
hbase-0.98.1-src.tar.gz hbase 0.98源码包
2. JDK安装部署 3. Zookeeper安装部署 4. Nginx安装部署 5. Hadoop安装部署 6. HBase安装部署 7. MongoDB数据库安装部署; 8. ElasticSearch集群安装部署; 9. 应用服务器的安装及部署
Java SpringBoot 连接 Hbase Demo 创建表 插入数据 列族 列 查询:全表、数据过滤 删除数据 删除表 Hbase 集群搭建:https://blog.csdn.net/weixin_42176639/article/details/131796472
支持最新版本HBase的图形化管理工具,如果再有新版本不支持了的话,请给我留言,我会进行更新。本次版本更新时间为2017-04-06
一步一步教你在WINDOW CYGWIN下完成HBASE集群环境搭建。
hbase集群部署文档,附带简单基本命令、!!!!!!!
HBase2集群配置.pdf HBase2集群配置.pdf HBase2集群配置.pdf HBase2集群配置.pdf
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=/...
hadoop-2.52-hbase-0.14-hadoop2 ha高可用安装,hbase动态添加删除节点,hbase集群正常状态及启动,hbase 问题汇总
新手Hadoop_hbase集群搭建,3台服务器节点Centos7,Hadoop2.7.4,HBase1.3.1,jdk8,zookpeer3.4.10 安装包也将上传,亲手搭建编写文档