hbase为什么压缩文件:
- 1.节省HDFS的存储空间,缓解存储压力
- 2.减少网络传输的数据,减轻网络传输负载
HBase配置压缩前hadoop需要支持压缩,关于hadoop的压缩可以参考:第五记·Hadoop SSH免秘钥配置以及本地native配置
hbase什么时候需要压缩:
HBase压缩的三个阶段:
- 1.在数据进入HDFS之前进行压缩
- 2.在MapRecduce的shuffle过程中:Map完成 Reduce开始阶段 数据在节点之间传输的时候进行压缩
- 3.数据处理完成存到HDFS之上的时候进行压缩
1、查看Hadoop是否支持压缩:
$ bin/hadoop checknative
结果
2、检查当前HBase是否支持压缩:
$ bin/hbase org.apache.hadoop.util.NativeLibraryChecker
** 3、安装snappy:**
1.首先解压 hadoop-snappy-0.0.1-SNAPSHOT.tar.gz
$ tar -zxf /opt/software/hadoop-snappy-0.0.1-SNAPSHOT.tar.gz ./ #我这解压到hadoop下
2.声明配置窗口环境变量
export HBASE_HOME=/opt/modules/apache/hbase-1.2.1
export HADOOP_SNAPPY_HOME=/opt/modules/apache/hadoop-2.7.3/hadoop-snappy-0.0.1-SNAPSHOT
export HADOOP_HOME=/opt/modules/apache/hadoop-2.7.3
3.将snappy里面的jar拷贝到hbase下面的lib里
$ cp /opt/modules/apache/hadoop-2.7.3/hadoop-snappy-0.0.1-SNAPSHOT/lib/hadoop-snappy-0.0.1-SNAPSHOT.jar lib/
4.在hbase的lib目录下创建native文件夹
$ mkdir lib/native
5.设置软连接
ln -s $HADOOP_HOME/lib/native $HBASE_HOME/lib/native/Linux-amd64-64
6.再次查看是否支持压缩
7.查看表支持那种格式的压缩
8.测试压缩文件
$ bin/hbase org.apache.hadoop.hbase.util.CompressionTest hdfs://hadoop01.com:8020/test.txt snappy
9.创建两张表一张支持压缩 一张不支持
hbase(main):004:0> create 'hbase01:t2',{NAME=>'f1'}
hbase(main):005:0> create 'hbase01:t3',{NAME=>'f1',COMPRESSION => 'snappy'}
//导入数据 更改表的信息
disable 'test' #禁用
alter 'test', NAME => 'f', COMPRESSION => 'snappy' #针对列簇修改COMPRESSION
enable 'test' #启用
major_compact 'test' #合并