云存储的高吞吐量数据压缩
1. 与BlobSeer集成
为了将设计原则应用于BlobSeer,在客户端网络层之上引入了一个额外的压缩层,该网络层负责与数据提供者进行远程通信。压缩层的主要职责是根据应用程序执行的操作,透明地过滤数据块。具体操作步骤如下:
- 写入或追加操作 :
1. 将数据分割成块。
2. 对每个块随机抽取小样本进行压缩,以判断该块是否可压缩。
3. 若压缩比高于预定义阈值,则对整个块进行压缩,并将结果传递给网络层发送到相应提供者;若低于阈值,则直接将块传递给网络层。
- 读取操作 :
1. 从网络层成功接收请求数据集中的一个块后,压缩层首先检查该块写入或追加时是否被压缩。
2. 若已压缩,则先进行解压缩。
3. 将解压缩后的块放置在应用程序提供的缓冲区中相应的偏移位置,当所有组成请求数据集的块都成功处理后,整个读取操作完成。
压缩层以高度并行的方式处理数据块,充分利用多核架构,实现I/O与压缩、解压缩的高度重叠。同时,为了最小化内存占用,对于不可压缩的块采用零拷贝技术,避免在主内存中进行不必要的大块数据复制,既为应用程序留出更多内存,又加快了处理速度。该压缩层具有高度可配置性,可轻松插入任何压缩算法,本文采用了两种流行的算法:Lempel - Ziv - Oberhumer(LZO)和BZIP2。
2. 实验评估
为了评估该方法的优势,进行了一系列大规模实验,模拟典型分布式数据密集型应用的行为。数据密集型应用通常在处理大规模数据集的同时持续获取大量数据,因此进行了两类实验:并发追加数据
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



