Hbase压缩之ZSTD

ZSTD介绍

zstd是Facebook在2016年开源的新无损压缩算法,优点是压缩率和压缩/解压缩性能都很突出。
zstd 是一种快速压缩算法,提供了很高的压缩比。它还为小数据提供了一种特殊的模式,称为字典压缩。
zstd还有一个特别的功能,支持以训练方式生成字典文件,相比传统压缩方式能大大的提高小数据包的压缩率。
在过去的两年里,Linux内核、HTTP协议、以及一系列的大数据工具(包括Hadoop 3.0.0,HBase 2.0.0,Spark 2.3.0,Kafka 2.1.0)等都已经加入了对zstd的支持。
可以预见,zstd将是未来几年里会被广泛关注和应用的压缩算法

下面是官网给出的性能对比图
在这里插入图片描述

另外。提供–fast参数 可以提供更快的压缩和解压缩速度,以换取压缩比的一些损失

官网地址


ZSTD安装

方式1

在Hadoop3中增加了Zstd压缩本地库,需要依赖facebook的Zstd库。编译Hadoop时开启Zstd本地库编译的步骤如下:

  1. 下载编译并安装Zstd依赖库
wget https://github.com/facebook/zstd/releases/download/v1.4.4/zstd-1.4.4.tar.gz

tar -xzf zstd-1.4.4.tar.gz

cd zstd-1.4.4

make && make install
  1. 编译Hadoop3时默认是不开启的,需要在maven参数中设置相关开启参数。
mvn clean package -Dzstd.lib=/usr/local/lib   -Dbundle.zstd=true

方式2

  1. 下载rpm包
https://download-ib01.fedoraproject.org/pub/epel/7/x86_64/Packages/l/
  1. install
sudo rpm -i libzstd-1.5.2-1.el7.x86_64.rpm

集成到hadoop、hbase

  1. 查看hadoop支持压缩算法
hadoop checknative

在这里插入图片描述

  1. 查看hbase支持压缩算法
cd $HBASE_HOME/bin
hbase --config ~/conf_hbase org.apache.hadoop.util.NativeLibraryChecker

在这里插入图片描述


测试zstd

更改表压缩方式

0.
disable 'TEST:FAST_DIFF_ZSTD'

1.
alter 'TEST:FAST_DIFF_ZSTD', NAME => 'i', COMPRESSION => 'ZSTD'

2.
Updating all regions with the new schema...
All regions updated.
Done.
Took 1.1960 seconds

3. desc 'TEST:FAST_DIFF_ZSTD'
DATA_BLOCK_ENCODING => 'FAST_DIFF', COMPRESSION => 'SNAPPY

4.enable 'TEST:FAST_DIFF_ZSTD'

5. major_compact 'TEST:FAST_DIFF_ZSTD'

读写测试

  1. 写测试:
    在这里插入图片描述
  2. 读测试: 在这里插入图片描述

各个压缩方式对比

在这里插入图片描述

问题

  1. 可能安装上也不支持
ERROR: org.apache.hadoop.hbase.DoNotRetryIOException: Compression algorithm 'zstd' previously failed test. Set hbase.table.sanity.checks to false at conf or table descriptor if you want to bypass sanity checks
	at org.apache.hadoop.hbase.util.TableDescriptorChecker.warnOrThrowExceptionForFailure(TableDescriptorChecker.java:307)
	at org.apache.hadoop.hbase.util.TableDescriptorChecker.sanityCheck(TableDescriptorChecker.java:121)
	at org.apache.hadoop.hbase.master.HMaster$12.run(HMaster.java:2502)
	at org.apache.hadoop.hbase.master.procedure.MasterProcedureUtil.submitProcedure(MasterProcedureUtil.java:134)
	at org.apache.hadoop.hbase.master.HMaster.modifyTable(HMaster.java:2496)
	at org.apache.hadoop.hbase.master.HMaster.modifyTable(HMaster.java:2532)
	at org.apache.hadoop.hbase.master.MasterRpcServices.modifyTable(MasterRpcServices.java:1414)
	at org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos$MasterService$2.callBlockingMethod(MasterProtos.java)
	at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:393)
	at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:133)
	at org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run(RpcExecutor.java:338)
	at org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run(RpcExecutor.java:318)
Caused by: org.apache.hadoop.hbase.DoNotRetryIOException: Compression algorithm 'zstd' previously failed test.
	at org.apache.hadoop.hbase.util.CompressionTest.testCompression(CompressionTest.java:92)
	at org.apache.hadoop.hbase.util.TableDescriptorChecker.checkCompression(TableDescriptorChecker.java:285)
	at org.apache.hadoop.hbase.util.TableDescriptorChecker.sanityCheck(TableDescriptorChecker.java:119)
	... 10 more

For usage try 'help "alter"'
  1. 解决方案
配置hbase-site.xml参数:

<property>  
    <name>hbase.table.sanity.checks</name>  
    <value>false</value>  
</property>  
  1. 重启hbase
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值