分享

Hbase数据膨胀率



各位,问下,hbase数据膨胀率问题,
1003.5M为snappy压缩后的数据量大小
8GB为原数据没有压缩的数据量大小
1GB为LZO压缩后的数据量大小想问下,为什么压缩后hbase数据膨胀率会这么大??????
都达到8倍左右了,这边客户采用bulkload入库数据


cfb3835b5370eae124aa0410ccbaba8.jpg

已有(1)人评论

跳转到指定楼层
s060403072 发表于 2019-9-1 19:27:47
这个就需要了解下snappy原理


压缩过程
变量声明
const char * input; 输入的待压缩的二进制串
unsigned int input_size; 输入的二进制串的字节数
char * output; 压缩后的数据存放位置
unsigned short table[]; 存放input_cur之前的每个字节开始的uint32的偏移,其下标与前边uint32的hash值对应。使用之前必须全部清0.
偏移:匹配开始位置距离串首的长度


第一步:将输入串的大小input_size存储在输出串output的前1-5个字节,将输入的串分割成32k大小的串,循环取出各块进行压缩


第二步:将输出位置emit_next设置为串首,即exmit_next = input,串比较位置ip_next设置为当前位置


第三步:拿到ip_next开始的4个字节转换成uint32然后hash
第四步:将emit_next加上hash值对应table的下标中的值赋给指针candidate
第五步:将当前位置的偏移赋给table[hash]
第六步:比较candidate处开始的四个字节转换成uint32与当前位置的uint32是否相等,若相等,执行第七步,否者ip_next自增1,执行第三步


第七步:将emit_next和ip_next之间串的长度和内容存储到output中


第八步:查找当前位置开始的串与candidate开始的串的最大匹配长度matched
第九步:存储匹配信息,包括匹配长度和偏移
第十步:candidate前移mathed长度
第十一步:查看candidate处是否匹配,若匹配,转到第八步;否则emit_next = candidate,ip_next = candidate,执行第十二步


第十二步:检查是否到了串尾,若是则退出,否则转到第三步
更多参考

snappy压缩过程详解.zip (69.63 KB, 下载次数: 1)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条