大数据的储存:百度HDFS集群的数据压缩

来源:it168  
2012/4/16 11:35:24
提到异步压缩时,孙桂林表示,一个集群能从未压缩的状态变成压缩状态最多花费十天,如果压缩的数据很繁琐,我们可以通过处理器来减轻CPU的负载。

本文关键字: 存储 大数据 百度

2012年4月13日,由IT168(ITPUB、IXPUB、ChinaUnix)主办的2012中国数据库技术大会(DTCC)在北京隆重召开。大会第三天,百度基础架构部高级工程师孙桂林发表了主题为“百度HDFS集群的数据压缩”的演讲。

 

 

当前,数字信息急剧膨胀。根据IDC的研究结果,2011年创造的信息数量达到1800EB,每年产生的数字信息量还在以60%的速度高速增长,到2020年,全球每年产生的数字信息将达到35ZB。面对海量数据处理的需求,“大数据”这一新的概念应运而生。关于大数据的定义,目前还没有标准的说法。

 

Hadoop Distributed File System,简称HDFS,是一个分布式文件系统。HDFS有着高容错性(fault-tolerent)的特点,并且设计用来部署在低廉的(low-cost)硬件上。而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求(requirements)这样可以实现流的形式访问(streaming access)文件系统中的数据。HDFS开始是为开源的apache项目nutch的基础结构而创建,HDFS是hadoop项目的一部分,而hadoop又是lucene的一部分。

 

HDFS设计的针对对象主要适合流式访问的超大文件、在使用便宜的硬件搭建的集群上运行。HDFS中Block的大小默认是64M,小于块大小的的文件并不占据整个块的全部空间(一个块可能存有多个文件)。

 

在谈到为什么使用百度HDFS集群的数据压缩时,孙桂林表示,在存储上带来了灵活的可扩展性、高可用性、充分提高了存储空间利用率。

 

使用Blocks的好处:

 

1) 可以存储大文件,一个文件的大小可以大于任何一个单块硬盘的容量

 

2) 把存储单元抽象成块而不是文件,简化了存储子系统:简化了数据管理、取消元数据关注

 

3) 能很好适应数据复制,数据复制保证系统的容错和可用性。

 

HDFS提供了两种namenode的容错机制:

 

1) 备份存储持久化状态的文件系统元数据的文件

 

2) 提供secondary namenode。Secondary的主要角色是合并namespace image和edit log,防止edit log过大。但是secondary namenode的数据较master namenode的数据有所延迟,所有数据恢复以后肯定会有数据丢失。

 

一般来讲,冷数据和老数据经常会被压缩,块压缩相对于文件压缩的优势在于三方面。第一,透明性,客户端不需要知道压缩的存在,也不需要知道升级。第二,灵活性,对实际压缩的算法没有限制。第三,本地性,不需要在跨数据节点的压缩操作。

 

百度HDFS集群的数据压缩

 

提到异步压缩时,孙桂林表示,一个集群能从未压缩的状态变成压缩状态最多花费十天,如果压缩的数据很繁琐,我们可以通过处理器来减轻CPU的负载。

 

 

存储压缩的机制

 

DataNode数据已经压缩了,Client可能不知道,DataNode 在响应Client的时候回将数据解压。

 

Client 和DataNode之间可以通过压缩的机制。整个通信协议需要一些扩展,需要告诉写方,我们所需要压缩的文件格式以及什么样的编码。在写的操作上,存储编码和传输编码不一样,我们可以选择是否压缩储存和传输编码。在读的操作上,支持一些协议来进行转换。

为了节省带宽,我们尽量避免DataNode 和DataNode之间重复压缩的问题。在Append之前我们需要解压最后的块,还是解压最后一兆数据。一旦文件被Append之后,表示这个文件的最后一个块不被压缩。在压缩的时候,首先我们需要选择压缩速率,相对而言解压的速度更为关键。我们的目标是要实现节省存储空间、避免压缩影响计算作业,实时压缩透明。

 

如何处理小文件

 

1、 把小文件变成大文件(归档操作)

 

2、 把相同目录下的小文件合成一个大文件。数据块的大小可以达到一个数量级,可以做压缩处理。

 

不同的集群,压缩比部太一样,压缩比介于10%到50%之间,大部分的集群我们都可以获取50%以上的空间收益。

 

未来,我们主推的是后台异步压缩,等待CPU空闲的时候,我们才会开始压缩。压缩过程和压缩编码完全透明,我们可以采用分级压缩方法。对于冷数据,我们可以使用一些极致的压缩算法,尽量来节省空间。通过一些归档操作,我们可以节省大量的磁盘空间。

 

很多时候,我们A模块的输出数据刚好是B模块的输入,我们可以提供一个块共享的Quota Calculating ,我们可以通过块共享的机制使用快速拷贝。

 

一个文件如果存在的时候,对于一些重复的块文件该怎么处理,这将是我们未来的发展方向。

 

 

责编:赵龙
vsharing微信扫一扫实时了解行业动态
portalart微信扫一扫分享本文给好友

著作权声明:畅享网文章著作权分属畅享网、网友和合作伙伴,部分非原创文章作者信息可能有所缺失,如需补充或修改请与我们联系,工作人员会在1个工作日内配合处理。
最新专题
流动存储 为大数据而生

伴随信息技术的突飞猛进,更大量级的非结构化数据与结构化数据构成的大数据成为企业级存储所面临的最大挑战:一方..

磁盘阵列及虚拟化存储

利用数组方式来作磁盘组,配合数据分散排列的设计,提升数据的安全性。虚拟化存储,对存储硬件资源进行抽象化表现。

    畅享
    首页
    返回
    顶部
    ×
      信息化规划
      IT总包
      供应商选型
      IT监理
      开发维护外包
      评估维权
    客服电话
    400-698-9918